用php做網(wǎng)站營銷型網(wǎng)站的特點
Nginx
- 1. 基礎命令
- 1.1 重新加載systemd配置
- 1.2 停止Nginx服務
- 1.3 啟動Nginx服務
- 1.4 重啟Nginx服務
- 1.5 查看Nginx服務狀態(tài)
- 1.6 測試配置和重載Nginx
- 2. 額外命令
- 2.1 啟用開機自啟
- 2.2 禁用開機自啟
- 2.3 強制關閉所有Nginx進程
- 3. Nginx端口占用解決方案
- 3.1 查找占用端口8090的進程
- 3.2 終止占用端口的進程
- 3.3 驗證端口是否已被釋放
- 3.4 重新啟動Nginx
- 3.5 修改Nginx配置(可選)
- 4. Nginx配置文件
- 4.1 Web前端資源目錄
- 4.2 Conf 配置文件
- 4.2.1 基本配置
- 4.2.2 默認根目錄
- 4.2.3 特定路徑處理
- 4.3 PID(進程標識符)
- 4.3.1 nginx.conf 中的 PID
- 4.3.2 nginx.service 中的 PID
Nginx(發(fā)音為 “engine-x”)是一款高性能的開源Web服務器軟件,同時也可用作反向代理、負載均衡器和HTTP緩存。最初由俄羅斯程序員Igor Sysoev開發(fā),并于2004年首次公開發(fā)布。Nginx以其高效的并發(fā)處理能力、低資源消耗以及高可靠性而著稱,特別適用于高流量網(wǎng)站。
1. 基礎命令
這些命令適用于大多數(shù)Linux發(fā)行版,如Ubuntu, CentOS等,它們使用systemd作為初始化系統(tǒng)和服務管理器。
1.1 重新加載systemd配置
當您修改了Nginx的配置文件后,需要重新加載systemd以識別這些更改。
sudo systemctl daemon-reload
1.2 停止Nginx服務
sudo systemctl stop nginx
1.3 啟動Nginx服務
sudo systemctl start nginx
1.4 重啟Nginx服務
如果您對配置進行了更改,并希望這些更改生效,可以使用restart命令。
sudo systemctl restart nginx
1.5 查看Nginx服務狀態(tài)
用于檢查Nginx服務的狀態(tài),包括是否正在運行、最后一次啟動時間等信息。
sudo systemctl status nginx
1.6 測試配置和重載Nginx
每次修改配置文件后,使用以下命令進行測試并重載Nginx。
sudo nginx -t # 測試配置文件是否正確
sudo systemctl reload nginx # 重新加載配置
2. 額外命令
2.1 啟用開機自啟
確保Nginx服務隨系統(tǒng)啟動而自動啟動。
sudo systemctl enable nginx
2.2 禁用開機自啟
相反地,如果我們不希望Nginx隨系統(tǒng)啟動而自動啟動,可以使用如下命令。
sudo systemctl disable nginx
2.3 強制關閉所有Nginx進程
僅建議在常規(guī)停止方法(如systemctl stop nginx
)不起作用時使用。
pkill -9 nginx
請注意,直接殺掉Nginx進程(使用pkill -9 nginx
)可能會導致數(shù)據(jù)丟失或損壞,因為它不會給Nginx機會正常關閉連接和保存狀態(tài)。因此,盡量使用systemctl stop
或其他推薦的方法來停止服務。
3. Nginx端口占用解決方案
錯誤信息 nginx: [emerg] bind() to 0.0.0.0:8090 failed (98: Address already in use)
表明端口8090已經(jīng)被其他進程占用,導致Nginx無法綁定到該端口。要解決這個問題,我們需要找出并處理占用該端口的進程。以下是具體的步驟:
3.1 查找占用端口8090的進程
在Linux系統(tǒng)中,可以使用以下命令來查找哪個進程正在使用端口8090:
sudo lsof -i :8090
或者使用netstat
或ss
命令(如果已安裝):
sudo netstat -tuln | grep :8090
sudo ss -tuln | grep :8090
這些命令將顯示占用端口8090的進程ID(PID)和相關信息。
3.2 終止占用端口的進程
找到占用端口8090的進程后,你可以通過其PID終止該進程。假設PID為12345,可以使用以下命令終止它:
sudo kill 12345
如果進程無法正常終止,可以強制終止:
sudo kill -9 12345
注意:請確保你終止的是正確的進程,并且了解終止該進程可能帶來的影響。
3.3 驗證端口是否已被釋放
再次運行上述命令(如lsof -i :8090
),確認端口8090已經(jīng)不再被任何進程占用。
3.4 重新啟動Nginx
現(xiàn)在嘗試重新啟動Nginx:
sudo systemctl restart nginx
或者
sudo service nginx restart
3.5 修改Nginx配置(可選)
如果我們不想終止占用端口8090的進程,可以選擇修改Nginx配置文件,使用另一個未被占用的端口。編輯Nginx配置文件(通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/
目錄下的某個文件),找到監(jiān)聽端口的部分,例如:
server {listen 8090;...
}
將其改為另一個可用端口,如8091:
server {listen 8091;...
}
然后保存更改,并重新加載Nginx配置:
sudo nginx -s reload
通過以上步驟,我們應該能夠解決端口沖突的問題,并使Nginx成功啟動。
4. Nginx配置文件
4.1 Web前端資源目錄
假設我們的Web前端資源文件夾目錄長這樣:
/home/miqi/web/
├── first/ # 默認根目錄
│ ├── index.html # 默認首頁文件
│ ├── index.htm # 另一個默認首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
├── news/ # 對應 /category/180918.html
│ ├── 180918.html # 指定的HTML文件
│ ├── index.html # 其他可能的首頁文件
│ ├── index.htm # 其他可能的首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
├── about/ # 對應 /category/180917.html
│ ├── 180917.html # 指定的HTML文件
│ ├── index.html # 其他可能的首頁文件
│ ├── index.htm # 其他可能的首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
├── online/ # 對應 /category/180920.html
│ ├── 180920.html # 指定的HTML文件
│ ├── index.html # 其他可能的首頁文件
│ ├── index.htm # 其他可能的首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
├── product/ # 對應 /category/180919.html
│ ├── 180919.html # 指定的HTML文件
│ ├── index.html # 其他可能的首頁文件
│ ├── index.htm # 其他可能的首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
├── contact/ # 對應 /category/180921.html
│ ├── 180921.html # 指定的HTML文件
│ ├── index.html # 其他可能的首頁文件
│ ├── index.htm # 其他可能的首頁文件(如果有)
│ └── resources/ # 資源文件夾
│ ├── images/ # 圖片文件
│ ├── css/ # CSS 樣式表
│ └── js/ # JavaScript 文件
│
└── client/ # 對應 /category/180928.html├── 180928.html # 指定的HTML文件├── index.html # 其他可能的首頁文件├── index.htm # 其他可能的首頁文件(如果有)└── resources/ # 資源文件夾├── images/ # 圖片文件├── css/ # CSS 樣式表└── js/ # JavaScript 文件
4.2 Conf 配置文件
這時候就會有一個位于 /usr/local/nginx/conf/nginx.conf
的Nginx服務器核心配置文件,主要用于定義服務器的全局設置、HTTP和流模塊的配置參數(shù),以及對前端響應進行精細化控制。在其中是server
字段中
server {listen 8090;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root /home/miqi/web/first/;index index.html index.htm;}location /category/180918.html {alias /home/miqi/web/news/;index 180918.html index.html index.htm;}location /category/180917.html {alias /home/miqi/web/about/;index 180917.html index.html index.htm;} location /category/180920.html {alias /home/miqi/web/online/;index 180920.html index.html index.htm;} location /category/180919.html {alias /home/miqi/web/product/;index 180919.html index.html index.htm;} location /category/180921.html {alias /home/miqi/web/contact/;index 180921.html index.html index.htm;} location /category/180928.html {alias /home/miqi/web/client/;index 180928.html index.html index.htm;}
這段Nginx配置文件定義了一個虛擬服務器,監(jiān)聽在8090端口,并且為不同的URL路徑設置了不同的處理規(guī)則。以下是對每個部分的詳細解釋:
4.2.1 基本配置
server {listen 8090;server_name localhost;
listen 8090;
:指定服務器監(jiān)聽8090端口。server_name localhost;
:指定服務器名稱為localhost
,即只響應來自本地主機的請求。
4.2.2 默認根目錄
location / {root /home/miqi/web/first/;index index.html index.htm;
}
location / { ... }
:匹配根路徑(/
)的所有請求。root /home/miqi/web/first/;
:指定文檔根目錄為/home/miqi/web/first/
。這意味著所有對根路徑的請求都會從這個目錄中查找文件。index index.html index.htm;
:如果請求的是一個目錄,則嘗試返回index.html
或index.htm
文件作為默認首頁。
4.2.3 特定路徑處理
接下來的部分定義了多個特定路徑的處理規(guī)則,使用 alias
指令來指定這些路徑對應的物理目錄。
location /category/180918.html {alias /home/miqi/web/news/;index 180918.html index.html index.htm;
}
location /category/180918.html { ... }
:匹配/category/180918.html
路徑的請求。alias /home/miqi/web/news/;
:將請求映射到/home/miqi/web/news/
目錄下。注意,alias
會替換整個匹配部分(包括/category/180918.html
),所以實際訪問的是/home/miqi/web/news/180918.html
。index 180918.html index.html index.htm;
:指定優(yōu)先級最高的索引文件是180918.html
,其次是index.html
和index.htm
。
4.3 PID(進程標識符)
在Nginx的配置和管理中,nginx.conf
和 nginx.service
所涉及的PID(進程標識符)有不同的用途和配置方式。
4.3.1 nginx.conf 中的 PID
在 nginx.conf
文件中,你可以指定一個指令來定義 Nginx 主進程寫入其PID的位置。這個指令是 pid
。默認情況下,Nginx 的PID文件路徑可能取決于操作系統(tǒng)和安裝方式,但通常位于 /var/run/nginx.pid
或 /usr/local/nginx/logs/nginx.pid
。你可以在 nginx.conf
中通過如下方式自定義PID文件的位置:
pid /path/to/nginx.pid;
這條指令指定了Nginx主進程將它的進程ID寫入到哪個文件中。這對于控制Nginx進程(例如發(fā)送信號重啟或停止服務)非常有用。
4.3.2 nginx.service 中的 PID
nginx.service
文件是 systemd 服務單元文件的一部分,用于定義如何啟動和管理Nginx服務。在這個文件中,PIDFile選項用于告訴systemd在哪里找到服務的PID文件。這有助于systemd跟蹤服務的狀態(tài)和進程ID。如果Nginx使用默認的PID文件位置,則 nginx.service
可能包含如下行:
[Service]
PIDFile=/run/nginx.pid
這里假設PID文件位于 /run/nginx.pid
。如果你在 nginx.conf
中更改了PID文件的位置,確保同樣更新 nginx.service
文件中的 PIDFile
路徑以保持一致性,這樣systemd才能正確地管理和監(jiān)控Nginx服務。
總之,nginx.conf
中的 pid
指令用于指定Nginx應該將自己的PID寫入到哪個文件,而 nginx.service
中的 PIDFile
則告知systemd該去哪里查找此PID文件,以便進行服務管理。調(diào)整這兩個設置時,請確保它們指向相同的PID文件位置。