ansible+shell script to build wordpress Forum

Keywords: Linux PHP Nginx MySQL yum

Anibler + shell script builds wordpress Forum

ansible, as an automated operation and maintenance tool, has many functional modules, which can be better deployed with shell scripts.

Environmental Science:

192

192.168.0.11 #ansible


ansible configuration

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

[lnmp]

192.168.0.9


php configuration file

lnmp_install file


Software version:

nginx 1.81

mysql 5.5 (yum installation)

php 7.31

wordpress 4.7


ansible yaml file code:

- 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 code

#!/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} <<EOF
worker_processes  auto;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /var/www/php;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           /var/www/php;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}
EOF
#create root document
www_path=/var/www/php
if [ ! -d "$wwww_path" ];then
  mkdir -p ${www_path}
fi
#create test index html
echo "this is nginx test html" > ${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 code

#!/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 code

#!/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 code

#!/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


Access after installation http://192.168.0.9/wordpress/wp-admin Configure wordpress

After filling in the database username password (if the database host is not good, use IP address), the installation is completed. The following is the login interface.

Posted by andrewpike2000 on Tue, 01 Oct 2019 23:37:56 -0700