Ubuntu系統下lnmp環境搭建和Nginx多站點配置


最近需要使用Ubuntu作為服務器搭建Lnmp環境,順便將操作過程寫下來,與大家分享。如有不足之處,歡迎大家提出不同意見。(本文默認讀者已經熟悉相關linux命令的使用,比如創建文件和文件夾,編輯文件的命令等。)

操作系統:Ubuntu 15.10

本系統是新裝的,所以沒有Nginx、mysql和php環境。如果之前有裝過這些環境的還得先把之前的軟件先卸載。

 

一、安裝MySQL

安裝MySQL:sudo apt-get install mysql-server mysql-client     

中間需要你輸入root賬戶的密碼,按要求操作就可以了。

mysql服務的操作:

service mysql  start | restart | stop(啟動|重啟|停止mysql服務)

/etc/init.d/mysql start

/etc/init.d/mysql restart

/etc/init.d/mysql stop

卸載mysql:

刪除mysql前 先刪除一下 /var/lib/mysql 還有 /etc/mysql

sudo rm /var/lib/mysql/ -R  

sudo rm /etc/mysql/ -R  

sudo apt-get autoremove mysql* --purge  

sudo apt-get remove apparmor   #慎用,可能會刪除掉其他軟件

全部刪除之后再執行  apt-get install mysql-server mysql-client 

 

二、安裝Nginx

直接輸入命令:sudo apt-get install nginx

 

在本地瀏覽器輸入127.0.0.1,出現以下頁面說明安裝成。

 

 nginx服務的操作:

sudo service nginx start | restart | stop(啟動|重啟|停止nginx服務)

/etc/init.d/nginx start

/etc/init.d/nginx restart

/etc/init.d/nginx stop

nginx也有一些很有用的指令,例如:

sudo nginx -t   #檢查配置文件

sudo nginx -s reload   #平滑重啟,修改完配置后使配置生效

卸載nginx

sudo apt-get remove nginx nginx-common # 卸載刪除除了配置文件以外的所有文件。

sudo apt-get purge nginx nginx-common # 卸載所有東東,包括刪除配置文件。

sudo apt-get autoremove # 在上面命令結束后執行,主要是卸載刪除Nginx的不再被使用的依賴包。

sudo apt-get remove nginx-full nginx-common #卸載刪除兩個主要的包。

 

三、安裝PHP5  

(在ubuntu16以上版本安裝php7也是同理,只需把php5改成php7.0,如sudo apt-get install php7.0-cli php7.0-fpm ...)

安裝php:

sudo apt-get install php5-cli   #安裝php的cli工具

sudo apt-get install php5-fpm   #安裝php的cgi工具

 

安裝完還要安裝需要用到的拓展,比如:

php5-mysql、php5-gd、php5-json、php5-curl……

具體可以使用命令sudo apt-cache search php5查看拓展信息。

然后使用命令sudo apt-get install php5-mysql php5-gd php5-json php5-curl 進行拓展安裝。

php服務的操作:

service php5-fpm start | restart | stop(啟動|重啟|停止php5-fpm服務)

service php5-fpm status

/etc/init.d/php5-fpm start

/etc/init.d/php5-fpm restart

/etc/init.d/php5-fpm stop

卸載php:

sudo rm /var/lib/php5/ -R  

sudo rm /etc/php5/ -R  

sudo apt-get autoremove php* --purge  

 

安裝完寫個test.php文件測試下,執行結果如圖:

<?php

$a="php test\n";

echo $a;

?>

 

php安裝成功!

安裝過程到這里算是完成,接下來就是配置讓Nginx做php5-fpm的代理了。(不懂php5-fpm是什么鬼的同學就自己去搜索吧,后面還有fastcgi等概念也都應該了解下。大神請無視~)

 

四、配置nginx做代理

進入/etc/nginx目錄,打開nginx.conf配置文件可以在http模塊底部看到一行:

include /etc/nginx/sites-enabled/*;

因此我們可以在/etc/nginx/sites-enables目錄下新建個配置文件test.conf,內容如下:

 

其中設置fastcgi_pass 為127.0.0.1:9000,那么還需要到/etc/php5/fpm/pool.d/www.conf文件中找到:

listen = /var/run/php5-fpm.sock

將其注釋,在下方新增一行:

listen = 127.0.0.1:9000

 

保存退出后重啟php5-fpm:service php5-fpm restart

給test.conf中配置的是8080 端口,所以還要配置防火牆開啟8080端口(后面多站點的配置端口同理):sudo ufw allow 8080

在配置的站點的根目錄也就是說/var/www/test下新建文件index.php:

<?php

Phpinfo();

?>

配置完在本地瀏覽器輸入:127.0.0.1:8080 竟然出現空白頁面,找到/etc/nginx/fastcgi_params,也就是前面test.conf文件中include fastcgi_params的文件,在其頭部新增一行:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#設置腳本文件請求的路徑。

保存后重啟nginx或者使用命令:nginx –s reload 重新加載配置文件。到瀏覽器刷新,成功

 

 

五、不同端口多站點配置

 

像第一個站點一樣先在/var/www目錄下新建兩個文件test2和test3分別作為另外兩個站點的目錄。

新建測試文件/var/www/test2/index.php:

<?php

$test=”test2 site \n”;

echo $test;

?>

再新建測試文件/var/www/test3/index.php:

<?php

$test=”test3 site \n”;

echo $test;

?>

然后到/etc/nginx/sites-enabled目錄下新建兩個站點配置文件,像剛剛新建的test.conf一樣。配置文件:/etc/nginx/sites-enabled/test2.conf

 

配置文件:/etc/nginx/sites-enabled/test3.conf

 

 

配置完,sudo nginx –s reload重新加載配置文件。防火牆開啟相應8082和8083端口。

測試站點test2:本地瀏覽器輸入:127.0.0.1:8082

 

 

測試站點test3:本地瀏覽器輸入:127.0.0.1:8083

 

六、80端口做多站點配置

 

以上是不同端口多個站點配置,下面我們看看在80端口如何做多站點配置

上面的操作已經實現了不同端口多個站點的配置,現在修改/etc/nginx/sites-enable/test2.conf和/etc/nginx/sites-enable/test3.conf兩個配置文件,將監聽的端口全部改為80端口。站點目錄不變:

 

 

 

改完重新加載nginx配置文件

 

使用剛剛在配置文件里設置的server_name來訪問,也就是test2.com和test3.com,還得修改host文件。打開/etc/host文件,新增兩行:

127.0.0.1          test2.com

127.0.0.1          test3.com

 

打開本地瀏覽器分別輸入test2.com和test3.com查看結果:

 

 

配置成功!

 

總結:

1、  每次修改完nginx配置文件之后都需要讓重新加載配置文件,也可以重啟。php5-fpm也一樣。

2、本文雖然講解如何搭建環境,和配置環境,但對於相應環境的運行原理並沒有做過多講討論。所以,要想真正熟悉相應環境的運行原理,還得下點功夫去了解相應的知識點。例如fastcgi_params文件的作用,nginx配置文件中每個模塊的功能,和php5-fpm的機制等。

3、安裝配置過程中難免會出現一些意想不到的問題,這種情況下要學會分析日志定位問題。日志一般都放在/var/log目錄下,比如剛剛配置第一個站點是訪問遇到空白頁面,但是看/var/log/nginx/access.log日志卻顯示狀態碼為200,這說明nginx是收到請求的,只是沒有把請求的內容發給php5-fpm,所以定位到問題是出現在nginx和php5-fpm的通信上。

4、如果要將多個域名指定到同一個項目,只需在nginx中該項目的對應的配置文件的server_name加上多個域名。例如:server_name  test.com,test2.com; 這樣,訪問test.com和訪問test2.com都會定向到該項目。也可以使用通配符來匹配多個域名的情況。例如:server_name  *.main.com; 這樣,一級域名main.com所有的子域名都可以定向到該項目。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM