通过ansible-playbook,以源码编译方式部署php。
- 将所有部署php主机分为webserver组:
# vim /etc/ansible/hosts
[webserver]
192.168.30.128
192.168.30.129
192.168.30.130
- 创建管理目录:
# mkdir -p php/roles/php_install/{files,handlers,meta,tasks,templates,vars}
# cd php/
说明:
files:存放需要同步到异地服务器的源码文件及配置文件;
handlers:当资源发生变化时需要进行的操作,若没有此目录可以不建或为空;
meta:存放说明信息、说明角色依赖等信息,可留空;
tasks:php安装过程中需要进行执行的任务;
templates:用于执行php安装的模板文件,一般为脚本;
vars:本次安装定义的变量
# tree .
.
├── php.yml
└── roles
└── php_install
├── files
│ ├── libmcrypt-2.5.8.tar.gz #可提前下载好包放到files下
│ └── php-7.2.6.tar.gz
├── handlers
├── meta
├── tasks
│ ├── copy.yml
│ ├── install.yml
│ ├── main.yml
│ └── prepare.yml
├── templates
│ └── php-fpm.conf
└── vars
└── main.yml
8 directories, 9 files
- 创建php入口文件,用来调用php_install:
# vim php.yml
#用于批量安装PHP
- hosts: webserver
remote_user: root
gather_facts: True
roles:
- php_install
- 创建变量:
# vim roles/php_install/vars/main.yml
#定义php安装中的变量
PHP_VER: 7.2.6
DOWNLOAD_URL: http://mirrors.sohu.com/php/php-{
{
PHP_VER }}.tar.gz
PHP_USER: php-fpm
PHP_PORT: 9000
SOURCE_DIR: /software
PHP_DIR: /usr/local/php7
MYSQL_DIR: /usr/local/mysql
- 创建模板文件:
php主配置文件php-fpm.conf
# vim roles/php_install/templates/php-fpm.conf
[global]
pid = {
{
PHP_DIR }}/var/run/php-fpm.pid
error_log = {
{
PHP_DIR }}/var/log/php-fpm.log
[www]
listen = 127.0.0.1:{
{
PHP_PORT }}
listen.mode = 666
listen.owner = nobody
listen.group = nobody
user = {
{
PHP_USER }}
group = {
{
PHP_USER }}
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
- 环境准备prepare.yml:
# vim roles/php_install/tasks/prepare.yml
- name: 关闭firewalld
service: name=firewalld state=stopped enabled=no
- name: 临时关闭 selinux
shell: "setenforce 0"
failed_when: false
- name: 永久关闭 selinux