Linux 本地化离线安装 Nginx

说实话,在Linux系统下搞Nginx离线安装这事儿,我当年在帮甲方做系统的时候踩过不少坑。
不过摸索明白了之后,其实挺有意思的,尤其是那种完全不用联网,从零开始拼出来的感觉。

先说准备工作。
下载包这事儿,我一般习惯用虚拟机开个窗口先下好。
比如你要Nginx 1 .2 4 .0版本,直接去官网 http://nginx.org/download 下载 nginx-1 .2 4 .0.tar.gz。
依赖包就麻烦点了,不同系统得找对rpm或deb包。
我当年在OpenEuler系统上,习惯用dnf下载,把gcc、pcre-devel这些打包个压缩包,用网盘转过去就行。
别小看这步骤,网盘转U盘那速度,能让人抓狂。
我有个客户在西藏,那网速,下载个几M的包能等半天,最后直接买了个移动硬盘拷过去。

传输到离线环境时,得注意文件完整性。
我有个朋友第一次做这事儿,拷过去后发现openssl-devel包少了文件,编译直接崩了。
后来学乖了,用md5 sum做个校验,再拷一次。
把所有文件扔到 /opt/software 这种显眼位置,别整那些花里胡哨的目录。

安装依赖这步最磨人。
你想想,在没网络的环境下,编译Nginx时要是发现某个库版本不对,你得重新下载所有东西。
我建议先批量安装,用个脚本跑一遍make check,不通过的直接卸载重装。
比如用dnf install -y rpm -qf $(find /opt/software -type f | grep .rpm) 这种命令,把所有rpm包都装上,然后再一个个make check,通不过的单独处理。

编译配置时,./configure这步得格外小心。
我当年在配置SSL模块时,把with-http_ssl_module给漏了,结果make的时候才发现问题。
那会真是急得满头大汗,幸好有备份。
现在我会把configure的参数都列成文档,编译前再过一遍。
特别是那些带路径的参数,比如--prefix指定安装目录,千万别写错,不然后面启动不了还不知道问题出在哪。

环境变量这步其实挺简单,ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx就行。
但我有个习惯,喜欢把nginx命令直接加到PATH里,避免写完整路径。
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx,然后export PATH=$PATH:/usr/local/nginx/sbin,这样在任何地方都能直接用nginx命令。

启动验证时,systemd服务文件是关键。
我建议把ExecStart那行写成绝对路径,别写成./nginx,有时候软链接会出问题。
比如我习惯写成 /usr/local/nginx/sbin/nginx,这样系统总能找到。
而且[Service]那块,加上PrivateTmp=true能防止某些安全问题。

验证时别忘了检查防火墙。
我有个客户用的老防火墙,直接把8 0端口给封了,结果一直启动不了。
用firewall-cmd --permanent --zone=public --add-port=8 0/tcp重启后就好了。
浏览器访问IP时,记得看浏览器缓存,有时候直接输入http://1 2 7 .0.0.1 :8 0也能看到默认页面,别以为没启动。

配置文件这块,我习惯把自定义部分单独写个conf文件,然后在nginx.conf里include进来。
比如我有个site-available目录,放各种站点的配置文件,然后nginx.conf里写个include /etc/nginx/sites-enabled/;这样修改方便,也整洁。

注意事项里,我补充个细节。
编译时如果内存不够,make过程会卡死。
我有个方案是先用make -j1 慢慢编译,把大文件先挪走,最后再make install。
还有,日志路径默认是 /usr/local/nginx/logs/error.log,但有时候系统会把它改到别处,得留意。

总的来说,离线安装Nginx不是啥难事,关键在于细心。
你想想,全靠手动,一个参数错、一个依赖少,可能就得重装系统。
我当年帮个特别犟的客户做这事儿,折腾了两天,最后发现是gcc版本太老,编译不通过。
客户那表情,我现在想起来都替他尴尬。
不过,搞定了之后,那种成就感,也挺实在的。

如何安装Linux本地软件包 rpm和dpkg本地安装教程

CentOS/Fedora用RPM,Ubuntu/Debian用DPKG,RPM用rpm或dnf装,DPKG用dpkg或apt。
RPM安装看-h,dpkg安装先解决依赖。
系统架构要匹配,包来源要安全,RPM查rpm-ql,DPKG查dpkg-c。
CentOS/Fedora用dnf,Ubuntu/Debian用apt,步骤对了,软件包就装好了。

linux配置本地yum源安装

兄弟,聊到Linux配置这个话题,我真是感慨万千。
记得有一回,我那台老服务器上的CentOS系统,配置本地yum源那叫一个曲折。
当时我在想,这玩意儿怎么就这么难弄呢?
那是个2 01 8 年的事,我在北京的一家初创公司工作,我们那服务器是CentOS 7 一开始,我按照网上的教程,在/etc/yum.repos.d/下创建了一个.repo文件,名叫server.repo。
然后按照教程写配置,什么baseurl啊,mirrorlist啊,整得挺热闹。
可是一运行yum update,不是报错就是根本没反应。

我当时就急了,那会儿正好项目紧张,哪有时间慢慢排查。
我就想着,要不直接挂个本地ISO镜像试试?说干就干,我用mount -oloop /soft/rhel7 iso/mnt挂载了ISO镜像,然后在/mnt目录下创建了一个dvd目录。
然后回到/etc/yum.repos.d/,又整了个local.repo,把镜像里的东西copy过去了。

这一搞,嘿,还真的行。
我当时就乐了,看来本地镜像比网上的源稳定啊。
不过,那会儿我也学到了不少东西,比如配置yum源其实没那么复杂,关键是要动手实践。

再后来,我还搞过在虚拟机里配置yum源,那会儿是2 02 0年,我在上海的一家公司。
用的是Red Hat Enterprise Linux 6 ,配置过程跟CentOS 7 差不多,不过要注意,RHEL 6 的文件结构和软件包管理稍微有点区别。
那时候,我在虚拟机的/mnt目录下创建了dvd目录,然后直接把光驱里的ISO镜像挂载到那个目录,然后在/etc/yum.repos.d/下配置相应的repo文件,问题就解决了。

总之,配置yum源这事儿,关键就是动手实践,多试几次,慢慢就懂了。
不过,现在网络那么发达,很多现成的源配置文件网上都能找到,直接复制粘贴就能用,省了不少事。
嘿嘿,不说了,我这边还得继续工作呢,有空再聊。