【Linux】nginx 离线安装
资源下载
nginx-1.20.1.tar.gz(下载链接中包含gcc、g++、pcre、libtool、nginx)
链接:https://pan.baidu.com/s/1Niv33uZa4gj0viYFrnBTBQ
提取码:0b91
安装步骤
安装gcc
rpm -Uvh *.rpm --nodeps --force结果
[root@doris54 gcc]# rpm -Uvh *.rpm --nodeps --forcewarning: cpp-4.8.5-16.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPreparing... ################################# [100%]Updating / installing... 1:zlib-1.2.7-17.el7 ################################# [ 6%] 2:mpfr-3.1.1-4.el7 ################################# [ 13%] 3:libmpc-1.0.1-3.el7 ################################# [ 19%] 4:openssl-libs-1:1.0.2k-8.el7 ################################# [ 25%] 5:cpp-4.8.5-16.el7 ################################# [ 31%] 6:zlib-devel-1.2.7-17.el7 ################################# [ 38%] 7:kernel-headers-3.10.0-693.el7 ################################# [ 44%] 8:glibc-headers-2.17-196.el7 ################################# [ 50%] 9:glibc-devel-2.17-196.el7 ################################# [ 56%] 10:gcc-4.8.5-16.el7 ################################# [ 63%] 11:openssl-devel-1:1.0.2k-8.el7 ################################# [ 69%] 12:openssl-1:1.0.2k-8.el7 ################################# [ 75%] 13:openssl098e-0.9.8e-29.el7.centos.################################# [ 81%]Cleaning up / removing... 14:openssl-1:1.0.2k-19.el7 ################################# [ 88%] 15:openssl-libs-1:1.0.2k-19.el7 ################################# [ 94%] 16:zlib-1.2.7-18.el7 ################################# [100%][root@doris54 gcc]#安装g++
rpm -Uvh *.rpm --nodeps --force结果
[root@doris54 gcc-c++]# rpm -Uvh *.rpm --nodeps --forcewarning: autogen-libopts-5.18-5.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPreparing... ################################# [100%]Updating / installing... 1:pkgconfig-1:0.27.1-4.el7 ################################# [ 5%] 2:zlib-1.2.7-17.el7 ################################# [ 10%] 3:libcom_err-1.42.9-10.el7 ################################# [ 15%] 4:openssl-libs-1:1.0.2k-8.el7 ################################# [ 20%] 5:ntpdate-4.2.6p5-25.el7.centos.2 ################################# [ 25%] 6:zlib-devel-1.2.7-17.el7 ################################# [ 30%] 7:libsepol-devel-2.5-6.el7 ################################# [ 35%] 8:libselinux-devel-2.5-11.el7 ################################# [ 40%] 9:libverto-devel-0.2.5-4.el7 ################################# [ 45%] 10:libstdc++-devel-4.8.5-16.el7 ################################# [ 50%] 11:keyutils-libs-devel-1.5.8-3.el7 ################################# [ 55%] 12:krb5-devel-1.15.1-8.el7 ################################# [ 60%] 13:autogen-libopts-5.18-5.el7 ################################# [ 65%] 14:ntp-4.2.6p5-25.el7.centos.2 ################################# [ 70%] 15:openssl-devel-1:1.0.2k-8.el7 ################################# [ 75%] 16:gcc-c++-4.8.5-16.el7 ################################# [ 80%] 17:openssl-1:1.0.2k-8.el7 ################################# [ 85%] 18:openssl098e-0.9.8e-29.el7.centos.################################# [ 90%] 19:tcl-1:8.5.13-8.el7 ################################# [ 95%]Cleaning up / removing... 20:libcom_err-1.42.9-17.el7 ################################# [100%][root@doris54 gcc-c++]#验证gcc、g++是否安装成功,执行命令:
gcc -v结果
[root@doris54 gcc-c++]# gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapperTarget: x86_64-redhat-linuxConfigured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linuxThread model: posixgcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)[root@doris54 gcc-c++]#**安装PCRE,先把pcre解压出来,tar -zxvf pcre-8.35.tar.gz,解压出来之后就要开始安装了
cd pcre-8.35
./configure
make
make install安装libtool,先解压libtool:tar -zxvf libtool-2.4.2.tar.gz,解压出来之后就要开始安装了
cd libtool-2.4.2
./configure
make
make install安装nginx,先把nginx解压出来 tar -zxvf nginx-1.20.1.tar.gz,解压出来之后就要开始安装了**
cd nginx-1.20.1
./configure
make
make install启动nginx: nginx安装目录地址 -c nginx配置文件地址 ,安装后的路径好像会被变到/usr/local里面
| 常用命令 | 操作 |
|---|---|
| /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf | 启动nginx |
| /usr/local/nginx/sbin/nginx -s stop | 停止nginx |
| /usr/local/nginx/sbin/nginx -s reload | 重启nginx |
| netstat -tunlp | 查看端口占用 |
| netstat -tunlp | grep |
nginx的配置文件为安装目录下的nginx目录中的nginx.conf,默认端口为80,启动后出现如下页面即为启动成功
开机自启
编写自启服务
vim /usr/lib/systemd/system/nginx.service[Unit]Description=nginxAfter=network.target
[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopPrivateTmp=true
[Install]WantedBy=multi-user.target设置nginx命令
[root@node1 sbin]# vi ~/.bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi
# User specific environment and startup programs# 在原有的PATH 后加 :/usr/local/nginx/sbinPATH={mathJaxContainer[0]}HOME/bin:/usr/local/nginx/sbin
export PATH[root@node1 sbin]# source ~/.bash_profile[root@node1 sbin]# nginx -vnginx version: nginx/1.18.0设置开机自启
root@node1 ~]# systemctl enable --now nginx.service[root@node1 ~]# ps -ef |grep nginxroot 879 1 0 16:17 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnobody 881 879 0 16:17 ? 00:00:00 nginx: worker processroot 1738 1645 0 16:20 pts/0 00:00:00 grep --color=auto nginx[root@node1 ~]#启动命令
# nginx startsudo systemctl start nginx# nginx stopsudo systemctl stop nginx# nginx reloadsudo systemctl reload nginx# nginx statussudo systemctl status nginx银河麒麟 V10 SP3 aarch64 离线安装(RPM 方式)
适用环境:银河麒麟 V10 SP3 aarch64(ARM 鲲鹏架构),服务器无外网,需离线安装 nginx。
为什么不能用 x86_64 的 RPM 包?
nginx 官方 CentOS 的 aarch64 rpm 包不要直接装 ky10,glibc、openssl 版本不一样,大概率装不上、启动异常。必须用麒麟官方适配的 ky10 版本包。
必下核心包
以下三个包版本号必须完全一致(都是 p12),不能混用不同补丁版本:
| 包名 | 架构 | 说明 |
|---|---|---|
nginx-1.21.5-5.p12.ky10.aarch64.rpm | aarch64 | 主程序,必选 |
nginx-filesystem-1.21.5-5.p12.ky10.noarch.rpm | noarch | 目录、配置文件结构,必选 |
nginx-all-modules-1.21.5-5.p12.ky10.noarch.rpm | noarch | 全套模块(stream、ssl、http2 等),生产推荐带上 |
可选(非必须):nginx-help-1.21.5-5.p12.ky10.noarch.rpm 帮助文档,服务器可以不下载。
常见报错:依赖缺失
直接执行以下命令会报依赖错误:
rpm -ivh nginx-filesystem-1.21.5-5.p12.ky10.noarch.rpm nginx-1.21.5-5.p12.ky10.aarch64.rpm nginx-all-modules-1.21.5-5.p12.ky10.noarch.rpm错误信息:
libprofiler.so.0()被 nginx 需要nginx-mod-http-image-filter、nginx-mod-http-perl、nginx-mod-http-xslt-filter、nginx-mod-mail、nginx-mod-stream被 nginx-all-modules 需要
报错原因:nginx-all-modules 是元包,依赖所有单独模块包;还缺 libprofiler.so.0 这个系统依赖包(来自 gperftools-libs)。
解决方案
方案 A:一次性装所有 RPM(本地包齐全时)
把目录里所有 nginx 相关 RPM 一次性装进去:
rpm -ivh \ nginx-filesystem-1.21.5-5.p12.ky10.noarch.rpm \ nginx-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-all-modules-1.21.5-5.p12.ky10.noarch.rpm \ nginx-mod-http-image-filter-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-mod-http-perl-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-mod-http-xslt-filter-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-mod-mail-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-mod-stream-1.21.5-5.p12.ky10.aarch64.rpm执行完上面这条,如果还报 libprofiler.so.0 缺失,需要额外安装 gperftools-libs:
# 去麒麟官方更新站下载https://update.cs2c.com.cn/NS/V10/V10SP3-2403/os/adv/lic/updates/aarch64/Packages/gperftools-libs-*.ky10.aarch64.rpm
# 安装rpm -ivh gperftools-libs-*.rpm方案 B:精简安装(不装 all-modules,按需装模块)
如果不需要全套模块,不要安装 nginx-all-modules,只装主程序 + filesystem + 需要的模块(大多数场景只需要 stream):
# 只装基础 nginx + stream 模块(常用 TCP 反向代理)rpm -ivh \ nginx-filesystem-1.21.5-5.p12.ky10.noarch.rpm \ nginx-1.21.5-5.p12.ky10.aarch64.rpm \ nginx-mod-stream-1.21.5-5.p12.ky10.aarch64.rpm⚠️
libprofiler.so.0这个依赖是 nginx 主包本身的依赖,不是模块带来的,绕不开,仍需提前下好gperftools-libs。
方案 C:本地 yum 自动解决依赖(机器可连外网时)
把当前目录作为 yum 本地源,自动处理依赖:
# 先创建仓库元数据createrepo .
# 使用本地源安装yum localinstall *.rpm -y前提:机器能访问麒麟在线源,yum 会自动拉取缺失的
gperftools-libs。纯断网离线环境不行,必须提前下好。
安装包下载地址
银河麒麟官方更新站(V10 SP3 aarch64):
https://update.cs2c.com.cn/NS/V10/V10SP3-2403/os/adv/lic/updates/aarch64/Packages/在该目录下搜索 nginx,下载所需 RPM 包。
安装后配置与验证
1. 查看版本,确认识别成功
nginx -v # 只看版本nginx -V # 看编译参数、已加载的模块(检查 stream 等模块是否在)2. 查看 nginx 服务状态 & 启停
麒麟 V10 由 systemd 管理:
# 查看状态systemctl status nginx
# 启动systemctl start nginx
# 设置开机自启(生产必做)systemctl enable nginx
# 重启(后续改配置用)systemctl restart nginx
# 重载配置(不中断业务,改完配置优先用这个)systemctl reload nginx3. 检查配置文件语法(改配置前一定要跑)
nginx -t输出 test is successful 且显示 /etc/nginx/nginx.conf、/etc/nginx/conf.d/ 路径即正常。
4. 本地访问测试
curl 127.0.0.1能返回 nginx 默认欢迎页面 html,说明 web 服务正常。
5. 防火墙放行(外部访问需要)
银河麒麟 V10 默认 firewalld:
# 放行 80 端口firewall-cmd --add-service=http --permanentfirewall-cmd --reload
# HTTPS 443 端口firewall-cmd --add-service=https --permanent && firewall-cmd --reload6. 常用目录备忘
| 用途 | 路径 |
|---|---|
| 配置文件 | /etc/nginx/ |
| 网页根目录 | /usr/share/nginx/html/ |
| 日志文件 | /var/log/nginx/(access.log、error.log) |
| pid 文件 | /run/nginx.pid |
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
小王的博客














