目錄
- 一、環境檢查
- 1.1 必要環境檢查
- 1.2 在線安裝(有網絡)
- 1.3 離線安裝(無網絡)
- 二、下載Nginx
- 2.1 在線下載
- 2.2 離線下載
- 三、安裝Nginx
- 四、開機自啟服務
- 五、開放防火墻端口
- 六、常用命令
一、環境檢查
1.1 必要環境檢查
# 查看 gcc 版本
[root@openeuler ~]# gcc --version
# 查看 pcre 版本
[root@openeuler ~]# pcre-config --version
# 查看 zlib 版本
[root@openeuler ~]# dnf list installed | grep zlib
# 查看 openssl 版本
[root@openeuler ~]# openssl version
# 查看 gcc pcre-config openssl 位置
[root@openeuler ~]# readlink -f $(which gcc pcre-config openssl)
1.2 在線安裝(有網絡)
[root@openeuler ~]# sudo dnf install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
1.3 離線安裝(無網絡)
1.3.1 軟件包下載
openEuler軟件中心:https://easysoftware.openeuler.org/zh/rpm
華為開源鏡像站:http://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/everything/x86_64/Packages/
華中科技大學鏡像站:https://mirrors.hust.edu.cn/openeuler/openEuler-22.03-LTS-SP4/everything/x86_64/Packages/
離線包下載:openEuler 22.03 安裝 Nginx 所需的依賴包
1.3.2 軟件包安裝
# 切換到 RPM 包所在目錄,假設 RPM 包存放在 /home/rpm_packages 目錄下
[root@openeuler ~]# cd /home/rpm_packages
# 正常安裝命令
[root@openeuler rpm_packages]# sudo rpm -ivh *.rpm --nodeps
# 強制安裝命令
# 重要事項:沒把握的話,千萬不要用下面這個命令,這個命令會忽略依賴和兼容性,可能會導致基礎組件被卸載掉。
[root@openeuler rpm_packages]# sudo rpm -Uvh *.rpm --nodeps --force
小技巧:可以提前在有網絡環境下下載安裝包,移動到無網絡環境
yumdownloader --resolve gcc-c++
yumdownloader --resolve pcre pcre-devel
yumdownloader --resolve zlib zlib-devel
yumdownloader --resolve openssl openssl-devel
二、下載Nginx
2.1 在線下載
# 創建安裝目錄
[root@openeuler ~]# mkdir /mnt/nginx
[root@openeuler ~]# cd /mnt/nginx/
# 在線下載安裝包
[root@openeuler nginx]# wget https://nginx.org/download/nginx-1.28.0.tar.gz
2.2 離線下載
下載地址(Stable version):https://nginx.org/en/download.html
上傳到 /mnt/nginx 目錄下
三、安裝Nginx
# 進入安裝目錄
[root@openeuler ~]# cd /mnt/nginx/# 解壓安裝包
[root@openeuler nginx]# tar -zxvf nginx-1.28.0.tar.gz# 進入解壓目錄
[root@openeuler nginx]# cd nginx-1.28.0/# 編譯并安裝,Nginx 默認安裝在 /usr/local/nginx 目錄下
[root@openeuler nginx-1.28.0]# ./configure 或者 ./configure --prefix=/mnt/nginx/nginx1.28.0
[root@openeuler nginx-1.28.0]# make
[root@openeuler nginx-1.28.0]# sudo make install# 啟動 Nginx
[root@openeuler nginx-1.28.0]# sudo /usr/local/nginx/sbin/nginx
#[root@openeuler nginx-1.28.0]# sudo /mnt/nginx/nginx1.28.0/sbin/nginx# 檢查是否運行
[root@openeuler nginx-1.28.0]# curl http://localhost# 關閉 Nginx
[root@openeuler nginx-1.28.0]# sudo /usr/local/nginx/sbin/nginx -s stop
#[root@openeuler nginx-1.28.0]# sudo /mnt/nginx/nginx1.28.0/sbin/nginx -s stop
自定義配置(不推薦)
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
四、開機自啟服務
4.1 配置SELinux安全上下文(自定義路徑需要用到)
注意:如果不配置SELinux安全上下文,后續啟動系統腳本時報錯【code=exited, status=203/EXEC】
# 恢復默認上下文(針對自定義路徑)
[root@openeuler ~]# sudo semanage fcontext -a -t bin_t "/mnt/nginx/nginx1.28.0/sbin(/.*)?"
[root@openeuler ~]# sudo semanage fcontext -a -t etc_t "/mnt/nginx/nginx1.28.0/conf(/.*)?"
[root@openeuler ~]# sudo restorecon -Rv /mnt/nginx/
# 驗證標簽
[root@openeuler ~]# ls -Zd /mnt/nginx/nginx1.28.0/sbin/nginx
# 應顯示類似:system_u:object_r:bin_t:s0
4.2 配置開機自啟腳本
# 創建自啟動腳本
[root@openeuler ~]# sudo vi /etc/systemd/system/nginx.service# =============================================================================
# 復制粘貼以下內容: /usr/local/nginx/sbin 需要按照實際情況修改成自己的地址
[Unit]
Description=Nginx HTTP Server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target
# =============================================================================
# 復制粘貼以下內容: /mnt/nginx/nginx1.28.0/sbin需要按照實際情況修改成自己的地址
[Unit]
Description=Nginx HTTP Server
After=network.target[Service]
Type=forking
ExecStart=/mnt/nginx/nginx1.28.0/sbin/nginx
ExecReload=/mnt/nginx/nginx1.28.0/sbin/nginx -s reload
ExecStop=/mnt/nginx/nginx1.28.0/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target
# =============================================================================# 注意:要保證 nginx 后臺服務未啟動
# 設置開機自啟
[root@openeuler ~]# systemctl daemon-reload
[root@openeuler ~]# sudo systemctl enable nginx
# 啟動Nginx服務
[root@openeuler ~]# sudo systemctl start nginx
# 查看服務狀態
[root@openeuler ~]# sudo systemctl status nginx
五、開放防火墻端口
# 查詢端口是否開放
[root@openeuler ~]# sudo firewall-cmd --query-port=80/tcp
# 開放端口(TCP協議)
[root@openeuler ~]# sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新加載防火墻規則
[root@openeuler ~]# sudo firewall-cmd --reload
# 驗證端口是否開放
[root@openeuler ~]# sudo firewall-cmd --zone=public --list-ports
# 查看所有端口
[root@centosServer ~]# sudo netstat -nlpt
六、常用命令
# 啟動 nginx 服務
systemctl start nginx.service
# 查看服務狀態
systemctl status nginx.service
# 重啟服務
systemctl restart nginx.service
# 停止服務
systemctl stop nginx.service
# 開機自動啟動
systemctl enable nginx.service
# 取消開機自動啟動
systemctl disabled nginx.service
# 查看進程
ps -ef | grep nginx