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即可访问