相对于Tomcat,Nginx处理静态资源的能力更加高效,在生产环境下,一般都会将静态资源部署到Nginx中。
我安装和设置自启动Nginx做了记录。执行过程中的log太多,所以主要将命令记录下来了。
环境:CentOS7
Nginx版本:1.22.0
参考文档:https://www.runoob.com/linux/nginx-install-setup.html
http://gongfuma.com/front/tech/detail/id/280/typeid/3.html
(以下命令中,其中目录有可能是/usr/local/webserver/nginx/,也可能是/usr/local/nginx/,请根据自己实际情况操作)
安装执行命令:
#一、安装编译工具及库文件
[root@localhost ~]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
#二、安装 PCRE (PCRE 作用是让 Nginx 支持 Rewrite 功能。)
[root@localhost ~]# cd /usr/local
[root@localhost local]# cd src
#1、下载 PCRE 安装包
[root@localhost src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@localhost src]# ls
pcre-8.35.tar.gz
#2、解压安装包
[root@localhost src]# tar zxvf pcre-8.35.tar.gz
[root@localhost src]# ls
pcre-8.35 pcre-8.35.tar.gz
[root@localhost src]# cd pcre-8.35
#3、编译和安装
[root@localhost pcre-8.35]# ./configure
[root@localhost pcre-8.35]# make && make install
[root@localhost pcre-8.35]# cd /usr/local/src
[root@localhost src]#
#三、安装Nginx
#1、下载Nginx安装包
[root@localhost src]# wget http://nginx.org/download/nginx-1.22.0.tar.gz
#2、解压
[root@localhost src]# tar zxvf nginx-1.22.0.tar.gz
[root@localhost src]# cd nginx-1.22.0/
#3、编译和安装
[root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@localhost nginx-1.22.0]# make
[root@localhost nginx-1.22.0]# make install
[root@localhost nginx-1.22.0]# /usr/local/webserver/nginx/sbin/nginx -v
#或者(根据目录而定):/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.22.0
[root@localhost nginx-1.22.0]#
然后重新打开nginx,再开启防火墙80端口:
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# ps -ef | grep nginx
root 67190 66624 0 16:05 pts/1 00:00:00 grep --color=auto nginx
[root@localhost ~]#
[root@localhost]# /usr/local/webserver/nginx/sbin/nginx -s reopen
[root@localhost]#
[root@localhost]#
[root@localhost]# ps -ef | grep nginx
root 67434 1 0 16:11 ? 00:00:00 nginx: master process /usr/local/webserver/nginx/sbin/nginx
nobody 67435 67434 0 16:11 ? 00:00:00 nginx: worker process
root 68129 67272 0 16:26 pts/1 00:00:00 grep --color=auto nginx
[root@localhost]#
此时再访问Nginx,成功!
将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。详细地址在:/usr/local/nginx/html
启动程序报错处理
在执行
/usr/local/webserver/nginx/sbin/nginx -s reopen
或者
/usr/local/nginx/sbin/nginx -s reopen
出现下报错:
[root@campus sbin]# /usr/local/nginx/sbin/nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
出现此情况时,先查看是否存在:/usr/local/nginx/logs/nginx.pid 目录
如果存在,则执行:
// 先执行下边这句
[root@TEST nginx]# sudo nginx -c /etc/nginx/nginx.conf
// 再执行下边这句
[root@TEST nginx]# nginx -s reload
如果不存在以上目录,则进入 vim /usr/local/nginx/conf/nginx.conf,编辑配置文件nginx.conf。
在配置文件中有个注释的地方: #pid logs/nginx.pid后面加上
pid /usr/local/nginx/logs/nginx.pid;
截取配置部分如下:
#pid logs/nginx.pid;
pid /usr/local/nginx/logs/nginx.pid;
在 /usr/local/nginx 目录下创建 logs 目录:mkdir /usr/local/nginx/logs(如果没有的话)
然后再次启动nginx服务:
[root@campus logs]# cd /usr/local/nginx/sbin
[root@campus sbin]# ./nginx
问题解决!
设置开机自启动
nginx开机自启动
在系统服务目录里创建nginx.service文件,进入编辑
vi /lib/systemd/system/nginx.service
添加以下内容到这个新文件内
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
参数解释:
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
设置开机启动:
systemctl enable nginx.service
Nginx常用的几条命令
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
cat /usr/local/webserver/nginx/conf/nginx.conf #查看Nginx配置
vim /usr/local/webserver/nginx/conf/nginx.conf #配置Nginx