1.环境安装
1.gcc 安装,安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要
yum install gcc-c++
2. PCRE pcre-devel安装,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。
nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel是使用 pcre 开发的一个二次的开发库。nginx也需要此库。
yum install -y pcre pcre-devel
3. zlib 安装,zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要
在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
4.OpenSSL 安装,OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理
功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https
(即在ssl协议上传输http),所以需要在 Centos 安装OpenSSL 库
yum install -y openssl openssl-devel
# 统一执行前面的命令
sudo yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.下载安装nginx
1.直接下载 .tar.gz 安装包,地址:https://nginx.org/en/download.html
2.使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
3.解压后进入解压目录
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
4.配置编译
1.使用默认配置
./configure
2.自定义配置(不推荐)
5.编译安装
make
make install
或 make install PREFIX=/usr/local/nginx #这里可以指定安装位置
6.查看安装路径
whereis nginx
7.启动nginx
cd /usr/local/nginx/sbin/ #进入bin目录
./nginx #启动
./nginx -s stop #此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit #此方式停止步骤是待nginx进程处理任务完毕进行停止
./nginx -s reload #刷新
8.配置负载均衡,默认轮询,按顺序逐一分发请求,weight指定几率
5种策略(轮询,weight,ip_hash,fair,url_hash)
进入nginx.conf文件中,在http下,加入
upstream backend{
#weigth参数表示权值,权值越高被分配到的几率越大
#下面表示第一个有3分之2几率,第二个有3分之1几率
server xx.xx.xx.xx:xxxx weight=2;
server xx.xx.xx.xx:xxxx weight=1;
}
在location / {}中加入proxy_pass http://backend;
location / {
root html;
index index.html index.htm;
proxy_pass http://backend; #这里的taishan就是upstream后面的别称
}
9.nginx配置开机自启动,开机会执行这里的文件s/lib/systemd/system/
1.进入/lib/systemd/system/目录
cd /lib/systemd/system/
2.创建nginx.service文件,并编辑
vim nginx.service
内容如下
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
#nginx的安装地址/sbin
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
保存退出
3.加入开机自启动
systemctl enable nginx
4.各个命令
# systemctl start nginx.service 启动nginx服务
# systemctl stop nginx.service 停止服务
# systemctl restart nginx.service 重新启动服务
# systemctl list-units --type=service 查看所有已启动的服务
# systemctl status nginx.service 查看服务当前状态
# systemctl enable nginx.service 设置开机自启动
# systemctl disable nginx.service 停止开机自启动
10.开机自启动的另外一种方法,因为 linux开机会 执行这个目录中的文件,/etc/init.d
1./etc/init.d下创建文件nginx,内容参考https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
vim /etc/init.d/nginx
需要注意的是
nginx=”/usr/local/nginx/sbin/nginx” #修改成nginx执行程序的路径。
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf” #修改成nginx.conf文件的路径。
2.保存后设置文件的执行权限
chmod a+x /etc/init.d/nginx
3.至此就可以通过下面指令控制启动停止
/etc/init.d/nginx start
/etc/init.d/nginx stop
4.上面的方法完成了用脚本管理nginx服务的功能,但是还是不太方便。先将nginx服务加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx
5.重启,停止,运行等操作
service nginx start
service nginx stop
service nginx restart
6.设置开机自启动
chkconfig nginx on
错误:Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
直接按照提示执行命令systemctl daemon-reload 即可。