用户工具

站点工具


nginx:install

nginx 安装、配置

1、首先下载、解压 nginx

wget http://nginx.org/download/nginx-1.1.6.tar.gz
tar zxf nginx-1.1.6.tar.gz

2、安装依赖的包

copy 官方的文字

  • gzip module requires zlib library
  • rewrite module requires pcre library
  • ssl support requires openssl library

所以

sudo pacman -S zlib pcre openssl

3、准备编译

编辑 auto/cc/gcc 文件,nano 使用 ctrl+w 搜索 debug,注释掉

#CFLAGS="$CFLAGS -g"

编译选项

  • –with-http_stub_status_module,作用是提供nginx的状态信息,暂不添加
  • –with-http_ssl_module,这个是提供 ssl 支持,即使用加密连接,当然要添加
  • –with-http_dav_module,扩展了 HTTP 1.1,比如可以用作 svn,我自己暂时不大可能用,不添加
  • –with-http_flv_module,添加 flv 支持,默认不编译的,也不添加
  • –with-http_realip_module,可以设置提交给 nginx 的客户端IP,添加
  • –with-http_sub_module,可以搜索和替换 nginx 响应的文本,不添加
  • –with-http_gzip_static_module,给支持gzip客户端提供服务的时候,先搜索.gz文件,而不是每次创建,添加
  • –without-select_module,效率很低,也用不上,编译进去无益
  • –without-poll_module,因为,使用了更好地 epoll

所以使用的编译参数为(如果复制,请首先切换到源代码视图):

./configure \
--prefix=/srv \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/run/nginx/nginx.pid \
--lock-path=/run/nginx/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--without-select_module \
--without-poll_module \
--http-client-body-temp-path=/run/nginx/client_body/ \
--http-proxy-temp-path=/run/nginx/proxy/ \
--http-fastcgi-temp-path=/run/nginx/fastcgi/ \
--http-uwsgi-temp-path=/run/nginx/uwsgi/ \
--http-scgi-temp-path=/run/nginx/scgi/

4、编译安装

make && make install

5、添加用户和权限

groupadd nginx
useradd -g nginx nginx
usermod -a -G www nginx
mkdir /srv/web
chown -R www:www /srv/web

6、添加服务

这是作为 systemd 服务,使用命令 systemctl enable nginx.service 让其开机启动。

nginx.service
[Unit]
Description=A high performance web server and a reverse proxy server
 
[Service]
Type=forking
PIDFile=/run/nginx/nginx.pid
ExecStartPre=/usr/local/sbin/nginx -t -q -g 'daemon on;master_process on;'
ExecStart=/usr/local/sbin/nginx -g 'daemon on;master_process on;'
ExecReload=/usr/local/sbin/nginx -g 'daemon on;master_process on;' -s reload
ExecStop=/usr/local/sbin/nginx -g 'daemon on;master_process on;' -s quit
[Install]
WantedBy=multi-user.target

还需要一个 /etc/tmpfiles.d/nginx.conf

# systemd tmpfile settings for nginx
# See tmpfiles.d(5) for details
d /run/nginx 0755 root root -

且运行

systemd-tmpfiles --create /etc/tmpfiles.d/nginx.conf

部分 nginx.conf 配置示例

    server {
        listen       80;
        server_name  su.su localhost default;
        if ( $host ~* (\b(?!www\b)\w+)\.\w+\.\w+ ) {
            set $subdomain /$1;
        }
        root /srv/web/$subdomain;
        location / {
            index index.php index.html index.htm;
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root    /srv/web;
        }
        location ~ \.php$ {
            fastcgi_pass    unix:/run/php-fpm/php-fpm.sock;
            #fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include         fastcgi_params;
        }
        location ~ /\.ht {
            deny  all;
        }
    }
nginx/install.txt · 最后更改: 2018/12/31 18:41 (外部编辑)