Linux安装Nginx

nginx官网地址:http://nginx.org/

Nginx中文文档地址:https://www.nginx.cn/doc/

Nginx中文手册地址:https://www.nginx.cn/nginx-how-to

1.下载方式:

  1.1 直接在官网下载

  1.2 使用下载命令   wget http://nginx.org/download/nginx-1.20.1.tar.gz

2.安装部署:

  2.1 安装环境

  2.1.1 gcc

    yum -y install gcc-c++

    安装nginx之前需要对官网源码编译,而编译依赖于gcc环境。

  2.1.2 pcre 

    yum -y install pcre pcre-devel

    Perl Compatible Regular Expressions 简称pcre,是一个包括perl兼容的正则表达式库。nginx的http模块就是使用pcre来解析表达式的。

  2.1.3 zlib

    yum -y install zlib zlib-devel

    nginx对http包内容进行gzip压缩就是使用的zlib库

  2.1.4 openssl

    yum -y install openssl openssl-devel

    OpenSSL 是一个强大的安全套接字层密码库,包含了主要的密码算法、常用的密钥和证书封装管理及SSL协议。nginx同样支持在ssl协议上传输http,也就是https,所以需要这个库。

  2.1.5 一条指令安装以来环境

    yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel   出现如下图所示内容即表示依赖环境安装成功

    

  2.2 编译与安装

    2.2.1 上传源码至指定文件夹/通过下载命令下载指定版本到指定文件夹。一般我们都安装在:/usr/local/nginx  如下图所示为成功下载压缩包文件

    

    2.2.2 解压源码包。解压命令如:tar -zxvf nginx-1.20.1.tar.gz

    2.2.3 使用命令:mv /usr/local/nginx-1.20.1/* /usr/local/nginx/ 将解压后的文件移动到nginx目录下

    2.2.4 使用configure命令创建编译文件 (未防止出现错误,我们需要运行 mkdir -p /var/temp/nginx 命令创建指定目录)

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

      命令输入到终端后回车 如下图所示为编译文件创建成功 上述所有路径请确认好,没有这个文件或路径请先创建好,尤其红色显示的路径,尤为重要,当然你也可以自己确定路径,不过推荐使用上述路径。

      

    2.2.5 make && make install

3.启动与关闭

   3.1 进入到nginx的sbin目录下,执行以下命令

    3.1.1 启动命令:./nginx

    3.1.2 停止命令:./nginx -s stop (不推荐使用)

    3.1.3 退出命令:./nginx -s quit  (强烈推荐使用,此命令是等待任务执行完毕之后再关闭nginx)

   3.2 重新加载配置文件

    3.2.1 重载命令:./nginx -s reload (此命令可以不关闭nginx的情况下进行更新操作)

4.加入开机自启服务及使用方式

   4.1 编辑启动脚本 vim /usr/lib/systemd/system/nginx.service 内容如下

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service] 
# 路径对应安装路径
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install] 
WantedBy=multi-user.target

    确认好自己的nginx的安装路径

  4.2 使用命令

    4.2.1 启动命令:systemctl start nginx.service

    4.2.2 重载命令:systemctl reload nginx.service

    4.2.3 重启命令:systemctl restart nginx.service

    4.2.4 停止命令:systemctl stop nginx.service

    4.2.5 查看状态命令:systemctl status nginx.service

    4.2.6 开启开机自启命令:systemctl enable nginx.service

    4.2.7 关闭开机自启命令:systemctl disable nginx.service

5.编译后可能会出现的问题

  5.1 启动时出现找不到 error.log、access.log、nginx.pid文件 提示信息如:nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

  5.2 解决办法就是创建相关文件,然后重新启动  特别注意端口号被占用问题  创建文件夹命令 mkdir 文件夹名字  创建文件命令  touch 文件名字  例子:mkdir text(创建一个名为text文件夹)touch text.txt(创建一个名为text的txt文件)

  5.3 创建文件之后启动nginx还是提示找不到nginx.pid文件时,就回到nginx的安装目录下的sbin文件夹下执行 ./nginx -c /usr/local/nginx/conf/nginx.conf 命令(注意看好路径是否有问题)

  5.4 端口占用问题 [emerg] 13445#0: bind() to 0.0.0.0:80 failed (98: Address already in use)  使用root用户运行命令 fuser -k 80/tcp (仔细确定可以停下的话再运行) 然后启动再nginx,本人亲测,可以解决

  5.5 nginx.pid在重启之后缺失问题。在/usr/lib/tmpfiles.d文件夹中运行命令touch nginx-run.conf,内容为:

d /var/run/nginx 0755 root root

f /var/run/nginx/nginx.pid 0755 root root

       上面的代码就是在系统重启时自动在/var/run目录下创建nginx目录,然后在nginx目录下创建nginx.pid。这样就不会出现nginx服务启动时出现找不到此文件而启动失败了。

posted @ 2021-07-23 15:21  xcdSir  阅读(116)  评论(0编辑  收藏  举报