使用playbook实现一键安装nginx+PHP

环境

主机名 wanIP lanIP 服务 角色
web01 10.0.0.7 172.16.1.7 nginx服务端 被控端
web02 10.0.0.8 172.16.1.8 nginx服务端 被控端

流程分析

1.安装ansible
2.优化ansible
3.推送公钥
4.开启防火墙
5.开启80 443 873 nfs等端口和服务白名单
6.关闭selinux
7.创建同一的用户
	1.安装nginx
	2.拷贝nginx配置文件
	3.拷贝nginx server
	4.创建站点目录
	5.编辑默认页面
	6.启动nginx

主机清单

mkdir /root/ansible/nginx/ -p && \
vim /root/ansible/nginx/hosts

[web_group]
web01 ansible_ssh_host=172.16.1.7 asible_ssh_user=root ansible_ssh_port=22
web02 ansible_ssh_host=172.16.1.8 asible_ssh_user=root ansible_ssh_port=22

上传做好的nginx_php(rpm)包

cd / && rz

nginx配置文件

vim /root/ansible/nginx/nginx.conf 

user  www;
worker_processes  auto;

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


events {
    worker_connections  1024;
}


http {
    include       /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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

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

站点目录

vim /root/ansible/nginx/html
123

nginx server

mkdir /root/ansible/nginx/conf.d/ -p && \
vim /root/ansible/nginx/conf.d/wp.conf

server {
	listen 80;
	server_name cs.wp.com;
	root /code;
	index index.html;
 
	location ~ \.php$ {
		fastcgi_pass   127.0.0.1:9000;
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		}
}

yml

vim /root/ansible/nginx/nginx.yml

- hosts: all
  tasks:
    - name: Install Nginx Server
      yum:
        name: nginx
        state: present

    - name: Configure Nginx Conf
      copy:
        src: /root/ansible/nginx/nginx.conf
        dest: /etc/nginx/nginx.conf
        owner: root
        group: root
        mode: 0644
      when: ansible_hostname is match "web*" 

    - name: Nginx Server
      copy:
        src: /root/ansible/nginx/conf.d/wp.conf
        dest: /etc/nginx/conf.d/wp.conf
        owner: root
        group: root
        mode: 0644
      when: ansible_hostname is match "web*" 


    - name: Create web index.html
      copy:
        src: /root/ansible/nginx/html
        dest: /code/index.html
        owner: www
        group: www
        mode: 0644
      when: ansible_hostname is match "web*" 

    - name: Create HTML Directory
      file:
        path: /code/wordpress
        owner: www
        group: www
        mode: 0755
        state: directory
        recurse: yes
      when: ansible_hostname is match "web*" 

    - name: Start Nginx Server
      service:
        name: nginx
        state: started
        enabled: true

    - name: jieya nginx_php.tar.gz
      unarchive:
        src: /root/nginx_php.tar.gz
        dest: /root

    - name: install php
      shell: "{{ item }}"
      with_items:
        - "yum remove -y php-common.x86_64"
        - "yum localinstall -y /root/rpm/*rpm"
      when: ansible_hostname is match "web*"
      
    - name: Configure php Conf
      copy:
        src: "{{ item.src }}"
        dest: "{{ item.dest }}"
        owner: root
        group: root
        mode: 0644
      with_items:
        - { src: "/root/ansible/nginx/php.ini",dest: "/etc" }
        - { src: "/root/ansible/nginx/www.conf",dest: "/etc/php-fpm.d/"}
      when: ansible_hostname is match "web*"  

    - name: Start php Server
      service:
        name: php-fpm
        state: started
        enabled: true
      when: ansible_hostname is match "web*"  

执行

1.执行base.yml
[root@m01 ~]# ansible-playbook ansible/base.yml 

2.执行rsync.yml
[root@m01 ~]# ansible-playbook ansible/nginx/nginx.yml -i /root/ansible/nginx/hosts

3.域名解析

4.客户端重启nginx PHP即可访问cs.wp.com网站
posted @ 2020-06-13 23:27  看萝卜在飘  阅读(318)  评论(0编辑  收藏  举报