本教程将配置 Minion 的 LAMP 堆栈,并进一步使用 Salt States。本教程是为 Debian 8 编写的,但可以很容易地针对其他 Linux 发行版进行调整。在开始本指南之前,您将需要一个有效的 Salt master和minion 配置。如果您需要设置该先决条件,请参阅我们的 Salt 安装指南以开始使用。
创建 LAMP 配置状态
以下步骤为 2GB Linode 配置所有 Salt Minions,可以根据需要随意调整。
代码语言:javascript复制打开/etc/salt/base/top.sls文件并添加其他行:
/etc/salt/base/top.sls
base:
'*':
- lamp
- extras
- lampconf
代码语言:javascript复制创建和编辑/etc/salt/base/lampconf.sls文件:
/etc/apache2/apache2.conf-KA:
file.replace:
- name: /etc/apache2/apache2.conf
- pattern: 'KeepAlive On'
- repl: 'KeepAlive Off'
- show_changes: True
/etc/apache2/apache2.conf-IM:
file.append:
- name: /etc/apache2/apache2.conf
- text: |
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 20
MaxSpareServers 40
MaxClients 200
MaxRequestsPerChild 4500
</IfModule>
# MySQL Configuration for 2GB Linode
/etc/mysql/my.cnf-br:
file.blockreplace:
- name: /etc/mysql/my.cnf
- marker_start: '# * Fine Tuning'
- marker_end: '# * Query Cache Configuration'
- content: |
#
key_buffer = 32M
max_allowed_packet = 1M
thread_stack = 128K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if
# needed the first time they are touched
myisam-recover = BACKUP
max_connections = 75
table_cache = 32
#thread_concurrency = 10
#
- backup: '.bak'
- show_changes: True
# PHP Configuration for 2GB Linode
/etc/php5/apache2/php.ini-er:
file.replace:
- name: /etc/php5/apache2/php.ini
- pattern: 'error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT'
- repl: 'error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR'
- show_changes: True
/etc/php5/apache2/php.ini-el:
file.replace:
- name: /etc/php5/apache2/php.ini
- pattern: ';error_log = php_errors.log'
- repl: 'error_log = /var/log/php/error.log'
- show_changes: True
/var/log/php/error.log:
file.managed:
- user: www-data
- group: root
- dir_mode: 755
- file_mode: 644
- makedirs: True
# Restart
apache2-run-at-boot-restart:
service.running:
- name: apache2
- enable: True
- watch:
- pkg: apache2
mysql-run-at-boot-restart:
service.running:
- name: mysql
- enable: True
- watch:
- pkg: mysql-server
代码语言:javascript复制将状态设置传输到 Minions:
salt '*' state.highstate
创建虚拟主机文件
Salt State Modules 用于跨 Minions 组的设置。要调整单个 Minion 上的配置,请尝试使用 Salt Execution Modules。注意,有很多种方法可以使用 Salt。
代码语言:javascript复制禁用单个 Minion 或所有 Minions 上的默认 Apache 虚拟主机:
对于特定的 Minion :
salt '<hostname or Minion ID>' cmd.run "a2dissite *default"
对于所有的 Minion :
salt '*' cmd.run "a2dissite *default"
代码语言:javascript复制为网站的文件、日志和备份创建目录。替换example.com为网站名称:
salt '<hostname or Minion ID>' file.makedirs /var/www/example.com/pubic_html/ salt '<hostname or Minion ID>' file.makedirs /var/www/example.com/log/ salt '<hostname or Minion ID>' file.makedirs /var/www/example.com/backups/
代码语言:javascript复制在 Master 分支上创建一个目录以保存所有 Minion 虚拟主机文件。该目录可以作为所有 Minion 网站的索引。
mkdir /etc/salt/base/minionsites
代码语言:text复制/etc/salt/base/minionsites/example.com.conf为指定的 Minion 创建 vhost 文件。
全部替换example.com以及以下命令。
# domain: example.com
# public: /var/www/example.com/public_html/
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin webmaster@example.com
ServerName www.example.com
ServerAlias example.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /var/www/example.com/public_html
# Log file locations
LogLevel warn
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/access.log combined
</VirtualHost>
代码语言:javascript复制将 vhost 文件从 Master 复制到/sites-availableMinion 的目录:
salt-cp '<hostname or Minion ID>' /etc/salt/base/minionsites/example.com.conf /etc/apache2/sites-available/example.com.conf
代码语言:javascript复制启用新网站并重新启动 Apache:
salt '<hostname or Minion ID>' cmd.run "a2ensite example.com.conf" salt '<hostname or Minion ID>' cmd.run "service apache2 reload"
上面的部分使用了cmdmod,file 和 cp Salt Execution模块。
您现在应该根据需要在多个 Minion 中配置一个 LAMP 堆栈。可选地,使用 grain 进行进一步定制并将特定变量应用于每个主机。
lamplamp