CentOS7 Nginx源码编译安装 & systemd注册服务 & 添加环境变量

·  阅读 103

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战


==更推荐使用yum安装,yum安装方便简单省心,源码编译安装过程稍复杂==


安装步骤

从官网下载tar.gz包 (用wget更方便些,但是我正好本地有这个包所以直接用了) 使用ftp上传到/opt下 (一般非编译安装的软件都放到这个目录) 在这里插入图片描述 解压

tar -zxvf nginx-1.16.1.tar.gz
复制代码

安装依赖包

  • Nginx依赖于GCC编译环境:yum install gcc
  • Nginx的http模块需要使用pcre来解析正则表达式:yum install -y pcre-devel
  • 安装依赖的解压包:yum install -y zlib zlib-devel
  • ssl 功能需要 openssl 库,安装 openssl:yum install -y openssl openssl-devel
  • 一键安装上面四个依赖
    yum -y install gcc pcre-devel zlib zlib-devel openssl openssl-devel
    复制代码

切换目录

cd nginx-1.16.1
复制代码

执行配置

./configure
# 如果不想默认安装在/usr/local/nginx,可以配置自己的路径
./configure --prefix=/xxxxxxxxxx/nginx
复制代码

编译安装(默认安装在/usr/local/nginx)

make && make install
复制代码

安装成功

常用指令

先进入到nginx的安装位置的sbin目录下:cd /usr/local/nginx/sbin

测试配置文件:./nginx -t

启动:./nginx

停止:./nginx -s stop

重启服务:./nginx -s reload

查看进程:ps -ef | grep nginx

平滑重启:kill -HUP [Nginx主进程号(即ps命令查到的PID)]

如果在想在其它目录下直接执行以上命令,可以用以下任意方法

  • 带上路径,比如启动:/usr/local/nginx/sbin/nginx
  • 把nginx添加到环境变量,就可以从任意目录直接执行nginx指令,如启动:nginx
  • 或者把nginx注册到服务,就可以用系统服务工具来管理nginx。下边会说怎么注册

拓1:把Nginx注册为服务

注册为系统服务,可以用systemctl(centos7以下是service+chkconfig)来管理程序

比如设置开机自启等 (不过如果单纯为了开机自启的话,实现方式不止可以通过注册服务,也可以通过设置开机自动执行命令/usr/local/nginx/sbin/nginx的方式实现)

将程序注册为系统服务,最直观的感受是避免了每个程序的启动重启等指令不一而记忆混乱。

CentOS7采用systemd代替了传统的service+chkconfig方式来管理服务,systemd为系统的启动和管理提供了一套完整的解决方案。可参考阮一峰systemd讲解

步骤一 脚本

需要nginx服务脚本,官方脚本链接

注意路径:检查脚本中出现的路径,要改成自己安装的路径:默认路径nginx是/usr/local/nginx/sbin/nginx,conf是/usr/local/nginx/conf/nginx.conf 在这里插入图片描述 下载systemd脚本,修改为默认路径后,内容如下

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.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=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID # 这行也可以用这个代替 ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
复制代码

pid文件的路径可把我好找...最后在conf文件里找到了。默认是/usr/local/nginx/logs/nginx.pid

在这里插入图片描述 拓:一般程序的pid文件都是在var/run -> /run下,而且程序运行时生成,程序停止后消失

步骤二 启动 & 设置自启

最后执行systemctl status nginx,大功告成 在这里插入图片描述 可设置开机自启:systemctl enable nginx

拓2:添加环境变量

vim /etc/profile,添加export PATH=$PATH:/usr/local/nginx/sbin 在这里插入图片描述 执行source /etc/profile让修改后的配置信息立即生效、nginx -v成功输出,配置成功! 在这里插入图片描述

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改