1、下载版本
其中Mainline version 为开发版、Stable version为稳定版、Legacy versions为历史版本, 我们选择稳定版复制此链接
# cd /mydata/
# wget http://nginx.org/download/nginx-1.16.0.tar.gz
最后出现:[1032345/1032345] 下载完整
2、安装依赖
# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*
//下载并解压pcre-8.42.zip (上面已经包含了 pcre*,这里也可以不安装)
# cd /mydata
# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip
//解压到 /usr/local/src/
# unzip pcre-8.42.zip -d /usr/local/src/ //-d参数表示按原名称创建一个包
3、创建nginx用户
// 创建nginx用户,
# useradd -M -s /sbin/nologin nginx 创建用户nginx,并且没有登录权限 -M 不创建家目录
# cat /etc/passwd
# cat /etc/group
4、编辑配置项生成安装文件 Makefile
# cd /mydata
# tar -zxvf nginx-1.16.0.tar.gz //解压nginx
# cd nginx-1.16.0/
# ls -al
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42
--prefix=/usr/local/nginx 定义安装路径
--user=nginx 指定用户
--group=nginx 指定用户组
--with-pcre=/usr/local/src/pcre-8.42 #这个是可选项,和上面解压到的路径一致,如果yum安装了依赖包这里也可以不用(例如上面已经安装了pcre*系列)
最后出现如图:
编辑完成后:再次 # ls -al ,此时就多了一个 Makefile的文件 (还有一个objs目录,),如果出错,解决错误后将这两个删除再重新执行即可。
5、编辑安装nginx
# make
出现如下:
...
objs/ngx_modules.o \
-ldl -lpthread -lcrypt /usr/local/src/pcre-8.42/.libs/libpcre.a -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/mydata/nginx-1.16.0'
//继续
# make install
出现如下:
...
test -d '/usr/local/nginx/logs' \
|| mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
|| cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
|| mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory `/mydata/nginx-1.16.0'
OK 完成
最后 在 /usr/local/下有nginx目录生成。并且里面包含以下几个目录
说明已经成功安装了 nginx
其中:
/usr/local/nginx/ 为nginx的安装目录
/usr/local/nginx/conf 为nginx的配置文件目录
/usr/local/nginx/html 为nginx的默认站点目录
/usr/local/nginx/sbin 为nginx的可执行目录
/usr/local/nginx/logs 为nginx的日志目录
6、Nginx的启动与停止
nginx安装完成后启动文件为/usr/local/nginx/sbins/nginx ,此为一个二进制文件。在没有设置启动文件和环境变量之前,只能通过此文件进行启动、停止等
(1)启动nginx
启动nginx
# /usr/local/nginx/sbin/nginx //启动nginx
浏览器访问:http://106.12.2.195/ 出现
OK默认站点可以方法,nginx服务已经启动
(2)查看nginx的运行状态
查看nginx的运行状态
# ps aux | grep nginx //ps aux 列出系统所有的进程
出现如下:
root 3228 0.0 0.0 46088 1136 ? Ss 01:21 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 3229 0.0 0.0 48628 1996 ? S 01:21 0:00 nginx: worker process
root 3231 0.0 0.0 112708 980 pts/0 S+ 01:21 0:00 grep --color=auto nginx
说明启动成功
其中第一行为nginx的主进程(master) 进程PID为3228
查看端口占用情况
# netstat -tlnp
出现
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3228/nginx: master
也说明nginx正常工作
(3)停止nginx
# /usr/local/nginx/sbin/nginx -s top //强制停止 立即停止
# /usr/local/nginx/sbin/nginx -s quit //从容停止,在完成当前任务后再停止
# kill 3228 //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx //杀死进程平滑停止
(4)重启nginx
# /usr/local/nginx/sbin/nginx -s reload //平滑重启,必须在nginx已经启动的状态下才能执行。
7、添加环境变量
到此,我们每次启动nginx,必须使用/usr/local/nginx/sbin/nginx 输入太繁琐,把这个nginx加入到环境变量里,在任何地方通过nginx 就可以直接启动了。
# /usr/local/nginx/sbin/nginx -t #检查nginx配置文件的语法是否正确
出现:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
// 编辑添加到环境变量
# vim /etc/profile #添加环境变量
把 export PATH=$PATH:/usr/local/nginx/sbin 添加到此文件的最后
# source /etc/profile //立即生效
查看
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin 添加进来了
# nginx 直接启动
# netstat -antup|grep nginx //查看端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27452/nginx: master
OK nginx服务已经运行了
测试:
//现在重启系统
#shutdown -r now
#[root@localhost ~]# netstat -antup | grep nginx //下面什么都没有,站点http://106.12.2.195/也无法访问
[root@localhost ~]# nginx //使用我们设置的好的环境变量启动nginx,现在http://106.12.2.195/可以访问了
#[root@localhost ~]# netstat -antup | grep nginx 可以出现端口信息了
8、设置可执行文件、加入开启重启
(更多请见 https://blog.csdn.net/fsx2550553488/article/details/81039796)
# vim /etc/init.d/nginx
# ======================== 粘贴内容 start ========================
#!/bin/bash
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
#加载函数库
. /etc/rc.d/init.d/functions
#加载网络配置文件
. /etc/sysconfig/network
#检查网络是否启动
[[ "$NETWORKING" = "no" ]] && exit 0
#定义变量
nginx=/usr/local/nginx/sbin/nginx
prog=$(basename $nginx)
NGINX_CONFIG_NAME="/usr/local/nginx/conf/nginx.conf"
#LOCKFILE="/var/lock/nginx/nginx.lock"
#测试nginx主配置文件是否有语法错误
configtest() {
$nginx -t
}
#启动函数
start() {
configtest
#-x:检测nginx的二进制系统文件是否存在,如果不存在直接退出
test -x $nginx || exit 5
#-f:检测nginx的主配置文件是否存在,如果不存在直接退出
test -f $NGINX_CONFIG_NAME || exit 6
#如果不存在pid目录、lock目录,则创建
mkdir -p /var/run/nginx
mkdir -p /var/lock/nginx
#输出提示语句,表明nginx服务即将启动
echo -n $"Starting $prog :"
#使用nginx二进制系统文件启动nginx服务
daemon $nginx -c $NGINX_CONFIG_NAME
#获取nginx启动的返回状态值,存入变量retval
retval=$?
echo
#如果返回状态值为0.表示启动成功,并创建锁文件
test $retval -eq 0 && touch $LOCKFILE
return $retval
}
#停止函数
stop() {
#输出提示语句,表示nginx服务即将关闭
echo "Stoping $prog :"
#使用functions文件中定义的killproc函数,杀死nginx对应的进程
killproc $prog -QUIT
#获取nginx关闭的返回状态值,存入变量retval(就是上一条命令执行是否成功的值)
retval=$?
echo
#如果返回状态值为0表示关闭成功,删除锁文件
[ $retval -eq 0 ] && rm -f $LOCKFILE
return $retval
}
#重启函数
restart() {
configtest || return $?
stop
sleep 3
start
}
#热加载
reload() {
configtest || return $?
echo -n $"Reloading $prog :"
#同stop,参数不同,这个表示重启进程
killproc $nginx -HUP
retval=$?
echo
}
#强制重启
force_reload() {
restart
}
#状态查询
rt_status() {
#functions中的status函数,获取对应进程的状态
status $prog
#如果获取状态为runing,则显示配置文件检测结果,更加细化
[ $? -eq 0 ] && echo -n `configtest`
}
case $1 in
status)
rt_status
;;
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
force_reload)
force_reload
;;
*)
#如果输入的$1不是上面的,则输出提示信息
echo "Usage:$prog {start|stop|status|reload|force_reload|restart}"
exit 1
;;
esac
# ======================== 粘贴内容 end =========================
// 赋予脚本执行权限。
# chmod +x /etc/init.d/nginx
加入开机重启
// 添加至服务管理列表,设置开机自启。
# chkconfig --add nginx
# chkconfig nginx on
// 启动nginx
# service nginx start (nginx关闭状态下才可以)
// 重启服务器测试:
# shutdown -r now
OK 开机重启完成。
到此,整个安装完成
附:nginx常用命令
//初始安装后没有加载环境变量前只能使用
# /usr/local/nginx/sbin/nginx 来启动服务
# /usr/local/nginx/sbin/nginx -s stop 停止服务
# /usr/local/nginx/sbin/nginx -s reload 平滑重启(必须在开启的状态下才可以)
# /usr/local/nginx/sbin/nginx -t 查看nginx配置是否正确
//设置环境变量后,直接通过
# nginx 来代替上面的 /usr/local/nginx/sbin/nginx 即可
//设置启动脚本,并且通过chkconfig --add nginx 加到service服务后,可以通过
# service nginx start (systemctl start nginx.service)
# service nginx stop (systemctl stop nginx.service)
# service nginx restart (systemctl restart nginx.service)
# service nginx status (systemctl status nginx.service)
来操作
也可以使用:
# /etc/init.d/nginx start
# /etc/init.d/nginx stop
# /etc/init.d/nginx restart
# /etc/init.d/nginx status
# netstat -tlnp //查看端口,仅显示服务中的
# netstat -antup //查看所有端口
# netstat -antup|grep nginx //查看nginx端口
# ps aux //查看所有进程
# ps aux | grep nginx //查看nginx的进程
# kill 3228 //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx //杀死进程平滑停止
友情推荐
CentOS7.3编译安装LNMP之(二)MySQL-5.7.26安装
CentOS7.3编译安装LNMP之(三)PHP-7.2.18安装
Nginx配置详情