使用Salt States在Minion上配置LAMP堆栈

2018-08-29 13:20:28 浏览数 (1)

本教程将配置 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

0 人点赞