ansible编译安装LNMP
前言
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
master_ansible:IP:192.168.0.250
slave1_节点服务器:IP:192.168.0.201
1、免密钥登陆:[master执行]
yum -y install epel-release.noarch ##HTTP-Tools软件包由YUM-EPEL源提供。
yum -y install ansible zip unzip 安装ansible
unzip ansible.zip # 解压
ssh-keygen -t dsa #生产密钥
ssh-copy-id -i ~/.ssh/id_dsa.pub 192.168.0.251 #密钥传过去

2、配置主机清单 [master执行]
cat /etc/ansible/hosts
[lnmp] #主机清单
192.168.0.251
3、下载ansible [master执行]
已经写好的ansible,安装lnmp ,里面详细解释,可下载直接使用,
链接:https://pan.baidu.com/s/13K6nyszMR1K2rUQiSTJi4g
提取码:vjhn

4、下载解压放到root目录下即可 [master执行]

[root@localhost ansible]# ls
lnmp_role.yml roles
[root@localhost ansible]# pwd
/root/ansible
[root@localhost ansible]# ansible-playbook lnmp_role.yml
PLAY [lnmp] ********************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : disabled selinux] ************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : firewalld stop] **************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : install package] *************************************************************************************************************************************************************
ok: [192.168.0.251] => (item=[u'pcre-devel', u'zlib-devel', u'gcc-c++', u'elinks', u'psmisc'])
TASK [nginx : remove httpd] ****************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : create nginx] ****************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : copy nginx.tar] **************************************************************************************************************************************************************
changed: [192.168.0.251]
TASK [nginx : copy nginxstart.sh] **********************************************************************************************************************************************************
changed: [192.168.0.251]
5、验证效果 [master执行]
nginx验证
ansible lnmp -m shell -a 'elinks http://localhost/status'

php连接验证,网页访问 #笔记本客户端执行
http://192.168.0.251/test.php

6、skyuc安装
#笔记本客户端执行
http://192.168.0.251/skyuc/install/index.php


立即安装
密码图片写错了:注意,注意,注意sky@uc123

完成安装
详细配置SKYUC
https://blog.csdn.net/lxy___/article/details/105144219
7、详细解释
[root@localhost ansible]# tree -L 5
.
├── lnmp_role.yml
└── roles
├── cmake
│ └── tasks
│ ├── files
│ │ └── cmake-2.8.6.tar.gz
│ └── main.yml
├── mysqld
│ └── tasks
│ ├── files
│ │ ├── my-medium.cnf
│ │ ├── mysql-5.5.22.tar.gz
│ │ └── mysql.server
│ └── main.yml
├── nginx
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── files
│ │ │ ├── dis_selinux
│ │ │ ├── nginx-1.6.0.tar.gz
│ │ │ └── nginxstart.sh
│ │ └── main.yml
│ └── templates
│ └── nginx.conf.j2
├── php
│ ├── tasks
│ │ ├── files
│ │ │ ├── php-5.3.28.tar.gz
│ │ │ ├── php.ini-development
│ │ │ ├── ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
│ │ │ └── ZendGuardLoader.so
│ │ └── main.yml
│ └── templates
│ ├── php-fpm.conf.j2
│ └── test.php.j2
└── SKYUC
└── tasks
├── files
│ ├── SKYUC.v3.4.2.SOURCE.zip
│ └── wwwroot
└── main.yml
cmake剧本
[root@localhost roles]# pwd
/root/ansible/roles
[root@localhost roles]# ls
cmake mysqld nginx php SKYUC
[root@localhost roles]# cat cmake/tasks/main.yml
- name: copy cmake #本地复制到目标文件
copy:
src: cmake-2.8.6.tar.gz #本地
dest: /usr/src/ #目标
- name: install package
yum:
name: ncurses-devel #安装包名称
state: present #安装
- name: tar cmake
shell: cd /usr/src/; tar zxf cmake-2.8.6.tar.gz -C /usr/src #解压
- name: configure #编译安装
shell: cd /usr/src/cmake-2.8.6/; ./configure && gmake && gmake install
mysql剧本
[root@localhost roles]# cat mysqld/tasks/main.yml
- name: yum package
yum:
name: libaio-devel #安装包名称
state: present #安装
- name: copy mysql package
copy:
src: mysql-5.5.22.tar.gz #本地
dest: /usr/src/ #目标
- name: tar mysql
shell: cd /usr/src/;tar zxf mysql-5.5.22.tar.gz -C /usr/src/ #解压
- name: install configure #编译安装
shell: cd /usr/src/mysql-5.5.22; cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc/ && make && make install
- name: copy my.cnf
copy:
src: my-medium.cnf #本地
dest: /etc/my.cnf #目标
- name: copy mysql
copy:
src: mysql.server #本地
dest: /etc/rc.d/init.d/mysqld #目标
mode: 0777 #权限
- name: mysql-PATH
lineinfile: #在末尾行添加数据
dest: /etc/profile #目标文件
line: 'PATH=$PATH:/usr/local/mysql/bin' #添加数据内容
state: present #出席
- name: start /etc/profile
shell: /usr/bin/sh /etc/profile #启动环境变量
- name: add group mysql #创建mysql组
group:
name: mysql #组名称
state: present #创建
system: yes #系统目录
- name: add user mysql #创建myslq用户
user:
name: mysql #用户名称
state: present #创建
system: yes #系统目录
groups: mysql #加入组
- name: chown /usr/local/mysql/
file:
dest: /usr/local/mysql/ #目标
mode: 0777 #权限
owner: mysql #属主
group: mysql #数组
recurse: yes #递归
- name: myql install_db #初始化
shell: /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
- name: start mysqld enabled #启动mysql
shell: /etc/rc.d/init.d/mysqld start
- name: enabled nginx #加入开机自动启动,在末尾行添加数据内容
lineinfile:
dest: /etc/rc.d/rc.local #本地
line: /etc/init.d/mysqld start #添加内容
mode: 0777 #权限
- name: mysql password #改myslq密码
shell: /usr/local/mysql/bin/mysqladmin -u root password 'pwd123' ; echo 123> test.txt
nginx剧本
[root@localhost roles]# cat nginx/tasks/main.yml
- name: disabled selinux
copy:
src: dis_selinux #本地文件
dest: /etc/selinux/config #复制到目标文件
- name: firewalld stop #关闭防火墙
service:
name: firewalld
state: stopped #停止
enabled: no #警用开机自动启动
- name: install package #安装对应包
yum: name={{ item }} state=present #调用变量,方便安装多个包使用
with_items:
- pcre-devel
- zlib-devel
- gcc-c++
- elinks
- psmisc
- name: remove httpd #卸载http
yum:
name: httpd
state: absent #卸载
- name: create nginx
user:
name: nginx #账号名称
system: yes #创建系统目录
state: present #创建
- name: copy nginx.tar
copy:
src: nginx-1.6.0.tar.gz
dest: /usr/src/nginx-1.6.0.tar.gz
- name: copy nginxstart.sh
copy:
src: nginxstart.sh
dest: /etc/init.d/nginx
mode: 0777 #给目录权限
- name: tar nginx
shell: cd /usr/src/; tar zxf nginx-1.6.0.tar.gz -C /usr/src/
- name: configure make make install
shell: cd /usr/src/nginx-1.6.0/;./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
- name: create nginx file=link(ln)
file:
src: /usr/local/nginx/sbin/nginx #本地
path: /usr/local/sbin/nginx #path=目标
state: link #软连接
- name: create directory baidu
file:
path: /var/www/baidu/ #path=目标
state: directory #创建类型为[目录]
mode: 0777 #权限
- name: create touch baidu.access.log
file:
path: /var/www/baidu/baidu.access.log #目标文件
state: touch #创建类型为[文件]
mode: 0777 #权限
- name: copy nginx.conf
template:
src: nginx.conf.j2 #复制本地模板
dest: /usr/local/nginx/conf/nginx.conf #目标
notify: restart nginx #重启nginx服务器,notify[调用handlers]
- name: create index.html
shell: echo This is lanp server > /var/www/baidu/index.html #创建index 访问
- name: start nginx
shell: /etc/init.d/nginx start #启动nginx
- name: enabled nginx
lineinfile: #在目标文件,末尾行添加一条数据
dest: /etc/rc.d/rc.local #目标文件
line: /etc/init.d/nginx start #添加内容
mode: 0777 #权限
php剧本
[root@localhost roles]# cat php/tasks/main.yml
- name: copy php.tar #复制包
copy:
src: php-5.3.28.tar.gz #本地
dest: /usr/src/ #目标
- name: yum package
yum:
name: gd,libxml2-devel,libjpeg-devel,libpng-devel #安装包名称
state: present #安装
- name: tar conf
shell: cd /usr/src/; tar zxf php-5.3.28.tar.gz -C /usr/src #解压
- name: configure #编译安装
shell: cd /usr/src/php-5.3.28; ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
- name: copy php.ini #复制php.ini
copy:
src: php.ini-development #本地
dest: /usr/local/php5/php.ini #目标
- name: link #创建软连接
file:
src: /usr/local/php5/bin/{{ item }} # src是重点:[目标]结点,创建软连接调用变量,创建软连接文件比较多,所以我调用变量实现
dest: /usr/local/bin/{{ item }} #dest目标
state: link #软连接
with_items: #变量名称
- pear
- peardev
- pecl
- phar
- phar.phar
- php
- php-config
- phpize
- name: link #软连接
file:
src: /usr/local/php5/sbin/php-fpm
dest: /usr/local/sbin/php-fpm
state: link
- name: copy tar.Zend
copy:
src: ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz #本地
dest: /usr/src/ #目标
- name: tar Zend #解压
shell: cd /usr/src/; tar -zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/src
- name: copy ZendGuardLoader.so
copy:
src: ZendGuardLoader.so #本地
dest: /usr/local/php5/lib/php/ZendGuardLoader.so #目标
- name: copy php-fpm.conf
template:
src: php-fpm.conf.j2 #本地
dest: /usr/local/php5/etc/php-fpm.conf #目标
- name: add user php #创建用户
user:
name: php
system: yes
shell: /sbin/nologin #shell 路径
state: present
- name: restart php
shell: /usr/local/sbin/php-fpm ; echo php > php.txt #启动php
- name: test php #复制模板
template:
src: test.php.j2
dest: /var/www/baidu/test.php
notify: restart nginx #启动nignx
SKYUC剧本
[root@localhost roles]# cat SKYUC/tasks/main.yml
- name: Installed mysql-python Server #安装包名称,这个包作用,管理mysql_db,mysql_user模块,不安装报错
yum: name={{ packages }} state=present
vars:
packages:
- MySQL-python
- name: yum package
yum:
name: unzip
state: present
- name: copy SKYUC.zip #复制压缩包
copy:
src: SKYUC.v3.4.2.SOURCE.zip #本地
dest: /usr/src/ #目标
- name: tar SKYUC #解压压缩包
shell: cd /usr/src/; unzip SKYUC.v3.4.2.SOURCE.zip ;echo skyuc > /root/skyuc.txt #之所以添加skyuc.txt,原因重复执行剧本失败,
- name: create skyuc #创建目录
file:
path: /var/www/baidu/skyuc #目录名称
state: directory #创建类型为目录
- name: mv SKYUC.v3.4.2.SOURCE #移动数据
shell: mv /usr/src/SKYUC.v3.4.2.SOURCE/wwwroot/* /var/www/baidu/skyuc/; echo mvtest > /root/mv.txt
- name: grant php #给对应目录文件授权
file:
path: /var/www/baidu/skyuc/{{ item }}
recurse: yes #递归
owner: php #属主
group: php #属组
mode: 0777 #0777权限
with_items: #多个目录需要,所以调用变量名称
- admincp
- data
- templates
- upload
- name: add skyucdb #创建mysql用户
mysql_db:
login_host: "127.0.0.1" #指定地址
login_user: "root" #mysql登录账号
login_password: "pwd123" #myslq登录密码
name: "skyucdb" #创建用户名称
- name: grant user #授权
mysql_user:
login_host: "127.0.0.1" #指定地址
login_user: "root" #mysql登录账号
login_password: "pwd123" #myslq登录密码
name: "runskyuc" #授权的账号
password: "sky@uc123" #授权的账号密码
priv: "skyucdb.*:ALL,GRANT" #授权账号,all所有权限
state: "present" #创建
希望以上可以帮助到你,嘻嘻
可否给在下,一个大大的赞,感谢!
版权声明:本文为lxy___原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。