ansibler+shell脚本搭建wordpress论坛

ansible作为自动化运维工具,功能模块很多,配合shell脚本可以更好的进行自动化的部署。

环境:

192.168.0.9   #需要部署的LNMP+wordpress的机器

192.168.0.11 #ansible


ansible配置

[root@localhost ansible]# egrep "^[^#]" /etc/ansible/hosts 

[lnmp]

192.168.0.9


php配置文件

lnmp_install文件


软件版本:

nginx 1.81

mysql 5.5 (yum 安装)

php 7.31

wordpress 4.7


ansible yaml文件代码:

- hosts: lnmp
  remote_user: root
  tasks:
  - name: "create install directory"
    file:
      path: /opt/lnmp
      state: directory
  - name: "copy nginx_tar.gz"
    copy:
      src: /opt/lnmp/nginx-1.8.1.tar.gz
      dest: /opt/lnmp
  - name: "start install nginx"
    script: /opt/lnmp/nginx_install.sh
  - name: "remove mariadb"
    yum: name=mariadb,mariadb-server state=absent
  - name: "install mariadb"
    yum: name=mariadb,mariadb-server  state=latest
  - name: "Adding fields to my.cnf"
    script: /opt/lnmp/mysql_admin.sh
  - name: "restart mysql"
    service: name=mariadb state=restarted
  - name: "create test databases"
    command: mysql -uroot -p123123 -e "drop database wordpress;create database wordpress;grant all privileges on wordpress.* to 'root'@'192.168.0.9' identified by '123123';flush privileges;"
  - name: "copy php tgz"
    copy:
      src: /opt/lnmp/php-7.3.1.tar.gz
      dest: /opt/lnmp
  - name: "script php install bash"
    script: /opt/lnmp/php_install.sh
  - name: "copy php-fpm.conf"
    template:
      src: /opt/lnmp/php_conf/php-fpm.conf
      dest: /usr/local/php7/etc/
  - name: "copy php.ini"
    template:
      src: /opt/lnmp/php_conf/php.ini
      dest: /usr/local/php7/
  - name: "copy wwww.conf"
    copy:
      src: /opt/lnmp/php_conf/www.conf
      dest: /usr/local/php7/etc/php-fpm.d/
  - name: "start php"
    script: /opt/lnmp/php_restart.sh
  - name: "wordpress.tar.gz copy"
    unarchive:
      src: /opt/lnmp/wordpress-4.7.4-zh_CN.tar.gz
      dest: /var/www/php
      mode: 0777
      owner: nobody
      group: nfsnobody

nginx_install.sh代码

#!/bin/bash
##this is nginx install bash
nginx_tar=/opt/lnmp/nginx*.gz
ng_path=/opt/lnmp
if [ -e $nginx_tar ];then
tar zxvf $nginx_tar -C $ng_path
else
echo "nginx.tar.gz does not exist"
fi
#yum
yum install -y gcc gcc-c++ autoconf gd-devel automake zlib zlib-devel openssl openssl-devel pcre*
if [ ! $? -eq 0 ];then
     echo "error yum install"
     exit 1
fi
sleep 5
#configure
cd /opt/lnmp/nginx*
 ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_image_filter_module \
--with-http_stub_status_module
if [ $? -eq 0 ];then
make && make install
fi
#create nginx user
id nginx
if [ ! $? -eq 0 ];then
   useradd -M -s /sbin/nologin nginx
else
   userdel -r nginx
   useradd -M -s /sbin/nologin nginx
fi
#Modify configuration files
nginx_conf_path=/usr/local/nginx/conf/nginx.conf
cat >${nginx_conf_path} < ${www_path}/test.html
#check nginx pid
nginx_pid=`pgrep nginx | wc -l`
if [ $nginx_pid -eq 0 ];then
  /usr/local/nginx/sbin/nginx
  echo "nginx has started...."
else
  killall nginx
  /usr/local/nginx/sbin/nginx
  echo "nginx has restart..."
fi

php_install.sh代码

#!/bin/bash
##PHP install script
#Tar php.tgz
php_tar=/opt/lnmp/php*.gz
configure_path=/opt/lnmp
if [ -e $php_tar ];then
   tar zxvf  $php_tar -C $configure_path
else
  echo "php*.tar.gz does not exist...."
  exit 1
fi
#create php user
id php
if [ ! $? -eq 0 ];then
  useradd -M -s /sbin/nologin php
else
  userdel -r php
  useradd -M -s /sbin/nologin php
fi
#yum
yum install libxml2 libxml2-devel -y
#configure
cd /opt/lnmp/php*
./configure \
--prefix=/usr/local/php7 \
--with-pdo-mysql=/opt/mysql \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
-with-mysqli=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--enable-fpm \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-gd
#make install
if [ ! $? -eq 0 ];then
   echo "make install error,please check configure"
else
  make && make install
fi

php_restart.sh 代码

#!/bin/bash
php_pid=`pgrep php-fpm | wc -l`
if [ $php_pid -eq 0 ];then
   /usr/local/php7/sbin/php-fpm
else
  killall php-fpm
   /usr/local/php7/sbin/php-fpm
fi


mysql_admin.sh 代码

#!/bin/bash
sed -ri "1a skip-grant-tables" /etc/my.cnf
systemctl restart mariadb
sleep 3
mysql -uroot -e "use mysql;update user set password=password('123123') where user='root'; flush privileges;"
sed -ri "2d" /etc/my.cnf


安装完成后访问 http://192.168.0.9/wordpress/wp-admin 配置wordpress

填写完数据库用户名密码之后(数据库主机localhost不好使,就使用IP地址),安装完成,以下为登陆界面

ansible+shell脚本搭建wordpress论坛_第1张图片