在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刪除,以免有心人士利用。