Personal learning records
ansible工具上线wordpress
ansible工具上线wordpress

ansible工具上线wordpress

ansible是很强大的自动化运维工具,相当于通过ssh登录到指定机器上执行预定的命令,免去了人工大量重复繁琐的工作。本次结合ansibel对wordpress进行自动化操作。首先对wordpress的部署进行梳理。


wordpress后端是php,所以要下载php的依赖包

安装数据库,php8,nginx

[root@wordpress ~]# yum -y install mariadb-server mariadb
[root@wordpress ~]# yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@wordpress ~]# yum install php80-php-xsl php80-php php80-php-cli php80-php-devel php80-php-gd php80-php-pdo php80-php-mysql php80-php-fpm -y
[root@wordpress ~]# yum install -y epel-release
[root@wordpress ~]# yum install -y nginx

启动php,数据库以及nginx

[root@wordpress ~]# systemctl start php80-php-fpm mariadb nginx

在nginx配置文件中,修改为:

server {
listen 80;
server_name normal.icu;
location / {
root /usr/share/nginx/html;
index index.php;
}
location ~ .php$ {
root /usr/share/nginx/html; #指定网站目录
fastcgi_pass 127.0.0.1:9000; #指定访问地址
fastcgi_index index.php; #指定默认文件
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #站点根目录,取决于root配置项
include fastcgi_params; #包含nginx常量定义
}
}

创建数据库数据库,再把代码上传

[root@wordpress ~]# mysql -e “create database wordpress”
[root@wordpress ~]# tar xf wordpress-6.1-zh_CN.tar.gz
[root@wordpress ~]# rm -rf /usr/share/nginx/html/*
[root@wordpress ~]# cp -r ./wordpress/* /usr/share/nginx/html

综上所述,可得核心playbook如下,分为web和database,将其分开部署在两台服务器里,并在ansible自己的的hosts文件中加上解析,剧本中,host是提前在hosts中指定的地址组;remote_user: root是指定了要在连接到远程机器上执行命令的用户身份; vars:用于指定变量,task里写详细的操作指令。

---
- hosts: web
  remote_user: root
  vars:
    - nginx_user: nginx
    - nginx_forks: auto
    - nginx_port: 80
  tasks:
    - name: 安装nginx
      yum: name=nginx state=present

    - name: nginx配置文件
      template: src=/root/nginx.conf dest=/etc/nginx/

    - name: 启动Nginx
      service: name=nginx state=started enabled=true
    
    - name: 安装PHP
      yum: name=php80-php-xsl,php80-php,php80-php-cli,php80-php-devel,php80-php-gd,php80-php-pdo,php80-php-mysql,php80-php-fpm state=present

    - name: 启动PHP
      service: name=php80-php-fpm state=started enabled=true

    - name: 拷贝wordpress源代码
      unarchive: src=/root/wordpress-6.4.1-zh_CN.tar.gz dest=/usr/share/nginx/html

简单来说,上面这个web.yml就是在web服务器上安装了nginx做发布服务器,然后通过“template”模块把本地提前设置好的nginx.conf传到web服务器的/etc/nginx下面作为配置文件,再通过“service”模块启动了nginx。接着再安装了php相关的一些包,用来处理,渲染nginx转发过来以.php结尾的页面。最后用“unarchive”模块把wordpress的中文包解压到web服务器的nginx发布目录下面。

---
- hosts: db
  remote_user: root
  vars:
    - db_passwd: 'Aa123456'
    - db_name: 'wordpress'
  tasks:
    - name: 安装数据库
      yum: name=mariadb-server,mariadb state=present disablerepo=mysql-5.7-community

    - name: 启动数据库
      service: name=mariadb state=started enabled=true
    
    - name: 配置数据库
      shell: mysql -e "create database {{ db_name }}; grant all on wordpress.* to 'wordpress'@'%' identified by '{{ db_passwd }}'; flush privileges"

这个database.yml则是数据库的yml文件,安装了数据库后,再授权一个wordpress用户来远程使用本机的数据库。

yml写完后,通过ansible-playbook database.yml和ansible-playbook web.yml来运行。最后浏览器访问web服务器的80端口,wordpress上线成功。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注