ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

playbook编写分布式lnmp

2021-10-26 08:03:20  阅读:235  来源: 互联网

标签:name root lnmp nginx yum playbook php php72w 分布式


playbook安装分布式lnmp

搭建本地yum仓库,使用http发布

yum -y install httpd
systemctl start httpd
cd /var/www/html
mkdir myrepo

yum -y install createrepo
createrepo myrepo
[root@host103 html]# ls myrepo/repodata/

cd myrepo
#下载rpm 包
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libargon2-20161029-3.el7.x86_64.rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum install --downloadonly --downloaddir=/var/www/html/myrepo \
php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache pcre-devel


编写yum仓库配置

[root@host103 opt]# cat nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

[root@host103 opt]# cat my.repo 
[myrepo]
name=myrepo
baseurl=http://192.168.23.103/myrepo
enabled=1
gpgcheck=0


配置nginx配置文件,设置nginx支持php解析

[root@host103 opt]# egrep -nv '^$|#' default.conf 
1:server {
2:    listen       80;
3:    server_name  localhost;
7:    location / {
8:        root   /usr/share/nginx/html;
         #修改 ,配置文首页文件
9:        index  index.html index.php;
10:    }
16:    error_page   500 502 503 504  /50x.html;
17:    location = /50x.html {
18:        root   /usr/share/nginx/html;
19:    }
       #修改
29:    location ~ \.php$ {
30:        root           html;
          #修改,配置php主机ip和默认端口
31:        fastcgi_pass   192.168.23.107:9000;
32:        fastcgi_index  index.php;
           #修改
33:        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name; 
34:        include        fastcgi_params;
35:    }
43:}


配置php首页文件

[root@host103 opt]# vim index.php 
<?php
#配置连接数据的 ip 地址,用户,密码
$link=mysqli_connect('192.168.23.106','root','Admin@123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>


配置nginx和mysql主机的nfs共享配置文件

[root@host103 opt]# cat nginx_exports 
/usr/share/nginx/html 192.168.23.0/24(rw,no_root_squash)

[root@host103 opt]# cat mysql_exports 
/var/lib/mysql/ 192.168.23.0/24(rw,no_root_squash)


[root@host103 opt]# cat www.conf | grep -v '^;' | grep -v '^$'
[www]
#修改,配置用户和组为nginx
user = nginx 
group = nginx
#修改,配置监听地址php的地址和端口
listen = 192.168.23.107:9000
#修改,设置为nginx主机的地址
listen.allowed_clients = 192.168.23.105
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
[root@host103 opt]# cat /etc/php.ini | egrep 'mysqli.default_socket|date.timezone'
; http://php.net/date.timezone
#修改,设置时区
date.timezone = Asia/Shanghai
#修改,设置mysql的套接字文件路径
mysqli.default_socket = /var/lib/mysql/mysql.sock


编写playbook前准备

#先配置免密登录
ssh-keygen  
ssh-copy-id 192.168.23.105
ssh-copy-id 192.168.23.106
ssh-copy-id 192.168.23.107

#配置主机清单
[root@host103 opt]# egrep -v '^$|#'  /etc/ansible/hosts  | grep -A1 'servers'
[phpservers]
192.168.23.107
[webservers]
192.168.23.105 
[dbservers]
192.168.23.106 


playbook文件

- name: for all 
  gather_facts: false
  hosts: webservers dbservers phpservers
  remote_user: root
  tasks: 
    - name: stop  firewalld
      service: name=firewalld state=stopped enabled=no

    - name: stop selinux
      selinux:
        policy: targeted
        state:
          disabled

    - name: make yumrepo
      copy: src=/opt/my.repo dest=/etc/yum.repos.d/my.repo
    
- name: for nginx
  gather_facts: false
  hosts: webservers
  remote_user: root
  tasks: 

    - name: modify yum repository
      copy: src=/opt/nginx.repo dest=/etc/yum.repos.d/nginx.repo

    - name: install nginx
      yum: name=nginx state=latest 

    - name: start nginx
      service: name=nginx state=started enabled=yes

    - name: install nfs
      yum: 
        name:
          - rpcbind
          - nfs-utils
   
    - name: chmod 
      file: path=/usr/share/nginx/html mode=0777
 
    - name: modify share directory
      copy: src=/opt/nginx_exports dest=/etc/exports
  
    - name: start nfs
      service: 
        name: "{{item}}"
        state: started
        enabled: yes
      with_items:
        - rpcbind
        - nfs

    - name: modify index.php
      copy: src=/opt/index.php dest=/usr/share/nginx/html/index.php

    - name: for nginx  support  php 
      copy: src=/opt/default.conf dest=/etc/nginx/conf.d/default.conf
      notify: restart nginx

  handlers: 
    - name: restart nginx
      service: name=nginx state=restarted
 
- name: for mysql
  gather_facts: false
  hosts: dbservers
  remote_user: root
  tasks:

    - name: remove mariadb and 
      yum: name=mariadb*  state=absent
    
    - name: install mysql57
      yum: name=mysql57-community-release-el7-10.noarch

    - name: install mysql
      yum: name=mysql-community-server

    - name: start mysqld
      service: name=mysqld state=started enabled=yes

    - name: initialize mysql
      shell: a=$(grep "password" /var/log/mysqld.log | awk 'NR==1{print $NF}') &&  mysqladmin -u root -p"$a" password 'Admin@123' || echo 'OK'
       
    - name: Configuring Authorized Users 
      shell: mysql -uroot -p'Admin@123' -e "grant all privileges on *.* to root@'%' identified by 'Admin@123' with grant option;" -e "flush privileges;"  || echo 'OK'

    - name: remove mysql57-community
      yum: name=mysql57-community-release-el7-10.noarc state=absent

    - name: install nfs
      yum:
        name:
          - rpcbind
          - nfs-utils

    - name: modify share directory
      copy: src=/opt/mysql_exports dest=/etc/exports

    - name: start nfs
      service:
        name: "{{item}}"
        state: started
        enabled: yes
      with_items:
        - rpcbind
        - nfs
          
          
- name: for php
  gather_facts: false
  hosts: phpservers
  remote_user: root
  tasks: 
    - name: stop  firewalld
      service: name=firewalld state=stopped enabled=no

    - name: stop selinux
      shell: setenforce 0
      ignore_errors: yes
    - name: make yumrepo for php
      copy: src=/opt/my.repo  dest=/etc/yum.repos.d/my.repo

    - name: useradd nginx
      user: name=nginx state=present

    - name: install nfs
      yum:
        name: 
          - rpcbind
          - nfs-utils
    - name: start nfs
      service: name=rpcbind state=started enabled=yes

    - name: make dir for nginx
      shell: ls /usr/share/nginx/html || mkdir -p /usr/share/nginx/html
  
    - name: make dir for mysql.sock
      shell: ls /var/lib/mysql/ || mkdir -p /var/lib/mysql

    - name: mount nfs for nginx
      mount:
        path: /usr/share/nginx/html
        src: 192.168.23.105:/usr/share/nginx/html
        fstype: nfs
        state: mounted

    - name: mount nfs for mysql
      mount:
        path: /var/lib/mysql
        src: 192.168.23.106:/var/lib/mysql
        fstype: nfs
        state: mounted

    - name: download libargon2 epel webtatic-release
      yum:
        name:
          - libargon2
          - epel-release 
          - webtatic-release

    - name: install php
      yum: 
        name:
          - php72w
          - php72w-cli
          - php72w-common
          - php72w-devel
          - php72w-embedded
          - php72w-gd
          - php72w-mbstring
          - php72w-pdo
          - php72w-xml
          - php72w-fpm
          - php72w-mysqlnd
          - php72w-opcache

    - name: modify php.ini
      copy: src=/opt/php.ini dest=/etc/php.ini

    - name: modify www.conf
      copy: src=/opt/www.conf dest=/etc/php-fpm.d/www.conf


    - name: start php
      service: name=php-fpm state=started enabled=yes      


image-20211025194359785

标签:name,root,lnmp,nginx,yum,playbook,php,php72w,分布式
来源: https://www.cnblogs.com/zhijiyiyu/p/15464106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有