php
linux
nginx
nginx的牛逼之處就不用多說了,反正一個字:牛逼!
我很早之前在csdn上也寫過一篇在Windows上安裝nginx的文章,之前對它也是一知半解,也屬于摸著石頭過河吧,今天來看一下linux上的安裝以及搭配php的使用。
我的機器是centos 6.2 。 php 版本是 5.4.11
如果軟件下載失敗或者被墻,可以下載我備份的云盤:
http://yunpan.cn/cZ2QJMSKVGsdU (提取碼:06ec)
nginx 依賴于 zlib pcre ssl 三個模塊,安裝之前要先安裝它們,如果已經(jīng)安裝則忽略,我的機器其實在安裝php的時候這些模塊其實是有安裝的,下面,我再來一次:
用源碼方式安裝:
這3個擴展 不需要指定安裝目錄,他們都默認安裝在 /usr/local 目錄下。
第一步,我將源代碼統(tǒng)一下載到 /lamp 之下,基本上下載的都是最新版。openssl那個一定要下載最新版,以為之前的那個心跳漏洞。
cd /lamp
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure
make
make install
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure
make
make install
wget http://www.openssl.org/source/openssl-1.0.2.tar.gz
tar zxvf openssl-1.0.2.tar.gz
cd openssl-1.0.2.tar.gz
./config # 注意是config,不是configure
make
make install
好,如果沒什么錯誤的話,3個擴展都已經(jīng)安裝好了,如果出現(xiàn)錯誤信息,基本都會有提示,我安裝下載很順利,沒啥問題。
我同樣也是下載的官網(wǎng)目前為止的最新版:nginx-1.7.10
wget http://nginx.org/download/nginx-1.7.10.tar.gz
tar -zxvf nginx-1.7.10.tar.gz
cd nginx-1.7.10.tar.gz
下載解壓完成,下面就是編譯了:
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/lamp/pcre-8.32 \
--with-zlib=/lamp/zlib-1.2.7 \
--with-openssl=/lamp/openssl-1.0.2
注意:這3個擴展的目錄是他們的源代碼目錄
,不是安裝目錄
,這點很容易搞錯。
--with-pcre=/lamp/pcre-8.32 \
--with-zlib=/lamp/zlib-1.2.7 \
--with-openssl=/lamp/openssl-1.0.2
開始編譯:
[root@localhost nginx-1.7.10.tar.gz] make
...
[root@localhost nginx-1.7.10.tar.gz] make install
一般這3個擴展目錄指定正確,是不會報錯的,很順利的就成功了。
nginx的默認端口是80。所以啟動之前要確保80端口沒有被占用,如果之前安裝過Apache, 它也是80端口,那么需要kill掉Apache,
如果想保留80端口,也可以修改/usr/local/nginx/nginx.conf
中36行 listen 為 8080或其他;
我這里改成8080端口
啟動命令是:
/usr/local/nginx/nginx
不報錯就ok了:
查看下端口:
netstat -tnl|grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
然后,我們打開瀏覽器訪問下:
localhost:8080
出現(xiàn)以下,表示nginx 安裝成功。
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
之前我們將了很多關(guān)于php-fpm的,現(xiàn)在php安裝php-fpm其實就是為了配合nginx使用的。
所以,我們需要編輯nginx的配置文件,我們編譯的時候指定了的:/usr/local/nginx/nginx.conf
利用YUM安裝的,直接編輯/ETC/nginx/conf.d/default.conf文件
打開后,編輯以下幾行,我簡單的標記了一下:
43 location / { 44 root /usr/local/www; #web的根目錄 45 index index.php index.html index.htm; # 加入index.php 46 } 65 location ~ \.php$ { 66 root /usr/local/www; #web的根目錄 67 fastcgi_pass 127.0.0.1:9000; #php-fpm的地址 68 fastcgi_index index.php; 70 include fastcgi.conf; 71 }
附加:在centos 7環(huán)境下,用YUM安裝,nginx 1.8.0在原文件內(nèi)修改這一句
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
簡單的這樣改一下,滿足基本的php需求就可以了。下面我們重新啟動一下nginx:
有2中方式,第1種是先kill,再啟動。第2種是平滑啟動,推薦第2種
[root@localhost nginx]# ps -ef|grep nginx
root 31660 1 0 17:15 ? 00:00:00 nginx: master process ./nginx
nobody 31954 31660 0 17:52 ? 00:00:00 nginx: worker process
root 31968 15419 0 17:52 pts/3 00:00:00 grep nginx
[root@localhost nginx]kill 31660
[root@localhost nginx]/usr/local/nginx/nginx
或者平滑升級,推薦這個
/usr/local/nginx/nginx -s reload
我們剛才把web目錄改成 /usr/local/www 目錄下,我們在下面新建一個index.php文件:
vi /usr/local/www/index.php
<?php
echo phpinfo();
打開瀏覽器輸入:127.0.0.1:8080/index.php
看到熟悉的 PHP Version 5.4.11 表示成功了。
開機啟動的配置文件是:/etc/rc.local
,vi加入 /usr/local/nginx/nginx
即可
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/local/apache/bin/apachectl start
/usr/local/bin/redis-server /etc/redis.conf
/usr/local/php/sbin/php-fpm
/usr/local/nginx/nginx
我們在本地訪問127.0.0.1:8080/index.php,是可以打開的。 但是如果,在另外一臺機子上訪問:http://192.168.155.128:8080/index.php 不能訪問,可能是這個8080端口號沒有加入到iptables的白名單,所以需要加一下:
(PS: 如果你的nginx端口號是80,應該是已經(jīng)在iptables白名單中了,如果能訪問就不需要加了)
iptables的配置文件在這:/etc/sysconfig/iptables
我們vi 打開下,然后在倒數(shù)第二行上面
加入:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
這句話的意思是將8080端口號加入白名單,不做訪問限制。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
然后,重啟下 iptables。
service iptables restart
好。再次訪問下: http://192.168.155.128:8080/index.php 應該就能看到phpinfo頁面了。
聯(lián)系客服