我在上篇配置了nginx以後,實現了html頁面的訪問,但是php頁面的訪問沒那麼簡單,還需要進行較多配置,折騰了一天,所以記錄下來,以備下次使用。
本篇默認已經配置好Nginx,沒有配置的,請看我這一篇博客進行學習:
https://blog.csdn.net/ypeij/article/details/81562663
一、修改nginx路徑
默認的nginx目錄是/usr/share/nginx/html,我們將其修改爲/var/www,可以根據個人習慣靈活更改。修改/etc/nginx/sites-available/default文件
將
root /usr/share/nginx/html;
更改爲
root /var/www
再將
index index.html index.htm;
更改爲
index index.html index.php index.htm;
重啓nginx
sudo service nginx restart
二、安裝PHP以及相關擴展
sudo apt-get install php5 php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-tidy php5-xmlrpc php5-sqlite php5-xsl
執行上述指令安裝php及相關擴展,之前的版本比較低,現在可能源裏已經沒有那麼低的版本了,我去掉版本號列出所需安裝的擴展:
php php-cgi php-mysql php-curl php-gd php-idn php-pear php-imagick php-imap php-mcrypt php-memcache php-mhash php-ming php-pspell php-recode php-snmp php-tidy php-xmlrpc php-sqlite php-xsl
以上擴展安裝時需要結合當時版本號補全名字。
此時有的小夥伴想要測試運行PHP文件了,然而很悲劇地告訴你是不可以的,因爲你還沒有配置fastcgi,繼續往下看。
三、安裝mysql、phpmyadmi
執行如下命令,安裝MySQL服務端和客戶端。
sudo apt-get install mysql-server mysql-client
在安裝時可能提示你輸入root用戶的密碼,設置即可。
執行如下命令,安裝phpMyAdmin。
sudo apt-get install phpmyadmin
創建軟連接
sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
上面我們創建了一個根目錄爲/var/www,鏈接名爲phpmyadmin的文件,指向/usr/share/phpmyadmin
三、安裝配置fastcgi
sudo apt-get install spawn-fcgi
修改 /etc/nginx/fastcgi_params文件,增加下面一行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
修改/etc/php5/cgi/php.ini文件,將下面一行取消註釋
cgi.fix_pathinfo=1;
修改/etc/nginx/sites-available/default文件,我們之前修改的目錄地址是/var/www,這樣php-cgi方能正常使用SCRIPT_FILENAME這個變量
將
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
修改爲
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
然後啓動fastcgi
sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
參數含義如下:
* -f 指定調用FastCGI的進程的執行程序位置,根據系統上所裝的PHP的情況具體設置參數含義如下
* -a 綁定到地址addr
* -p 綁定到端口port
* -s 綁定到unix socket的路徑path
* -C 指定產生的FastCGI的進程數,默認爲5(僅用於PHP)
* -P指定產生的進程的PID文件路徑
* -u和-g FastCGI使用什麼身份(-u 用戶 -g 用戶組)運行,Ubuntu下可以使用www-data,其他的根據情況配置,如nobody、apache等現在可以在web根目錄下放個探針或php文件測試一下了
運行結果類似如下
spawn-fcgi: child spawned successfully: PID: 11775
設置fastcgi開機啓動,修改/etc/rc.local文件,添加下面一行
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
修改完之後,重啓nginx
sudo service nginx restart
四、測試運行
我們可以在/var/www目錄下新建index.php文件測試運行,發現已經可以運行PHP文件了。
index.php文件內容如下:
<?php phpinfo(); ?>
所有配置已經完畢,現在我們輸入服務器IP和服務器IP/phpmyadmin便可以輕鬆加愉快地訪問了。