playbook部署nginx,php,测试phpmyadmin

1.说明

在10.0.0.61上安装ansible,统一使用ansible在51上安装数据库及redis,在7,8上安装nginx,php,在5上安装nignx成为负载均衡。

2.安装并配置ansible与密钥

manager(10.0.0.61):

yum install ansible -y	
vim /etc/ansible/hosts
------------------/etc/ansible/hosts-------------------
[webservers]
172.16.1.7
172.16.1.8

[lb]	#负载均衡
172.16.1.5

[db]	#redis
172.16.1.51
------------------/etc/ansible/hosts结束----------------
ssh-keygen -C 12345@qq.com	#生产密钥对,将公钥推送到各个服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.5#-i 指定公钥的位置
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.7
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.8
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.51
3.安装redis

manger(10.0.0.61):

#准备redis的配置文件
mkdir /project
mkdir /project/config
mkdir /project/yml
scp root@172.16.1.51:/etc/redis.conf /project/config/redis.conf.j2
vim /project/config/redis.conf.j2
--------------------/project/config/redis.conf.j2----------------------
#只修改这一行
bind 127.0.0.1 172.16.1.51
-------------------/project/config/redis.conf.j2结束--------------------
vim /project/yml/playbook_redis.yml
--------------------/project/yml/playbook_redis.yml---------------------
- hosts: db
  tasks:

#1.安装redis
  - name: install redis server
    yum:
      name: redis
      state: present

#2.配置
  - name: configure redis server
    copy:
      src: /project/config/redis.conf.j2
      dest: /etc/redis.conf
    notify: restart redis server

#3.启动
  - name: started redis server
    systemd:
      name: redis
      state: started
      enabled: yes

#4.监控任务
  - name: restart redis server
    systemd:
      name: redis
      state: restarted
-------------------/project/yml/playbook_redis.yml结束-------------------
ansible-playbook /project/yml/playbook_redis.yml	#执行
4.安装nginx与php
#1.准备nginx配置文件
vim /project/config/nginx.conf.j2 
------------------/project/config/nginx.conf.j2---------------------------
user www;
worker_processes  2;

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;
}
------------------/project/config/nginx.conf.j2---------------------------
#2.准备nginxd的网站配置文件
vim /project/config/phpmyadmin.oldxu.conf.j2
----------------/project/config/phpmyadmin.oldxu.conf.j2------------------
server {
        listen 80;
        server_name phpmyadmin.oldxu.com;
        root /phpmyadmin/phpmyadmin;

        location / {
                index index.php;
        }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
---------------/project/config/phpmyadmin.oldxu.conf.j2结束----------------
#3.准备php.in配置文件
scp root@172.16.1.7:/etc/php.ini /project/config/php.ini	#随便复制一台机器的
vim /project/config/php.ini
------------------------/project/config/php.ini------------------------------
#只需要修改这两处
session.save_handler = redis
session.save_path = "tcp://172.16.1.51:6379?weight=1&timeout=2.5"
------------------------/project/config/php.ini结束---------------------------
vim /project/config/www.conf.j2
--------------------/project/config/www.conf.j2----------------------------
#只需注释这两行
;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session
-------------------/project/config/www.conf.j2结束--------------------------
#4.配置ansible
vim /project/yml/playbook_redis.yml
------------------/project/yml/playbook_phpmyadmin.yml-------------------------
- hosts: webservers
  tasks:

#1.安装nginx php
  - name: install nginx php7.1
    yum:
      name: "{{ packages }}"
      state: present
    vars:
      packages:
        - nginx
        - php71w
        - php71w-cli
        - php71w-common
        - php71w-devel
        - php71w-devel
        - php71w-embedded
        - php71w-gd
        - php71w-gd
        - php71w-mcrypt
        - php71w-mbstring
        - php71w-pdo
        - php71w-xml
        - php71w-fpm
        - php71w-mysqlnd
        - php71w-opcache
        - php71w-pecl-memcached
        - php71w-pecl-redis
        - php71w-pecl-mongodb

#2.配置nginx
  - name: configure nginx.conf
    copy:
      src: /project/config/nginx.conf.j2
      dest: /etc/nginx/nginx.conf
    notify: restart nginx server

  - name: create group www
    group:
      name: www
      gid: 666

  - name: create user www
    user:
      name: www
      uid: 666
      group: www
      create_home: no
      shell: /sbin/nologin

  - name: configure phpmyadmin.oldxu.com
    copy:
      src: /project/config/phpmyadmin.oldxu.conf.j2
      dest: /etc/nginx/conf.d/phpmyadmin.conf
    notify: restart nginx server

#3.配置php
  - name: configure php server php.ini
    copy:
      src: /project/config/php.ini.j2
      dest: /etc/php.ini
    notify: restart php server

  - name: configure php server www.conf
    copy:
      src: /project/config/www.conf.j2
      dest: /etc/php-fpm.d/www.conf
    notify: restart php server

#4.初始化
  - name: touch directory
    file:
      path: /phpmyadmin
      state: directory
      owner: www
      group: www
      recurse: yes

#5.拷贝代码
  - name: copy code
    unarchive:
      src: /project/phpmyadmin.zip
      dest: /phpmyadmin
      owner: www
      group: www

#6.启动服务
  - name: start nginx server
    systemd:
      name: nginx
      state: started

  - name: start php-fpm server
    systemd:
      name: php-fpm
      state: started

#7.触发任务
  handlers:
  - name: restart nginx server
    systemd:
      name: nginx
      state: restarted

  - name: restart php server
    systemd:
      name: php-fpm
      state: restarted
------------------/project/yml/playbook_phpmyadmin.yml结束----------------------
#5.执行
ansible-playbook /project/yml/playbook_phpmyadmin.yml
5.配置负载均衡
#1.准备nginx配置文件
vim /project/config/lb_phpmyadmin.conf.j2
------------------/project/config/lb_phpmyadmin.conf.j2---------------------
upstream phpmyadmin {
        server 172.16.1.7;
        server 172.16.1.8;
}

server {
        listen 80;
        server_name phpmyadmin.oldxu.com;

        location / {
                proxy_pass http://phpmyadmin;
                include proxy_params;
        }
}
-----------------/project/config/lb_phpmyadmin.conf.j2结束-------------------
#2.配置ansible
vim /project/yml/playbook_lb.yml
------------------/project/yml/playbook_lb.yml------------------------
- hosts: lb
  tasks:

#1.安装nginx
  - name: install nginx server
    yum:
      name: nginx
      state: present

#2.配置nignx
  - name: configure nginx server
    copy:
      src: /project/config/nginx.conf.j2
      dest: /etc/nginx.conf
    notify: restart nginx server
#3.初始化nginx
  - name: init group
    group:
      name: www
      gid: 666

  - name: init user www
    user:
      name: www
      uid: 666
      group: www
      create_home: no
      shell: /sbin/nologin

  - name: configure nginx lb
    copy:
      src: /project/config/lb_phpmyadmin.conf.j2
      dest: /etc/nginx/conf.d/lb_phpmyadmin.conf

#4.启动
  - name: start nginx server
  -     systemd:
      name: nginx
      state: started

#5.触发任务
  handlers:
  - name: restart nginx server
    systemd:
      name: nginx
      state: restarted
----------------/project/yml/playbook_lb.yml结束-----------------------
#3.执行
ansible-playbook /project/yml/playbook_lb.yml

Windows的c:\windows\system32\drives\etc\hosts中添加:

10.0.0.5 phpmyadmin.oldxu.com

在浏览器中输入域名phpmyadmin.oldxu.com即可访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值