centos 6.8 安裝LNMP環境(linux+nginx+mysql+php)

Nginx 特性

Nginx 性能穩定、功能豐富、運維簡單、處理靜態文件速度快且消耗系統資源極少。
1、相比 Apache,用 Nginx 作爲 Web 服務器:使用資源更少,支持更多併發連接,效率更高。
2、作爲負載均衡服務器:Nginx 既可在內部直接支持 Rails 和 PHP,也可支持作爲 HTTP 代理服務器對外進行服務。Nginx 用 C 編寫而成, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
3、作爲郵件代理服務器:Nginx 同時也是一款非常優秀的郵件代理服務器(最早開發這個產品的目的之一,是作爲郵件代理服務器)。

4、反向代理可以根據url將請求轉向於不同用途的集羣,比如圖片請求,轉向圖片服務器集羣;視頻請求,轉身視頻服務器集羣。

nginx是一款輕量級的web服務器/反向代理服務器/電子郵件代理服務器,安裝非常簡單,配置文件也很簡潔(還支持 perl 語法)。Nginx 支持平滑加載新配置,還能夠在不間斷服務的情況下進行軟件版本升級。


Apache 特性
1、Apache 是 LAMP 架構最核心的 Web Server,開源、穩定、模塊豐富是 Apache 的優勢。但 Apache 的缺點是有些臃腫,內存和 CPU 開銷大,性能上有損耗,不如一些輕量級的 Web 服務器(譬如:Nginx、Tengine等)高效,輕量級的 Web 服務器對於靜態文件的響應能力來說遠高於 Apache 服務器。

2、Apache 做爲 Web Server 是負載 PHP 的最佳選擇,如果流量很大的話,可以採用 Nginx 來負載非 PHP 的 Web 請求。Nginx 是一個高性能的 HTTP 和反向代理服務器,Nginx 以其穩定、豐富功能集、示例配置文件和低系統資源的消耗而聞名。Nginx 現能支持 PHP 和 FastCGI,也支持負載均衡和容錯,可和 Apache 配合使用,是輕量級的 HTTP 服務器的首選。

3、Web 服務器緩存也有多種方案,Apache 提供了自己的緩存模塊,也可以使用外加的 Squid 模塊進行緩存,這兩種方式均可有效提高 Apache 的訪問響應能力。Squid Cache 是一個 Web 緩存服務器,支持高效緩存,可作爲網頁服務器的前置 cache 服務器緩存相關請求以提高 Web 服務器速度。把 Squid 放在 Apache 的前端來緩存 Web 服務器生成動態內容,而 Web 應用程序只需要適當地設置頁面實效時間即可。如訪問量巨大,則可考慮使用 memcache 作爲分佈式緩存。

4、PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一個自由開放源碼的 PHP 加速器。它會優化動態內容緩存,提高 PHP 腳本緩存性能,使 PHP 腳本在編譯狀態下,對服務器的開銷幾乎完全消除。它還可對腳本起優化作用,以加快其執行效率。 使 PHP 程序代碼執效率可提高 1-10 倍。

##以上資料來源:https://www.zhihu.com/question/19697826



wKiom1j0ybKxq_Z1AACRfUwYlUg502.png-wh_50



nginx優點:

  • 輕量級服務器,相比較apache佔用的資源更加少。

  • 高併發。

  • 配置文件的語法等簡單易懂

  • 社區活躍。

  • 支持epoll模型。使得nginx可以支持高併發。

  • 利用nginx可以對ip限速,可以限制連接數


環境:

centos 6.8 2.6.32-642.15.1.el6.x86_64


軟件:

libiconv-1.14.tar.gz

libmcrypt-2.5.8.tar.gz

mcrypt-2.6.8.tar.gz

mhash-0.9.9.9.tar.gz

mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz(二進制版)

php-5.6.30.tar.gz

nginx-1.12.0.tar.gz


提示:在進入正題之前一定要先去了解下nginx的工作原理和常用場景。          

不要死記,多操作,多理解,自然就懂了。

看別人操作,不如自己操作。

要能清晰的瞭解同類產品的區別。


大綱:

  1. 安裝nginx

  2. 啓動nginx

  3. 配置虛擬主機

  4. 安裝mysql二進制版

  5. 安裝php

  6. 測試lnmp環境


nginx

1、安裝nginx

wget http://nginx.org/download/nginx-1.12.0.tar.gz 

tar zxvf nginx-1.12.0.tar.gz

cd nginx-1.12.0/

yum install gcc gcc-c++ zilb.x86_64 zlib-devel.x86_64  pcre-devel.x86_64 pcre.x86_64 
openssl.x86_64 openssl-devel.x86_64-y

useradd -M -s /sbin/nologin nginx

./configure --help

./configure --prefix=/application/nginx1.12.0 --user=nginx --group=nginx --with-pcre 
--with-http_ssl_module --with-http_stub_status_module

echo $?

make

echo $?

make install

echo $?

ln -s /application/nginx1.12.0/ /application/nginx

cd /application/nginx
nginx目錄結構
conf配置文件
html默認站點
logs

日誌文件

sbin命令



總結:

1 選擇軟件一定不能選擇最新的,否則出問題不容易解決,因爲第一個吃螃蟹。
2 一定要自己創建用戶,否則nginx會給默認用戶。
3 編譯的參數根據自己的實際情況出發。
4 編譯、make、make install要養成echo $?的習慣防止出錯。
5 做一個軟鏈接優化路徑。



2、啓動nginx

/application/nginx/sbin/nginx -t

/application/nginx/sbin/nginx

lsof -i :80

curl localhost

總結:

  • nginx的檢查語法操作是一樣的,只是命令名字換了

  • nginx啓動後面不需要任何參數

  • 本地做個訪問測試如果能成功則說明網站已經在工作了,在如果外網訪問不進來就是其他問題了,比如防火牆iptables、selinux等的問題


3、配置虛擬主機

如果熟悉了Apache的虛擬主機那麼Nginx的虛擬主機也很容易理解,而且配置還比Apache簡單很多。

虛擬主機:

  • 基於域名的虛擬主機

  • 基於IP的虛擬主機

  • 基於端口的虛擬主機


mkdir /application/nginx/conf/extra -p
##把我們的虛擬主機文件放在這個擴展目錄中,可以在管理網站的時候更加方便

vim /application/nginx/conf/nginx.conf
##將主配置文件修改爲以下內容
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include     extra/blog.conf;
    include     extra/easy.conf;
    include     extra/bad.conf;
}


vim /application/nginx/conf/extra/blog.conf
##將虛擬主機blog配置文件配置爲以下內容,不存在則創建
    server {
        listen       80;
        server_name  www.blog.vperson.org.cn;
        location / {
            root   html/blog;
            index  index.html index.htm;
	}
}

vim /application/nginx/conf/extra/easy.conf
##將虛擬主機easy配置爲以下內容,不存在則創建
    server {
        listen       80;
        server_name  www.easy.vperson.org.cn;
        location / {
            root   html/easy;
            index  index.html index.htm;
        }
}

vim /application/nginx/conf/extra/bad.conf
##將虛擬主機bad配置文件修改爲以下內容,不存在則創建
    server {
        listen       80;
        server_name  www.bad.vperson.org.cn;
        location / {
            root   html/bad;
            index  index.html index.htm;
        }
}

cd /application/nginx/html/

for name in blog bad easy;do mkdir $name; echo "$name.vperson.org.cn" > 
$name/index.html;
done
##利用for循環創建目錄,並向index.html中寫入內容

tree ./
    bad
│   └── index.html
├── blog
│   └── index.html
├── easy
│   └── index.html


vim /etc/hosts
127.0.0.1 localhost www.blog.vperson.org.cn www.easy.vperson.org.cn ##修改本地hosts文件,爲了配合我們的基於域名的虛擬主機

ping -c 1  

ping -c 1  

ping -c 1  www.bad.vperson.org.cn 

/application/nginx/sbin/nginx -s reload
##重啓nginx服務器

curl 
blog.vperson.org.cn

curl 
bad.vperson.org.cn

curl 
easy.vperson.org.cn

提示:使用curl訪問域名時返回如上信息即基於域名的虛擬主機搭建成功。


擴展:

* 域名重定向

  • 爲什麼需要域名重定向,第一是爲了防止惡意綁定,最簡單的道理就是,域名是別人買的,別人想把域名指向公網中的任意一臺主機我們也沒有辦法。但是用了域名重定向後,可以在使用惡意域名訪問我們的服務器後,會在地址欄重定向爲我們指定的域名,並訪問指定的站點。(理解一個原理,在一個未知域名訪問我們的主機時其實是以IP的形式訪問,也就是說我們重定向的其實是IP地址)

  • 還有就是多域名指向同意服務器,提高訪問量。

------------------------------------------------------------------
vim /application/nginx/conf/extra/rewrite.conf
##編譯rewirte.conf文件不存在則創建,內容如下
    server {
        listen       80;
        server_name  www.rewrite.vperson.org;
        rewrite ^/(.*) http://www.easy.vperson.org.cn/$1 permanent;
#^/表示
#
#永久有效 
}
----OK------------------------------------------------------------

------------------------------------------------------------------
vim /application/nginx/conf/nginx.conf
##修改nginx的主配置文件,注意include的順序這個很重要否則域名重定向就沒用了
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include     extra/rewrite.conf;
    include     extra/blog.conf;
    include     extra/easy.conf;
    include     extra/bad.conf;
}
----OK------------------------------------------------------------

/application/nginx/sbin/nginx -t

/application/nginx/sbin/nginx -s reload

vim /etc/hosts
127.0.0.1 localhost www.blog.vperson.org.cn www.easy.vperson.org.cn 
  www.rewrite.vperson.org

ping -c 1 

curl -L  www.rewrite.vperson.org

curl -I  www.rewrite.vperson.org
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.0
Date: Sun, 16 Apr 2017 14:19:58 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://www.easy.vperson.org.cn/

隱藏nginx版本號:

vim /application/nginx/conf/nginx.conf
##修改爲以下內容
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
server{
        listen 8080;
        server_name www.vperson.win;
        rewrite ^/(.*) http://www.blog.vperson.org.cn/$1 permanent;
}
    include     extra/easy.conf;
    include     extra/bad.conf;
    include     extra/blog.conf;
        server_tokens off;
}

apache隱藏版本號的方法:

----------------------------

cat /application/apache/conf/extra/httpd-default.conf
.............
ServerTokens Prod
ServerSignature Off
.............

-----------------------


nginx日誌管理

  • 使用mv工具和crontab工具

具體方法如下:

----------------------------------------------------------------------------
vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    include     extra/rewrite.conf;
    include     extra/bad.conf;
    include     extra/blog.conf;
    include     extra/easy.conf;
        server_tokens off;
}

vim extra/blog.conf
    server {
        listen       80;
        server_name  www.blog.vperson.org.cn;
        access_log  logs/blog.access.log  main;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
}
##其他的配置文件也一樣在server標籤裏添加日誌信息
----OK------------------------------------------------------------

#sed -i '/server_name www.bad.vperson.org.cn;/a\\taccess_log  logs\/bad.access.log  
main; ' extra/bad.conf

../sbin/nginx -t

../sbin/nginx -s reload

ll ../logs/
total 220
-rw-r--r-- 1 root root 110155 Apr 17 15:42 access.log
-rw-r--r-- 1 root root      0 Apr 17 15:42 bad.access.log
-rw-r--r-- 1 root root      0 Apr 17 15:42 blog.access.log
-rw-r--r-- 1 root root      0 Apr 17 15:42 easy.access.log
-rw-r--r-- 1 root root  98802 Apr 17 15:43 error.log
-rw-r--r-- 1 root root      6 Apr 16 22:29 nginx.pid
-rw-r--r-- 1 root root      0 Apr 17 15:42 rewrite.access.log
##可見日誌文件已經生成

---------------------------------------------------------------------------------
vim /application/nginx/logs/backlog.sh
##寫一個自動備份的腳本
#!/bin/sh

for name in rewrite bad blog easy;
do
/bin/mv /application/nginx/logs/${name}.access.log /applog/nginx/access/$(date +%F)_${name}.log
if [ $? -eq 0 ]
then
        echo "$(date +%F) ${name}" >> /applog/nginx/access/successfully.txt
else
        echo "$(date +%F) ${name}" >> /applog/nginx/access/error.txt
fi
done

/bin/find /applog/nginx/access/ -mtime +7 -exec rm -rf {} \;

---腳本完成------OK------------------------------------------------------------

chmod +x /application/nginx/logs/backlog.sh

crontab -e
30 1 * * * /application/nginx/logs/backlog.sh
##晚上訪問量少,適合做備份等工作

mkdir -p /applog/nginx/access/

總結:

  • 基於域名的虛擬主機普遍常用到,基於IP和端口的一般在公司內部使用

  • 在修改配置文件之前一定要做好備份,一邊修改和對比

  • 創建擴張目錄,存放虛擬主機的配置,因爲在企業裏由於需要配合大量的業務,所以配置內容也會隨之增加,如果全部都是在nginx.conf裏的話會使得整個文件非常的臃腫。

  • apache的重啓:./bin/apachectl  restart

  • nginx的配置文件每句結尾一定要加上;(分號)

  • windows修改hosts的路徑:win+R--> system32--> drivers --> etc-->hosts。如果記事本不能修改,請先以管理員運行記事本,在把hosts文件拖入。推薦使用Notepad++。

  • Apache服務器在站點目錄下沒有index.html時,可以訪問並查看整個網站的目錄結構,可以通過修改httpd.conf中的“Options Indexes FollowSymLinks”---> "Options -Indexes FollowSymLinks"。nginx安全新則相對高點,如果沒有index.html文件直接報錯一般是403.

  • Apache服務器的默認站點目錄是DocumentRoot。Nginx是root   html。

  • 服務器一定要隱藏版本號,否則容易被***。



++++++++++++++++++++++nginx服務安裝完成++++++++++++++++++++++++


Mysql


4、安裝二進制mysql

mysql分類:

社區版

商業版

集羣

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.32-linux2.6-x86_64.tar.gz 


tar zxvf mysql-5.5.32-linux2.6-x86_64.tar.gz 

cp -avr mysql-5.5.32-linux2.6-x86_64/ /application/

cd /application/

mv mysql-5.5.32-linux2.6-x86_64/ mysql-5.5.32/

ln -s mysql-5.5.32/ mysql

useradd -M -s /sbin/nologin mysql

cd mysql

mkdir /application/mysql/data -p

chown -R mysql:mysql /application/mysql-5.5.32/

-----------------------------------------------------------------
./scripts/mysql_install_db --basedir=/application/mysql/ 
--datadir=/application/mysql/data/ --user=mysql

##初始化數據庫
mysql_install_db根據版本的不同可能存放的路徑也不一樣
--basedir是mysql的安裝路縉
--datadir是數據文件存放路徑
--user是用戶名
成功的標準是echo $?沒有錯誤+兩個OK沒有error
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
##想要開機自動啓動,就把mysql.server放到正確的位置即/etc/init.d/mysqld
/application/mysql//bin/mysqladmin -u root password 'new-password'
/application/mysql//bin/mysqladmin -u root -h vperson password 'new-password'
Alternatively you can run:
/application/mysql//bin/mysql_secure_installation
##設置密碼的方法
You can start the MySQL daemon with:
cd /application/mysql/ ; /application/mysql//bin/mysqld_safe &
##運行數據庫
You can test the MySQL daemon with mysql-test-run.pl
cd /application/mysql//mysql-test ; perl mysql-test-run.pl
##測試數據庫

提示:/etc/init.d/mysqld實質是複製了mysql.server文件,所以一定不要和cd /application/mysql/
 ; /application/mysql//bin/mysqld_safe &方法一起用否則會出錯

---------------------------------------------------------------

\cp support-files/my-medium.cnf /etc/my.cnf

\cp support-files/mysql.server /etc/init.d/mysqld

--------------------------------------
vim /etc/init.d/mysqld
..................
basedir=/application/mysql/
datadir=/application/mysql/data
...................

或者

#sed -i'46s/\(basedir=\)/\1\/application\/mysql/p' /etc/init.d/mysqld
##修改46行爲basedir=/application/mysql,只限定當前環境,其他環境可能有變化

#sed -i'47s/\(datadir=\)/\1\/application\/mysql\/data/p' /etc/init.d/mysqld
##修改datadir爲/application/mysq/data

----OK---------------------------------

chmod +x /etc/init.d/mysqld

/etc/init.d/mysqld start

echo "export PATH=/application/mysql/bin:$PATH" >> /etc/profile

source /etc/profile

----------------------------------------------------
mysql_secure_installation
##以下內容看自己的需求

mysql -uroot -p

mysql>show databases;

mysql> use mysql

mysql> show tables;

mysql> select User,Host from user;

mysql>DELETE FROM user WHERE User='root' and Host='::1';
## 目前是不會用的到的所以刪除,如果有需求就不用刪除

mysql> quit

--OK--------------------------------------------------

總結:

a) 針對自己的硬件平臺選用合適的編譯器來優化編譯後的二進制代碼;
b) 根據不同的軟件平臺環境調整相關的編譯參數;
c) 針對我們特定應用場景選擇需要什麼組件不需要什麼組件;
d) 根據我們的所需要存儲的數據內容選擇只安裝我們需要的字符集;
e) 同一臺主機上面可以安裝多個MySQL;
f) 等等其他一些可以根據特定應用場景所作的各種調整。
在源碼安裝給我們帶來更大靈活性的同時,同樣也給我們帶來了可能引入的隱患:
a) 對編譯參數的不夠了解造成編譯參數使用不當可能使編譯出來的二進制代碼不夠穩定;
b) 對自己的應用環境把握失誤而使用的優化參數可能反而使系統性能更差;
c) 還有一個並不能稱之爲隱患的小問題就是源碼編譯安裝將使安裝部署過程更爲複雜,所花費的
時間更長;


PHP 


需要下載以下的依賴包,並且編譯:

libiconv(libiconv-1.14.tar.gz)

libmcrypt-2.5.8.tar.gz,加密庫

mcrypt-2.6.8.tar.gz

mhash-0.9.9.9.tar.gz


5、安裝PHP

wget  

tar zxvf php-5.6.30.tar.gz

cd php-5.6.30/

yum  install  libxml2-devel.x86_64   libxml2.x86_64 openssl-devel.x86_64  
libcurl-devel.x86_64    libjpeg-turbo.x86_64   libjpeg-turbo-devel.x86_64   
png*   libpng-devel.x86_64 freetype.x86_64  freetype-devel.x86_64 
libxslt-devel.x86_64    libxslt.x86_64  zlib libxml libjpeg freetype libpng gd 
curl libiconv zlib-devel         libxml2-devellibjpeg-devel freetype-devel 
libpng-devel gd-devel curl-devel  -y

編譯安裝libiconv1.14:
==============================================
tar zxvf libiconv-1.14.tar.gz 

cd libiconv-1.14/

./configure --prefix=/usr/local/libiconv

make

make install
===============================================

編譯安裝mhash-0.9.9.9:
=================================================
tar zxvf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/

./configure

make && make install

================================================

編譯安裝libmcrypt
==================================================
tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure

make && make install

cp /usr/local/lib/* /usr/local/lib64/ -av
##只正對64位操作系統,32爲操作系統直接往下走

ln -s /usr/local/lib64/libmcrypt.la/usr/lib64/libmcrypt.la
ln -s/usr/local/lib64/libmcrypt.so /usr/lib64/libmcrypt.so
ln -s/usr/local/lib64/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4
ln -s/usr/local/lib64/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8
ln -s /usr/local/lib64/libmhash.a/usr/lib64/libmhash.a
ln -s/usr/local/lib64/libmhash.la /usr/lib64/libmhash.la
ln -s/usr/local/lib64/libmhash.so /usr/lib64/libmhash.so
ln -s/usr/local/lib64/libmhash.so.2 /usr/lib64/libmhash.so.2
ln -s/usr/local/lib64/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1
ln -s/usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
##提示我搭好的環境中我並沒有在/usr/local/lib64/下找到文件,文件都在/usr/local/lib,
可以把/usr/local/lib/下的文件複製到/usr/local/lib64/下
=================================================

yum install libxslt* -y
##安裝libxslt*

編譯安裝mcrypt-2.6.8:
================================================
tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

./configure  LD_LIBRAPY_PATH=/usr/local/lib
##原因未知,這個我是百度搜出來的

make && make install
================================================

=================================================
vim 1.txt
./configure \
--prefix=/application/php5.6.30 \
--with-mysql=/application/mysql  \
--enable-mysqlnd 	\
--with-pdo-mysql=mysqlnd		\
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp	\
--enable-embedded-mysqli 	\
--with-mysqli	\
--with-pdo-mysql=/application/mysql
		

cat 1.txt | bash

echo $?

make

echo $?

make install

echo $?

ln -s /application/php5.6.30/ /application/php

cp php.ini-production /application/php/lib/php.ini
##提醒:如果是做開發的話就把php.ini-development複製過去

由於nginx調用PHP是通過一個fcgi的程序,所以,這個程序也是有配置文件的。

cd /application/php/etc/

cp php-fpm.conf.default php-fpm.conf

egrep -v "^$|;" php-fpm.conf
------------------------------------------------------------------------
[global]
pid = /app/logs/php-fpm.pid
error_log = /app/logs/php-fpm.log
 log_level = error
 
rlimit_files = 32768
 
events.mechanism = epoll
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
 
pm = dynamic
pm.max_children = 1024
pm.start_servers = 16
pm.min_spare_servers = 5
pm.max_spare_servers = 20
 
pm.max_requests = 2048
 
 
slowlog = /app/logs/$pool.log.slow
 
request_slowlog_timeout = 10
--------------------------------------------------------------------------

../sbin/php-fpm -t
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
錯誤:ERROR: Unable to create or open slowlog(/applog/logs/www.log.slow): No such file or directory (2)
解決:mkdir /applog/logs/ -p
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

../sbin/php-fpm

lsof -i :9000

================================================


我編譯PHP遇到的錯誤:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

錯誤:configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

解決:

ln -s /application/mysql/lib/libmysqlclient.so /usr/lib64/

ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

問題:checking whether to enable embeddedMySQLi support... yes

checking for mysql_set_server_optionin -lmysqlclient... no

configure: error: wrong mysql libraryversion or lib not found. Check config.log for more information.

解決:--with-mysqli後面不加路徑

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

問題:Don't know how to define struct flockon this system, set --enable-opcache=no

解決:

以下紅色路徑看具體mysql安裝路徑而定

32位系統:

ln -s /usr/local/MySQL/lib/libmysqlclient.so /usr/lib/

ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18

 

64位系統:

ln -s /usr/local/MySQL/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

問題:configure: error: Please reinstallreadline - I cannot find readline.h

解決:yum install readline-devel.x86_64 -y

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

問題:make: *** [sapi/cli/php] Error 1

解決:

網上統一的解決方式: makeZEND_EXTRA_LIBS='-liconv'

ln -s /usr/local/lib/libiconv.so.2/usr/lib64/

 

我自己的解決方式:重新編譯安裝libiconv(注意編譯的的參數--with-iconv-dir的路徑)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


=================測試LNMP環境==========================

cd /application/nginx/


--------------------------------------------------

vim html/blog/index.php

<?php

phpinfo();

?>

--------------------------------------------------


vim conf/extra/blog.conf

    server {

        listen       80;

        server_name  www.blog.vperson.org.cn;

        access_log  logs/blog.access.log  main;

        location / {

            root   html/blog;

            index  index.php  index.html index.htm;

        }

        location ~ \.php$ {

            root           html/blog;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            include        fastcgi_params;

            include        fastcgi.conf;

        }

}

-----------------------------------------------------------------------------


./sbin/nginx -t


./sbin/nginx -s reload


curl www.blog.vperson.org.cn


錯誤集:

  • 如果使用curl 訪問時出現502 錯誤,網上一大堆解決方法,就是沒有說道防火牆的。所以PHP服務是自己佔用一個端口的,所以需要我們手動開啓。iptables -I INPUT -p tcp --dport 9000 -j ACCEPT

  • 錯誤404和403一般是站點目錄和配置文件有錯誤,或者服務器沒起來等問題。



隱藏PHP版本:

vim /application/php/lib/php.ini

expose_php = On


搭建一個自己的開源網站:

opensns、phpcms、wiki等。

步驟:

  • 下載開源軟件包

  • #如http://kaiyuan.hudong.com/

  • 創建數據庫

  • #create database wiki;

  • 創建數據庫中的用戶用於管理這個網站的數據

  • #grant all on wiki.* towiki@’localhost’ identified by ‘wiki’;

  • #flush privileges;

  • #quit

  • 解壓開源網站到指定的站點目錄

  • #修改權限chown -Rnginx:nginx 目錄

  • 用瀏覽器訪問

  • 安裝站點


總結:

LNMP搭建對於新手來說是比較困難但是要細心,前後要有呼應,理解。

遇到困難先看錯誤,別急着百度,因爲搜出來的大部分都是複製粘貼的。

記錄下來每次的錯誤方便下次解決。

遇到困難,做了好久的,先放鬆放鬆,去散步什麼的回來說不定就會了。

二進制的mysql不推薦新手完,因爲他只是預設了一些參數。


##以上可能有錯誤,但是還請原諒因爲我也是新手,剛剛開始學習linux,請多多指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章