官网站点下载nginx安装包,下载最新稳定版(Stable version)。
或者访问站点下载rpm版本。
本文以 CentOS7 使用 rpm 版本安装为例。
安装nginx软件的方式一般分三种方法,对于 yum
和 rpm
这两种方式安装均需要 root 用户,因为默认写入的文件目录普通用户没有权限。这两种方式也是最为简单的方式,其中 yum
需要你的机器可以联网,rpm
方式不需要机器联网,但是你需要下载和系统对应的rpm文件。这两种方式资料很多也很简单,本文不做赘述,如有需要请自行查阅资料。
注意:如果使用root用户安装和启动nginx,请把nginx配置文件第一行的修改为
user nobody
意思是让nginx 以nobody
用户运行,nobody是Linux一个不能登录的默认用户,这样可以避免一定的安全问题。
本文重点针对异常环境(非root用户并且不能联网的服务器
)的安装方法进行说明。
gcc --version
判断系统是否已经安装),请直接按照下文步骤操作。首先确定你目标服务器的 非root用户名
,本文的非root用户名以 shanhy
为例,具体的名字随意。
1、创建用户并设置密码
使用root用户创建用户并设置密码,如果你已经被分配好一个用户,则跳过该步
useradd shanhy
passwd shanhy
2、安装gcc编译环境
使用root用户安装gcc
yum install -y gcc-c++
3、切换到非root用户进行编译和后续操作
切换用户
su - nginx
解压压缩包
tar -xzvf nginx-1.18.0.tar.gz
tar -xzvf openssl-1.0.2s.tar.gz
tar -xzvf pcre-8.44.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
配置
cd nginx-1.18.0
./configure \
--prefix=/home/shanhy/nginx \
--with-pcre=../pcre-8.44 \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.0.2s \
--user=shanhy \
--group=shanhy \
--with-file-aio \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_stub_status_module
其中
--prefix
设定你 nginx 最终需要安装到的目录,这个目录一定要和你最后需要拷贝到的目标服务器上计划放置的目录一致,因为编译后这种配置是默认打入二进制文件中的不便修改。--user
和--group
使用你的非root用户名和其所在的用户组名称,下面是查看用户所在用户组的方法(示例):
[shanhy@cib-server1 sbin]$ cat /etc/passwd | grep shanhy
shanhy:x:1002:1003::/home/shanhy:/bin/bash
[shanhy@cib-server1 sbin]$ cat /etc/group | grep 1003
shanhy:x:1003:
更多参数请查阅相关资料。
编译
make && make install
安装
make install
安装后 --prefix
指定的目录中会出现包括但不限于 conf|html|sbin|logs
几个目录。
非root用户运行nginx不能监听1024以下的端口号,因为我们的nginx需要使用 80和443 端口,所以需要使用root用户授权。当然如果你nginx使用大端口你可以跳过这步。
su - root
cd /home/shanhy/nginx/sbin
chown root:root nginx
chmod 755 nginx
chmod u+s nginx
使用非root用户,进入目录并启动服务
su - shanhy
cd /home/shanhy/nginx
./sbin/nginx
打开浏览器访问 http://{服务器IP}
正常应该可以看到 nginx 的默认页。
常用管理命令:
查看版本:nginx –V
停止服务:nginx -s stop
或者是通过 kill nginx 进程号
测试配置:nginx -t
刷新配置:nginx -s reload
至此,服务安装结束。
nginx 的默认的主配置文件为 conf/nginx.conf
,我们一般创建一个 conf.d
文件夹这样的方式来区分主配置文件和子配置文件,conf.d
中存放多个子配置文件:
使用如下配置文件替换默认配置文件:
#user nobody;
worker_processes 1;
error_log logs/error.log warn;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include ./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 logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include ./conf.d/*.conf;
}
注意:如果你的nginx使用的是root用户安装和启动的,配置文件的第一行
user nobody
请去掉前面的#
注释,这个在上文中已做说明。
然后创建目录 conf/conf.d
,将如下文件 default.conf
放入其中
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
配置文件如果有变动修改,修改后先使用
sbin/nginx -t
测试语法然后再sbin/nginx -s reload
刷新配置即可。
(END)