ansible实现lnmp的具体步骤

 使用role来实现lnmp

  第1步: 先确认都要有epel源(安装nginx需要)

  第2步: 定义lnmp_mysql,lnmp_php,nginx,memcached这4个角色的目录结构

master# cd /etc/ansible/roles/

master# mkdir -p {lnmp_mysql,lnmp_php,nginx,memcached}/{files,tasks,handlers,templates,vars,meta}

master# touch {lnmp_mysql,lnmp_php,nginx,memcached}/{tasks,handlers,vars,meta}/main.yml

第3步: 编写nginx角色里的task任务列表

master# vim /etc/ansible/roles/nginx/tasks/main.yml

---

- name: install nginx

  yum: name=nginx state=latest

- name: copy index file

  copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html

- name: copy test_php file

  copy: src=/etc/ansible/roles/nginx/files/test.php dest=/usr/share/nginx/html/test.php

- name: copy conf file

  copy: src=/etc/ansible/roles/nginx/files/nginx.conf dest=/etc/nginx/nginx.conf

  notify:

  - restart nginx

- name: start nginx

  service: name=nginx enabled=true state=started

第4步: 编写nginx角色里的handler

master# vim /etc/ansible/roles/nginx/handlers/main.yml

---

- name: restart nginx

  service: name=nginx state=restarted

第5步: 编写lnmp_mysql角色的task任务列表

master# vim /etc/ansible/roles/lnmp_mysql/tasks/main.yml

---

- name: install mariadb

  yum: name={{item}} state=latest

  with_items:

    - mariadb

    - mariadb-server

    - mariadb-libs

    - mariadb-devel


- name: start service

  service: name=mariadb enabled=true state=started


第6步: 编写lnmp_php角色的task任务列表

master# vim /etc/ansible/roles/lnmp_php/tasks/main.yml

---

- name: install php

  yum: name={{item}} state=latest

  with_items:

    - php

    - php-mysql

    - php-gd

    - php-ldap

    - php-odbc

    - php-pear

    - php-xml

    - php-xmlrpc

    - php-mbstring

    - php-bcmath

    - php-common

    - php-fpm

    - php-pecl-zendopcache

    - php-pecl-memcache

    - libjpeg-turbo-devel

- name: copy conf file

  copy: src=/etc/ansible/roles/lnmp_php/files/www.conf dest=/etc/php-fpm.d/www.conf

  notify:

  - restart php-fpm

- name: start php-fpm

  service: name=php-fpm enabled=true state=started

第7步: 编写lnmp_php角色的handler

master# vim /etc/ansible/roles/lnmp_php/handlers/main.yml

---

- name: restart php-fpm

  service: name=php-fpm state=restarted

第8步: 编写memcached角色的task任务列表

master# vim /etc/ansible/roles/memcached/tasks/main.yml

---

- name: install memcached

  yum: name=memcached state=latest

- name: start memcached

  service: name=memcached enabled=true state=started

第9步:在master上准备配置文件,主页文件与php测试页等

master# yum install epel -y

master# yum install nginx php-fpm

php配置文件可以按需求配置,我这里就保持默认不变

master# cp /etc/php-fpm.d/www.conf /etc/ansible/roles/lnmp_php/files/www.conf

master# echo "nginx test page" > /etc/ansible/roles/nginx/files/index.html

master# echo -e "<?php\n\tphpinfo();\n?>" > /etc/ansible/roles/nginx/files/test.php

修改nginx配置文件,主要加上连接php的配置段

master# vim /etc/nginx/nginx.conf

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {

    worker_connections 1024;

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay        on;

    keepalive_timeout  65;

    types_hash_max_size 2048;

    include            /etc/nginx/mime.types;

    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {

        listen      80 default_server;

        listen      [::]:80 default_server;

        server_name  _;

        root        /usr/share/nginx/html;

        index        index.php index.html; # 加上主页

        include /etc/nginx/default.d/*.conf;

        location / {

        }

        error_page 404 /404.html;

            location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

        location ~ \.php$ { # 加上支持php的配置段

            fastcgi_pass  127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }

    }

}

master# cp /etc/nginx/nginx.conf /etc/ansible/roles/nginx/files/nginx.conf

第10步:编写lnmp的playbook文件调用上面定义的4个roles

master# vim /etc/ansible/playbook/lnmp.yaml

---

- hosts: group1

  remote_user: root

  roles:

    - nginx

    - lnmp_mysql

    - lnmp_php

    - memcached

第11步: 执行playbook

master# ansible-playbook /etc/ansible/playbook/lnmp.yaml

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容