ansible编译安装LNMP

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版权协议,转载请附上原文出处链接和本声明。