1. 程式人生 > >Ubuntu 16.04 下快速搭建 LNMP環境

Ubuntu 16.04 下快速搭建 LNMP環境

在 Ubuntu 系統中,可以使用 apt-get 命令來搭建 LNMP環境。這種方式較編譯方式安裝更加簡便,因此選擇使用該方式來搭建環境以供學習。

安裝Nginx

使用 sudo apt-get install nginx 就能自動安裝 Nginx,為了確保獲得最新的 Nginx,可以先使用 sudo apt-get update 命令更新源列表。

安裝好之後,使用 dpkg -S nginx 命令來搜尋 nginx相關檔案,可以從命令顯示結果看出 Nginx預設的安裝位置是/etc/nginx目錄,其配置檔案nginx.conf也是在該目錄下,並且在 etc/init.d 下有 nginx的啟動程式,該目錄下的程式都會在系統開啟時啟動。

此外,Nginx的預設網站目錄是 /usr/share/nginx/html/,預設Nginx網站配置檔案為 /etc/nginx/sites-available/default 。

啟動 Nginx服務,使用下面兩個命令任意一個即可:

sudo /etc/init.d/nginx start
sudo service nginx start

使用 netstat -anp 則可以看到80埠已經處於 LISTEN狀態了。
直接檢視80埠可以使用命令:sudo lsof -i :80

在瀏覽器輸入 127.0.0.1後,就可以看見 Nginx的歡迎頁面了。

安裝 PHP 7.1 與 PHP7.1-FPM

直接執行 sudo apt-get命令安裝 PHP 會報錯誤:

E: Unable to locate package php7.1
E: Couldn't find any package by regex 'php7.1'

原因是 PHP7 等並不在 Ubuntu的軟體庫中,因此要使用 PPA ppa:ondrej/php 庫

使用下列命令:

sudo apt-add-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.1 php7.1-fpm

安裝 PHP7.1包的同時也安裝了 PHP7.1-CLI

可以使用 php -v 命令來檢視 PHP 版本資訊。

Nginx 與 PHP-FPM整合

PHP-FPM 與 Nginx 通訊方式有兩種,一種是基於TCP的 Internet domain socket 方式,一種是 UNIX domain socket 方式。

UNIX domain socket 可以使同一臺作業系統上的兩個或多個程序進行資料通訊。UNIX domain socket 的介面和 Internet domain socket 很像,但它不使用網路底層協議來通訊。

伺服器壓力不大的情況下,這兩種方式效能差別不大,但在壓力比較滿的時候,用UNIX domain socket方式,效果確實比較好。

UNIX domain socket 方式:

在 /etc/nginx/sites-available/default 配置檔案中(網站根目錄也在是這裡更改), Nginx已經為與 PHP-FPM的整合準備好了,只需要將下面這部分改好就可以了。sock檔案路徑為 /run/php/php7.1-fpm.sock 。

location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # With php7.0-cgi alone:
        # fastcgi_pass 127.0.0.1:9000;
        # With php7.0-fpm:
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    }

然後再修改 PHP-FPM的配置檔案 /etc/php/7.1/fpm/pool.d
,如下:

;  與 Nginx監聽同一個 sock
listen = /run/php/php7.1-fpm.sock

配置好後重啟服務:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/php7.1-fpm restart

安裝 MySQL

使用命令
sudo apt-get –y install mysql-server mysql-client php7.1-mysql

第三個是 PHP的 MySQL擴充套件。

安裝過程中會讓你為 MySQL root使用者設定密碼。

同樣,使用命令 netstat -anp ,會發現 3306埠正在被監聽了。

現在可以編寫 PHP指令碼來連線資料庫了。