一、源码编译并启动nginx
1.源码编译nginx
1>下载安装包到/srv/salt/nginx/files目录下
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# mkdir nginx
[root@server1 salt]# ls
httpd nginx
[root@server1 salt]# cd nginx/
[root@server1 nginx]# mkdir files
[root@server1 nginx]# cd files/
[root@server1 files]# ls
nginx-1.15.8.tar.gz
2>部署脚本
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# vim install.sls
nginx-install:
pkg.installed:
- pkgs:
- pcre-devel
- zlib-devel
- gcc
- make
file.managed:
- name: /mnt/nginx-1.15.8.tar.gz
- source: salt://nginx/files/nginx-1.15.8.tar.gz
cmd.run: #调用cmd模块的run方法
- name: cd /mnt && tar zxf nginx-1.15.8.tar.gz && cd nginx-1.15.8 && sed -i
's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --pr
efix=/usr/local/nginx &> /dev/null && make &> /dev/null && make install &> /dev
/null && cd .. && rm -rf nginx-1.15.8
- creates: /usr/local/nginx #判断/usr/local/nginx是否存在,如果存在,就不执行cmd.run这部分
3>执行推送
[root@server1 nginx]# salt server3 state.sls nginx.install
4>测试
minion端(server3)查看/usr/local/nginx目录及/mnt/nginx-1.15.8.tar.gz文件是否存在,如果存在则编译成功
2.启动(触发)
1>编写nginx脚本
[root@server1 files]# pwd
/srv/salt/nginx/files
[root@server1 files]# ls
nginx-1.15.8.tar.gz
[root@server1 files]# vim nginx.service
[Unit]
Descripition=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=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2>部署脚本
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# ls
files install.sls
[root@server1 nginx]# vim service.sls
include:
- nginx.install
nginx-service:
file.managed:
- name: /etc/systemd/system/nginx.service
- source: salt://nginx/files/nginx.service
service.running:
- name: nginx
- reload: True
- watch: #这个触发器可有可无
- file: nginx-service
3>执行推送
[root@server1 nginx]# salt server3 state.sls nginx.service
4>进行测试
minion端(server3)查看80端口是否已经打开,并查看nginx的进程是否存在
二、源码编译并启动nginx+配置nginx服务的主配置文件nginx.conf
1、拷贝nginx.conf文件/srv/salt/nginx/files目录下
[root@server3 ~]# scp /usr/local/nginx/conf/nginx.conf server1:/srv/salt/nginx/files
2、编辑nginx.conf文件
[root@server1 files]# pwd
/srv/salt/nginx/files
[root@server1 files]# ls
nginx-1.15.8.tar.gz nginx.conf nginx.service
[root@server1 files]# vim nginx.conf #这里配置启动进程的用户为nginx用户
2 user nginx;
3 worker_processes auto;
3、编写添加nginx用户的脚本
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# ls
httpd nginx
[root@server1 salt]# mkdir users #该目录必须建在基本目录/srv/salt目录下
[root@server1 salt]# cd users
[root@server1 users]# vim nginx.sls
nginx:
user.present:
- uid: 1001 #值的注意的是,该uid号一定得是空uid号(即该uid号没有被别的用户占用)
- shell: /sbin/nologin
4、部署脚本
[root@server1 nginx]# pwd
/srv/salt/nginx
[root@server1 nginx]# ls
files install.sls service.sls
[root@server1 nginx]# vim service.sls
include:
- nginx.install
- users.nginx
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf
nginx-service:
file.managed:
- name: /etc/systemd/system/nginx.service
- source: salt://nginx/files/nginx.service
service.running:
- name: nginx
- reload: True
- watch:
- file: /usr/local/nginx/conf/nginx.conf
5、执行推送
[root@server1 ~]# salt server3 state.sls nginx.service
6、进行测试
minion端(server3)查看nginx的worker进程对应的用户是否是nginx用户。并查看nginx的worker进程数是否和cpu的个数相同