在有些环境中,我们没有 root 权限,但是还需要使用 nginx。
使用 root 用户,可以非常简单的安装 nginx,使用普通用户时,这会非常复杂,操作步骤变得更多,而且 nginx 启动后监听的端口也只能大于 1024。
阅读本文,可以学习如何使用普通用户安装 nginx。

环境

操作系统:RHEL 7.5 x86_64
用户:appuser

获取 nginx

直接使用 nginx 官方提供的 rpm 包即可。

cd ~
mkdir nginx
cd nginx
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm

解压 rpm 包,只下下面指令后,会解压出 etc\usr\var 3 个目录。

cd ~/nginx/
rpm2cpio nginx-1.16.1-1.el7.ngx.x86_64.rpm | cpio -div

创建必备目录

mkdir -p /home/appuser/nginx/var/run

变更配置文件

编辑这个文件:/home/appuser/nginx/etc/nginx/nginx.conf,将涉及目录的部分全部添加前缀 /home/appuser/nginx,并且指定临时目录,下面是编辑好的配置文件。

user  appuser;
worker_processes  auto;

error_log  /home/appuser/nginx/var/log/nginx/error.log warn;
pid        /home/appuser/nginx/var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /home/appuser/nginx/etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /home/appuser/nginx/var/log/nginx/access.log  main;

    # 此处为额外添加
    client_body_temp_path /home/appuser/nginx/var/cache/nginx/client_temp;
    proxy_temp_path /home/appuser/nginx/var/cache/nginx/proxy_temp;
    fastcgi_temp_path /home/appuser/nginx/var/cache/nginx/fastcgi_temp;
    uwsgi_temp_path /home/appuser/nginx/var/cache/nginx/uwsgi_temp;
    scgi_temp_path /home/appuser/nginx/var/cache/nginx/scgi_temp;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /home/appuser/nginx/etc/nginx/conf.d/*.conf;
}

配置虚拟主机

编辑这个文件:/home/appuser/nginx/etc/nginx/conf.d/default.conf,将端口从 80 变更为 8080,目录也全部添加前缀。
若有需要,可以添加更多的虚拟主机配置文件(如何配置虚拟主机不在本文讨论范围内)。

操控 nginx

启动:/home/appuser/nginx/usr/sbin/nginx -c /home/appuser/nginx/etc/nginx/nginx.conf
重载配置:/home/appuser/nginx/usr/sbin/nginx -c /home/appuser/nginx/etc/nginx/nginx.conf -s reload
停止:/home/appuser/nginx/usr/sbin/nginx -c /home/appuser/nginx/etc/nginx/nginx.conf -s stop

注意

此时 nginx 已经可以使用普通用户运行了。

nginx 推荐使用 root 启动,它会使用配置文件中指定的普通用户(一般为 nginx 用户)启动子进程。如非必要,不推荐使用本文讲解的方式使用 nginx。