Linux下NGINX的安装后的优雅启动法
# 老规矩,上背景
近期安排了个腾讯家的新鸡(4C4G),便需要对此鸡进行各种环境的配置,首先对于必不可少的神器NG(NGINX,后面简称NG)是肯定要搞一手的,那么此时对于这些工具有强烈的版本使用洁癖的我来说,既不想去给人家去测试最新版的功能稳定bug,又不想用old school派版本,就是要个恰到好处的1.28.x的版本,能享受到大量新版的特性和性能优化后的版本,也减少了新版暴雷的情况,那肯定代价也是有的,那就是折腾。所以需要自行安装导入想要的那个版本,这时候就出现了下面的抉择问题:
if
- 使用鸡子内自带的yum、dnf、apt等工具管理器去下载安装时,是可以使用到 systemctl 系统级的应用管理优雅化启动,但是没法装上指定的那个版本(或许配置指定的第三方源也可以?未验证,后面的同学可以去研究看看)
else if
- 使用自己导入的Linux包去安装时,那么就少了 systemctl 系统级的应用管理优雅化启动法
于是便往else if的方向靠拢去研究了一番,随看到了: 1、OpenCloudOS Server 9 安装 Nginx 完整指南 2、Linux安装nginx 3、LINUX安装nginx详细步骤 4、yum安装nginx
# 开始操作
# 一、先下载好自己需要的NG版本
在NG Release中找到自己想要的版本,下载好,并上传至机子目录下,然后开始:
下载的这一步可以本地下载好,比如前往NG Release下载好之后再上传至鸡上的目录 也可以直接在机子上进入到download或其他目录,然后通过wget来把NG包down下来,比如: 1)先进入 /home/download 目录下:cd /home/download 2)将nginx-1.29.8下载至上述目录下:wget https://github.com/nginx/nginx/releases/download/release-1.29.8/nginx-1.29.8.tar.gz
[!WARNING] 上述步骤2可能会在部分机子上出现拉取超时或无法正常拉取,此时可以转至官方源尝试,如:http://nginx.org/download/nginx-1.29.8.tar.gz
完成此步骤后,在/home/download目录下将会存在一个「nginx-1.29.8.tar.gz」文件,那么接下来就
# 二、安装所需依赖
保持在当前目录不需要任何切换,直接执行下面依赖安装命令:
dnf install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 若没有dnf工具下载管理器,可以用yum
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
上述依赖安装完成后,在当前目录下再继续执行解压前面步骤一下载的NG文件压缩包:
# 解压至当前目录下的nginx-1.29.8文件夹中
tar -zxvf nginx-1.29.8.tar.gz
# 进入nginx-1.29.8文件夹内
cd nginx-1.29.8
# 三、编译并安装到 /usr/local/nginx
# 配置NG打包(编译)的配置项
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module
# 开始编译
make -j$(nproc)
# 安装NG
make install
此时,所有的安装工作都已经基本完成,那么接下来便可以👇👇👇
# 四、启动NG(如果要使用 systemctl 来进行系统层的管理,可以忽略该启动步骤,直接进入第五步来优雅化启动法):
# 进入NG安装目录,并执行NG即可启动
cd /usr/local/nginx
# 启动该目录下的nginx文件
./nginx
[!TIP] 至此,若无需后续的 systemctl 来进行系统进程管理使用,那么就完事了,可以浏览器打开地址栏输入当前机子的IP,即可访问看到如下图所示:
若需要优雅化启动,那么接下来看👇👇👇
# 五、配置NG至systemd服务自启动
复制下面命令直接回车即可:
cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=Nginx HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
那么此时就可以直接来加载并启用NG:
# 重载 systemd 配置
systemctl daemon-reload
# 启动 Nginx
systemctl start nginx.service
# 设置开机自动启动
systemctl enable nginx.service
# 查看运行状态
systemctl status nginx.service
OK,完事~