Ubuntu Nginx 配置


2018.4.18

Ubuntu Nginx 配置


Ubuntu Sublime 配置篇


. 序言


歷經了千難萬險, 終於是把Nginx 配置成功了, 單單自己還不行, 還要不斷從網上總結各種問題的解決方法才能徹底解決, 要不一下兩下是不能輕易解決。 在這我詳細說名一些我遇到的問題, 讓大家省些時間, 少些煎熬。


. 安裝Nginx


sudo apt-get install nginx


. 啟動Nginx 服務。


sudo systemctl start nginx


--------------------------------+

. 開機自動啟動nginx 服務

sudo systemctl enable nginx


. 關閉開機自動啟動nginx 服務

sudo systemctl disable nginx

--------------------------------+


打開瀏覽器, 在地址欄輸入127.0.0.1 or localhost, 出現Nginx 經典網頁即表示成功。


. 也可以用Nginx 命令去測試


sudo nginx -t


Tip: 當每次修改完nginx 配置后, 也可使用此語句先查看配置是否正確.


. 查看端口


sudo lsof -i:80


. Nginx 目錄介紹


Apache 的目錄稍稍看懂, 那么Nginx 的目錄也大同小異。 常用到的兩個主目錄:

/etc/nginx, /var/log/nginx.


. /etc/nginx, Nginx 配置目錄

------------------------------------------------------------------------------+

drwxr-xr-x conf.d/ # 包含一般性的配置文件, 里面默認沒有東西...

-rw-r--r-- fastcgi.conf # fastcgi 的配置

-rw-r--r-- fastcgi_params # fastcgi 參數的配置

-rw-r--r-- koi-utf

-rw-r--r-- koi-win

-rw-r--r-- mime.types # 資源的媒體類型相關配置

drwxr-xr-x modules-available/ # 模塊區

drwxr-xr-x modules-enabled/

-rw-r--r-- nginx.conf # nginx 主配置文件

-rw-r--r-- proxy_params

-rw-r--r-- scgi_params

drwxr-xr-x sites-available/ # 虛擬主機配置文件夾

drwxr-xr-x sites-enabled/ # 虛擬主機配置文件夾, 生效區

drwxr-xr-x snippets/

-rw-r--r-- uwsgi_params

-rw-r--r-- win-utf

--------------------------------------------------------------------+


其他的都默認不動就好了, 主要有三個地方, nginx.conf sites-available/sites-enabled/


. 配置


從親手配置到理解配置。


a) 首先, 讓Nginx 解析PHP 文件。


. Nginx 解析PHP 文件, 需要安裝php7.1-fpm.


sudo apt install php7.1-fpm


b) 編輯Nginx 文件


. 進入到Nginx 配置文件夾下, 並打開Nginx 配置文件


cd /etc/nginx


sudo vim nginx/conf


Tip: 里面有許多東西是注釋掉的, 需要你自己配置。


------------------------------------------------+

# 運行Nginx 服務的身份, 默認是www-data, 我給注釋掉了。 經過一系列配置后, 我發現注釋掉也是可以的, 沒影響。 可能和以后服務器正式環境有些相關吧。

#user root;


worker_processes 4; # 進程數量, CPU 有幾核, 就設置幾, 我設置4.

pid /run/nginx.pid; # Nginx PID 值保存的文件


# 引入模塊的各種配置

include /etc/nginx/modules-enabled/*.conf;


# Nginx 事件

events {

worker_connections 1024; # 單個worker process 進程的最大並發鏈接數

# multi_accept on;

}


http {


##

# Basic Settings

##


sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

# server_tokens off;


# server_names_hash_bucket_size 64;

# server_name_in_redirect off;


include /etc/nginx/mime.types;

default_type application/octet-stream;


##

# SSL Settings

##


ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE

ssl_prefer_server_ciphers on;


##

# Logging Settings

##


access_log /var/log/nginx/access.log; # 訪問日志

error_log /var/log/nginx/error.log; # 錯誤日志


##

# Gzip Settings

##

# gzip 設置, 使用gizp壓縮提高網站的傳輸速度。 之前的是注釋掉的, 我給開啟了, 默認就好。


gzip on;

gzip_disable "msie6";


gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;


##

# Virtual Host Configs

##

# 虛擬配置引入

include /etc/nginx/conf.d/*.conf;

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

}


# Nginx 還可以做郵箱服務器和反向代理服務器。 默認是注釋。


#mail {

# # See sample authentication script at:

# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript

#

# # auth_http localhost/auth.php;

# # pop3_capabilities "TOP" "USER";

# # imap_capabilities "IMAP4rev1" "UIDPLUS";

#

# server {

# listen localhost:110;

# protocol pop3;

# proxy on;

# }

#

# server {

# listen localhost:143;

# protocol imap;

# proxy on;

# }

#}


------------------------------------------------+


. 看完了Nginx 配置, 發現沒什么要修改的。 於是開始着手讓Nginx 開始解析PHP。 首先打開虛擬機配置文件, 還是同一個目錄下操作。 先給配置文件做一個備份, 以防萬一。


sudo cp sites-available/default sites-available/default.bak


sudo vim sites-available/default


. 其他注釋的地方我就沒復制

----------------------------------------------------------+

server {

listen 80 default_server;        # IPv4 端口號

listen [::]:80 default_server;     # IPv6 端口號

 

root /var/www/html;             # Nginx 服務器根目錄


# Add index.php to the list if you are using PHP

# 默認有好多類型的, 在這我添加了PHP index 索引文件, 然后把其他的都刪掉了。

# 開頭的index, 告訴Nginx 要添加的index 索引文件, 不可少。

index index.php;              # 添加自動索引文件

 

server_name localhost;           # 域名

 

# location / 通用匹配,任何請求都會匹配到。

# 我在這里只開啟了可以瀏覽文件夾。

location / {

# First attempt to serve request as file, then

# as directory, then fall back to displaying a 404.

try_files $uri $uri/ =404;

autoindex on;

autoindex_exact_size off;

autoindex_localtime on;


}


# pass PHP scripts to FastCGI server

# 訪問帶.php 后綴的文件的地址, 需要走這里, 比如localhost/test.php。 就是讓Nginx 去解析PHP 文件。

location ~ \.php$ {

include snippets/fastcgi-php.conf;

#

# # With php-fpm (or other unix sockets):

  fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;    ^ 注釋一

# # With php-cgi (or other tcp sockets):

# fastcgi_pass 127.0.0.1:9000;                ^ 注釋二

}


# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

# 禁止htaccess 文件

# location ~ /\.ht {

# deny all;

#}

}


# 下面還有提供的虛擬主機配置的模板。 意思是你可以再新建一個文件, 用此模板, 放在sites-available/ 中, 鏈接到sites-enabled/ 啟用就可以。

# Virtual Host configuration for example.com

#

# You can move that to a different file under sites-available/ and symlink that

# to sites-enabled/ to enable it.

#

#server {

# listen 80;

# listen [::]:80;

#

# server_name example.com;

#

# root /var/www/example.com;

# index index.html;

#

# location / {

# try_files $uri $uri/ =404;

# }

#}

--------------------------------------------------+


Tip: 注釋一, 二詳解


注釋一: fastcgi_pass unix:/var/run/php/php7.1-fpm.sock

注釋二: fastcgi_pass 127.0.0.1:9000

 

這兩句不能同時開啟, 只能開啟一個.

1. 若開啟注釋一, 出現報錯, 那么就走下面, 若沒有錯誤, 服務正常開啟, 那么就成功了

 

. 進入到php目錄下, 並查看

 

cd /etc/php/7.1


ls


. 會看到這四個文件夾


apache2 cgi fpm mods-available


若使用nginx 服務器, 那么以后fpm 中的php.ini 文件會成為php 的配置文件, 開啟個擴展, debug 調試, 都要從這里面修改. 同理若使用apache 服務器, 那么會使用apache2 目錄下的配置文件.

若出現了報錯, 則需要更改fpm/pool.d/www.conf 配置文件


sudo vim fpm/pool.d/www.conf


vim 一般模式下, /listen 找到如下三行


listen.owner = www-data

listen.group = www-data

;listen.mode = 0660


把最后一個去掉注釋. 保存退出.


2. 若開啟注釋二,


. 首先查看Fastcgi 的端口, 查看是否有127.0.0.1:9000


netstat -antp


. 若沒有, 則開啟


php-cgi -b 127.0.0.1:9000 &


這時, 他會提醒你安裝php-cgi, 你就安裝你的php 版本的cgi


sudo apt install php7.1-cgi


. 再重復一次, 開啟


php-cgi -b 127.0.0.1:9000 &

 

這樣基本配置就完成了, 首先測試一下, 是否能解析PHP 文件。 在/var/www/html 目錄下, 創建一個index.php 文件。


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


i, 進入編輯模式


<?php

phpinfo();

?>


Esc, :wq 保存退出。


. 開啟服務


sudo systemctl start nginx php7.1-fpm


Tip: 編輯配置配置文件若出現錯誤時, 往往開啟不了服務, 這時則需要去Nginx 日志目錄下查看錯誤日志,錯誤一看便知, 它會告訴你錯誤出現在哪個配置文件的哪一行。 日志文件在/var/log/nginx 目錄下, 可more error.log 查看。


. 打開瀏覽器, 在地址欄輸入127.0.0.1 or localhost


若出現php 的信息, 則成功。


. 問題


1. 若出現403 Forbiddn, 則不是你的配置的事情, 應該是你的該根目錄權限的問題。 首先查看根目錄


ll /var/www

 

若不是這樣, 權限不足的話, 則改一下權限。


sudo chmod 777 /var/www/html


然后再去瀏覽器刷新, 看是否成功. 若還是禁止, 則該轉向另一個問題了. 使用者是否正確


. 首先


查看用戶www-data 是否存在。 若不存在, 則添加該用戶和用戶組。


// 創建用戶


sudo useradd www-data


// 把該用戶添加到sudo 組中, 以后就可以使用sudo 來提升權限


sudo usermod -a -G sudo www-data


. 或者去Nginx 的配置文件中, 把第一行的用戶的注釋去掉, 改成root

 

sudo vim /etc/nginx/nginx.conf



去掉注釋。 這時重啟Nginx 服務。


nginx -s reload


or


sudo systemctl restart nginx


再去瀏覽器刷新一下, 看是否有效果。 若有效果, 則進入下一步。


2. 若出現502 Bad Gateway


502 Bad Gateway, 連接超時 我們向服務器發送請求 由於服務器當前鏈接太多,導致服務器方面無法給於正常的響應,產生此類報錯。

 

回到上面的兩個注釋上去解決.



. 更改根目錄


. 按上面所說, 編輯虛擬主機默認配置文件


進入到Nginx 配置目錄。


cd /etc/nginx/


編輯配置文件。


sudo vim sites-enabled/default


把里面的root 更換你自己的目錄。


比如我的是home/loseself/www。 別忘了創建那個文件夾。

然后更改根目錄權限。


sudo chmod 777 home/loseself/www


. 重啟Nginx 服務


sudo systemctl restart nginx



. 配置虛擬主機


. 進入到Nginx 配置目錄。


cd /etc/nginx/


. sites-available 下新建一個文件, 復制其下的default 的文件即可, 然后進行配置, 再鏈接到sites-enabled 文件夾下。(和Apache 配置步驟差不多, 且default 文件下還有提供的虛擬主機配置模板, 上面提到過!)


. 給文件起你想要的名字, 在這就叫做april, 然后編輯april 文件, 修改端口設置, 域名和根目錄。


cp sites-available/default sites-available/april

 

 

端口像這樣, 去掉default, 下面有模板。


然后更改域名和根目錄。 完成后保存退出。 Esc, :wq


. 創建鏈接文件到site-enabled文件夾下, 這次鏈接的路徑也和Apache不一樣, 按他的來。


su ln -s /etc/nginx/sites-available/april sites-enabled/april


. 查看一下


ll sites-available


成功后, 去hosts 文件添加你修改的域名。


. 添加域名


sudo vim /etc/hosts


. 新添一個你的域名, 我的叫loseself.im


127.0.0.1 loseself.im


保存退出。


. 在根目錄下添加一個測試文件index.php


sudo vim 你的根目錄/index.php


<?php

phpinfo();

?>


保存退出。 重啟Nginx 服務。


sudo systemctl restart nginx


. 打開瀏覽器, 輸入你的新添域名。 看到效果即可。


. 開啟Nginx 服務器PHP 的調試


1. 前往屬於Nginx php配置文件的目錄下


cd /etc/php/7.1/fpm


2. 打開php.ini


sudo vim php.ini


/ERROR


找到error_reporting, display_errors 並改為以下.


error_reporting = E_ALL & ~E_ERROR


display_errors = On


3. 重啟nginx, php7.1-fpm 服務


sudo systemctl restart nginx php7.1-fpm


4. 若還不行, 則打開php-fpm.conf


sudo vim php-fpm.conf


在最后一行復制上下面這句話


php_flag[display_errors] = on


再重啟nginx, php7.1-fpm 服務.





免責聲明!

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



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