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

最近須要使用Ubuntu做爲服務器搭建Lnmp環境,順便將操做過程寫下來,與你們分享。若有不足之處,歡迎你們提出不一樣意見。(本文默認讀者已經熟悉相關linux命令的使用,好比建立文件和文件夾,編輯文件的命令等。)php

操做系統:Ubuntu 15.10mysql

本系統是新裝的,因此沒有Nginx、mysql和php環境。若是以前有裝過這些環境的還得先把以前的軟件先卸載。linux

 

1、安裝MySQLnginx

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

中間須要你輸入root帳戶的密碼,按要求操做就能夠了。json

mysql服務的操做:ubuntu

service mysql  start | restart | stop(啓動|重啓|中止mysql服務)瀏覽器

/etc/init.d/mysql start服務器

/etc/init.d/mysql restartphp7

/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 

 

2、安裝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 #卸載刪除兩個主要的包。

 

3、安裝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等概念也都應該瞭解下。大神請無視~)

 

4、配置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 從新加載配置文件。到瀏覽器刷新,成功

 

 

5、不一樣端口多站點配置

 

像第一個站點同樣先在/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

 

6、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查看結果:

 

 

配置成功!

 

總結:

一、  每次修改完nginx配置文件以後都須要讓從新加載配置文件,也能夠重啓。php5-fpm也同樣。

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

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

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

相關文章
相關標籤/搜索