CentOS下nginx的安裝流程
1 基礎配置
系統:CentOS Linux release 7.9.2009 (Core)
NginX版本:nginx-1.20.1
查看操作系統名稱:
cat /etc/centos-release
查看相關系統信息:
uname -a
uname --help 可以查看具體意義
2 安裝依賴庫
2.1 安裝g++編譯器
g++編譯器——用于編譯c++代碼。
解決報錯“error: c compiler cc is not found.”
g++編譯器可以處理c++,它也包含gcc編譯器,可以處理c代碼,安裝命令:
yum install -y gcc-c++
如果只用c的話,似乎可以只安裝gcc編譯器(用于編譯c代碼):
yum install -y gcc
2.2 安裝pcre庫
pcre庫——用C語言編寫的正則表達式函數庫。
解決報錯“error: the HTTP rewrite module requires the PCRE library.”
yum install -y pcre pcre-devel
2.3 安裝zlib庫
zlib庫——壓縮/解壓縮工具庫。
yum install -y zlib zlib-devel
2.4 安裝OpenSSL庫
OpenSSL庫——SSL協議庫。
解決報錯”error: SSL modules require the OpenSSL library.”
yum install -y openssl openssl-devel
3 安裝nginx
從開源nginx(它也有商業版)的官網獲取最新版本的nginx下載鏈接:
官網:https://nginx.org/
當前(2021-08)最新的Stable版本鏈接:https://nginx.org/download/nginx-1.20.1.tar.gz
3.1 獲取nginx包
進入一個目錄,這個目錄是用來存放安裝包,并進行前期配置、編譯的目錄,并不是實際的安裝目錄,執行下載命令:
wget https://nginx.org/download/nginx-1.20.1.tar.gz
如果提示沒有wget,需要先安裝wget:
yum install wget
3.2 解壓nginx文件
tar -zxvf nginx-1.20.1.tar.gz
-z : 使用 gzip 來壓縮和解壓文件
-x : 從存檔展開文件
-v : 詳細顯示處理的文件
-f : 指定需要處理的文件或設備,這個選項通常是必選的
3.3 配置nginx安裝選項
進入解壓完成的nginx-1.20.1目錄:
cd nginx-1.20.1
運行配置文件:
./configure --prefix=安裝路徑
配置文件可以默認,也可以按照需要附加參數,以此來選擇附帶的功能和模塊,建議至少通過“--prefix=安裝目錄”指定一個安裝目錄,否則默認安裝會把binary、modules、configure、pid、error、access、temp等各種文件分散到各個系統文件夾中,這里給出一個完整的參考示例:
./configure --prefix=/web/webserver/nginx-vod-hls --with-http_stub_status_module --with-http_gzip_static_module --with-http_gunzip_module --with-file-aio --with-threads --with-cc-opt="-O3" --with-http_ssl_module --with-openssl-opt=enable --with-http_flv_module --with-http_mp4_module --add-module=../nginx-vod-module-master --add-module=../nginx-rtmp-module-master
示例配置中添加了nginx-vod-module與nginx-rtmp-module兩個第三方模塊,它們是通過外部下載的,不是nginx的基本模塊,添加第三方模塊的流程可以參考3.4節,如果不需要第三方模塊可以去掉
--add-module=開頭的兩句配置
配置完成會顯示配置總結,指明nginx各個文件存放的位置:
Configuration summary
+using threads
+using system PCRE library
+using system OpenSSL library
+using system zlib librarynginx path prefix: "/web/webserver/nginx-vod-hls"
nginx binary file: "/web/webserver/nginx-vod-hls/sbin/nginx"
nginx modules path: "/web/webserver/nginx-vod-hls/modules"
nginx configuration prefix: "/web/webserver/nginx-vod-hls/conf"
nginx configuration file: "/web/webserver/nginx-vod-hls/conf/nginx.conf"
nginx pid file: "/web/webserver/nginx-vod-hls/logs/nginx.pid"
nginx error log file: "/web/webserver/nginx-vod-hls/logs/error.log"
nginx http access log file: "/web/webserver/nginx-vod-hls/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
關于文件路徑的一些解釋:
nginx path prefix: 安裝路徑
nginx binary file: 二進制文件路徑
nginx modules path: 模塊存放路徑
nginx configuration prefix: 配置文件路徑
nginx configuration file: 配置文件
nginx pid file: 進程文件
nginx error log file: 報錯日志文件
nginx http access log file: 訪問日志文件
…… ……
nginx http xxxx temporary files: 各種臨時文件
3.4 添加第三方模塊
添加第三方模塊進行共同編譯需要指定--add-module選項,在該前綴后跟上第三方模塊的路徑(示例中是相對路徑../nginx-vod-module-master,根據實際情況可能有所不同)。
nginx-vod-module下載地址:https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz
nginx-rtmp-module下載地址:https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz
與安裝nginx一樣,進入相應的目錄(示例中把模塊與nginx源文件夾放在同一層級),進行安裝:
獲取第三方模塊nginx-vod-module
wget https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz
解壓文件包
tar -zxvf 1.28.tar.gz
重命名文件夾(只為了方便使用)
mv /.../1.28 /.../nginx-vod-module-master
之后再按照3.3節中的方法在nginx的./configure配置過程中加上--add-module選項,并指定對應的模塊路徑即可。
這里注意是在nginx的配置過程中進行指定,而不是進入模塊nginx-vod-module的目錄去配置。
./configure ... ... --add-module=../nginx-vod-module-master
在配置過程中,還可以附加上相應的gcc編譯命令:
CFLAGS="-Wno-unused-but-set-variable" ./configure ... ...
3.5 編譯nginx
按照之前指定的配置來編譯nginx,執行命令:
make
3.6 安裝nginx
安裝時會將nginx安裝到之前指定的安裝路徑,執行命令:
make install
4 運行nginx服務
安裝完成即可啟動nginx服務,注意需要指定二進制文件的路徑,或者進入二進制文件所在的目錄,執行不帶參數的nginx命令即可:
./nginx
可以用以下命令查看是否有nginx進程在運行:
ps -ef | grep nginx
直接關閉nginx服務:
./nginx -s stop
優雅地關閉nginx服務(nginx 主進程會等待 worker 進程完成當前用戶請求的處理):
./nginx -s quit
驗證nginx配置文件是否正確,用于修改conf配置文件后:
./nginx -t
重載nginx服務,用于修改conf配置文件后重載:
./nginx -s reload
重新打開日志文件:(刷新日志文件)
./nginx -s reopen
使用指定的配置文件運行nginx:
./nginx -c filename
5 訪問nginx網址
如果是在本機運行,可以訪問127.0.0.1或者localhost,默認80端口:
http://127.0.0.1/
http://localhost/
如果是在服務器運行,可以訪問服務器ip,默認80端口(可省略):
http://ServerIP:80/
如果顯示nginx歡迎界面則表示nginx運行成功。
6 啟動和運行可能遇到的問題
pid錯誤
描述:
nginx: [error] open() "/xxxx/nginx.pid" failed.
原因:
進程占用導致,一個相同nginx進程正在運行。
解決:
結束舊的進程后,新進程才能啟動。關閉nginx:./nginx -s stop
直接關閉進程:kill -9 processid
無法訪問nginx網址
描述:
配置都正確,但nginx網址無法訪問。
原因:
可能是防火墻沒有配置需要開放的端口。
解決:
配置防火墻開放端口號。CentOS 7 默認的防火墻是firewall:
查看防火墻狀態:
firewall-cmd --state查看開放的端口:
firewall-cmd --list-ports
firewall-cmd --list-all單獨查看8081端口:
firewall-cmd --zone=public --query-port=8081/tcp開放8081端口:
firewall-cmd --zone=public --add-port=8081/tcp --permanent關閉8081端口:
firewall-cmd --zone=public --remove-port=8081/tcp --permanent–zone #作用域
–add-port=8081/tcp #添加端口,格式為:端口/通訊協議
–permanent #永久生效,沒有此參數重啟后失效端口操作完成,都需要重載防火墻才生效:
firewall-cmd --reloadCentOS 6 默認的防火墻是iptables
開放端口(修改iptables文件)
vim /etc/sysconfig/iptables
添加以下信息(使用“端口號”開放單個端口,使用“端口號:端口號”,可以開放范圍內的所有端口)
-A INPUT -m state -state NEW -m tcp -p tcp -dport 端口號 -j ACCEPT重啟防火墻即可生效
service iptables restart打開或關閉防火墻
chkconfig iptables on/off ——永久
service iptables start/stop ——臨時,重啟系統后失效

浙公網安備 33010602011771號