在Ubuntu16.04安裝LNMP server(Linux+Nginx+MySQL+PHP)

在Ubuntu16.04安裝LNMP server(Linux+Nginx+MySQL+PHP)

測試環境:Ubuntu 16.04 LTS

Step 1. 安裝Nginx

sudo apt-get update
sudo apt-get install nginx

可以開個簡單的防火牆

sudo ufw enable
sudo ufw allow 'Nginx HTTP'
sudo ufw status

如果你的Nginx有正確安裝,打開http://server_domain_or_IP應該可以看到Nginx預設的index.html

PS. 記得先確認/etc/nginx/sites-available/default裡的root指向哪裡

Step2. 安裝MySQL

sudo apt-get install mysql-server

中間會要你設定root的資料庫密碼,之後還可以再改。

使用mysql_secure_installation可以做簡單的安全設定

mysql_secure_installation

Step3. 安裝PHP

因為Nginx沒有內建PHP processing,要安裝php-fpm來告訴Nginx傳送PHP request給PHP。

php-mysql有一些helper package可以用來讓PHP跟資料庫做溝通。

sudo apt-get install php-fpm php-mysql

安裝php-fpm後,需要做一些設定:

sudo vim /etc/php/7.0/fpm/php.ini

請把cgi.fix_pathinfo去掉註解並調整為0(1是預設值),預設值是很不安全的,當PHP找不到PHP request要求的file時,它會要PHP去嘗試執行它最方便找到的檔案,可能會執行到不該執行的檔案。

cgi.fix_pathinfo=0

重開PHP processor

sudo systemctl restart php7.0-fpm

Step 4. 在Nginx設定使用PHP processor

sudo vim /etc/nginx/sites-available/default

Default設定大概長這樣:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

請改成:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

測試你的設定檔語法是否有錯:

sudo nginx -t

重新載入Nginx

sudo systemctl reload nginx

Step 5. 用PHP info file來檢查剛剛的設定

sudo vim /var/www/html/info.php

info.php:

<?php
phpinfo();

如果打開http://server_domain_or_IP/info.php有出現PHP的資訊就沒問題了

記得測試完再把info.php刪除,以免有心人士利用。

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *