Press "Enter" to skip to content

Centos 7 源码编译安装 Nginx 1.13

关于nginx的相关介绍我就不说了,既然你选择nginx作为你的web服务器,想必你多少也对nginx server有不同认知和理解,接下来我就直接安装。

1.先决条件:

我使用的是centos7.3 64位核心版系统,安装配置nginx前必须安装nginx依赖包,请查看;Centos 7编译安装php7.1之生产篇,并安装前文开头所提供的依赖包。此依赖组件包适用于Nginx任意版本。

新建web用户和组

$ /usr/sbin/groupadd www
$ /usr/sbin/useradd -g www www
$ ulimit -SHn 65535 //设置linux高负载参数

2.从官方下载Nginx以及OpenSSL

下载Nginx时有两个版本:开发版和稳定版,如果用于生产就下载稳定版本,http://nginx.org/en/download.html (最好下载最新版本的稳定版,这样会有bug修复以及新特性)我下载的是就是目前最新版本nginx-1.13.5。

$ cd /tmp
$ wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
$ tar zxvf openssl-1.1.0e.tar.gz
$ wget https://nginx.org/download/nginx-1.13.5.tar.gz
$ tar zxvf nginx-1.13.5.tar.gz
$ cd nginx-1.13.5

3.安装Nginx

你可能会注意到有些文档教程安装nginx的时候,并未指派这么多模块,(看起来好长),有的连模块和用户都没有指派,其实模块是根据自己的需要指派的, 如果想以后不麻烦,那么就按照下面的模块指派就行了,其实这也算是全能的了,不然后期你需要什么还得重新编译进去,不是很麻烦,但也不省事。至于是否指派用户组,我坚决会让你指派,这可关乎nginx配置的可用性和安全稳定。

$ ./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-pcre \
--with-openssl=/tmp/openssl-1.1.0e \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_image_filter_module \
--with-http_slice_module \
--with-mail \
--with-threads \
--with-file-aio \
--with-stream \
--with-mail_ssl_module \
--with-stream_ssl_module \
$ make -j8 && make install //编译并安装

4.创建 systemctl 系统 Nginx 单元文件

安装完成后还需要开机自启动,不然每次开机都需要手动,那岂不是太麻烦。

$ vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.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 /usr/local/nginx/logs/nginx.pid
ExecStop=/bin/kill -s QUIT /usr/local/nginx/logs/nginx.pid
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存并退出。

5.加入开机自启动并启动Nginx

$ systemctl enable nginx.service
$ systemctl restart nginx.service

6.设置Firewalld防火墙

$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload

7.查看Nginx是否启动成功

$ ss -ntlp

可以查看到nginx进程已经运行了。到此nginx安装就完成了,可能你还会有疑问,nginx怎么解析并支持php程序呢,别慌,下一篇文章中我会写到。

版权声明:本站原创文章,欢迎任何形式的转载。
转载请注明:Centos 7 源码编译安装 Nginx 1.13 | 任我乐

12 Comments

  1. zhang haidi zhang haidi 2018年6月14日

    我是按照您的教程装的,php配置。但是Nginx还是无法打开PHP文件

  2. 糗糗 糗糗 2018年2月11日

    nginx怎么解析并支持php程序呢,这篇文章没写

    • Node Cloud Node Cloud 2018年2月11日

      将Nginx配置文件中的以下内容取消注释即可,$document_root可以修改成你的网站根目录即可:

      location ~ \.php$ {
      root /apps/web/renwolecom;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      • 曾曾 曾曾 2018年5月16日

        楼主你前面配置www.conf 时
        将listen = 127.0.0.1:9000修改成了listen = /var/run/www/php-cgi.sock
        nginx还能支持php吗?
        location ~ \.php$ {
        root /apps/web/renwolecom;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        • Node Cloud Node Cloud 2018年5月20日

          需要将listen = 127.0.0.1:9000注释掉

  3. Ep_Man Ep_Man 2018年1月19日

    为什么用yum安装了openssl和openssl-devel还需要下载openssl源码?

    • Node Cloud Node Cloud 2018年1月19日

      有时某些软件依赖需要openssl高版本的,而Centos7自带的openssl版本略旧。

  4. S.L. S.L. 2017年9月20日

    很喜欢您写的文章,很崇拜您,希望能跟着您的脚步,越走越远

    • Node Cloud Node Cloud 2017年9月21日

      大家一起学习进步,互相帮助哈

  5. cdn cdn 2017年5月22日

    这个非常好,我是ubuntu系统,用这个也可以安装成功!

发表评论

电子邮件地址不会被公开。 必填项已用*标注