Trước khi bạn bắt đầu
Bạn sẽ cần ít nhất hai Linodes đã cài đặt Salt. Nếu bạn chưa cài đặt, hãy đọc Hướng dẫn Bắt đầu với Salt – Cài đặt và Thiết lập Cơ bản và làm theo hướng dẫn để thiết lập Salt master và minion.
Các bước sau đây sẽ được thực hiện trên Salt master của bạn.
Ghi chú: Các bước trong hướng dẫn này yêu cầu quyền root. Hãy đảm bảo chạy các bước bên dưới dưới dạng root
hoặc với sudo
tiền tố. Để biết thêm thông tin về quyền, hãy xem hướng dẫn Người dùng và Nhóm của chúng tôi .
Thiết lập Salt Master và các tệp được quản lý của bạn
Tệp Salt Master SLS
1.Tạo /srv/salt
thư mục nếu nó chưa tồn tại:
mkdir /srv/salt
2.Tạo một tệp Salt top trong /srv/salt
đó sẽ là điểm vào của Salt cho cấu hình Apache:
base:
'G@os_family:Debian':
- match: compound
- apache-debian
'G@os:CentOS':
- match: compound
- apache-centos
Tệp trên cùng này sử dụng phép ghép hợp chất để nhắm mục tiêu đến các minion của bạn theo hệ điều hành bằng Salt Grains. Điều này sẽ cho phép Salt chọn cấu hình Apache phù hợp tùy thuộc vào bản phân phối Linux. Các trình ghép này có thể được mở rộng để cụ thể hơn nữa. Ví dụ, nếu bạn chỉ muốn nhắm mục tiêu đến các minion có ID web-server
đang chạy trên Ubuntu, bạn có thể nhập web* and G@os:Ubuntu
.
Tệp Pillar
1.Tạo /srv/pillar
thư mục nếu nó chưa tồn tại:
mkdir /srv/pillar
2.Tạo một tệp Pillar top. Tệp top này tham chiếu đến apache.sls
tệp Pillar mà bạn sẽ tạo ở bước tiếp theo:
base:
'*':
- apache
3.Tạo apache.sls
tệp được tham chiếu ở bước trước. Tệp này định nghĩa dữ liệu Pillar sẽ được sử dụng bên trong tệp trạng thái Apache của chúng tôi ở phần tiếp theo, trong trường hợp này là tên miền của bạn. Thay thế example.com
bằng tên miền của bạn:
domain: example.com
Tập tin trang web
1.Tạo một thư mục cho các tập tin trang web của bạn trong thư /srv/salt
mục. Thay thế example.com
bằng tên miền trang web của bạn:
mkdir /srv/salt/example.com
Bạn có thể truy cập thư mục này từ các tệp trạng thái Salt tại salt://example.com
.
2.Tạo một index.html
tệp cho trang web của bạn trong /srv/salt/example.com
thư mục, thay thế example.com
cho tên thư mục bạn đã chọn ở bước trước. Bạn sẽ sử dụng tệp này như một bài kiểm tra để đảm bảo trang web của bạn hoạt động bình thường.
<html>
<body>
<h1>Server Up and Running!</h1>
</body>
</html>
Tập tin cấu hình
1.Tạo một thư mục cho các tệp cấu hình bổ sung của bạn tại /srv/salt/files
. Các tệp này sẽ có thể truy cập được tại salt://files
.
mkdir /srv/salt/files
2.Tạo một tệp có tên là tune_apache.conf
in /srv/salt/files
và dán khối sau vào:
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 20
MaxSpareServers 40
MaxClients 200
MaxRequestsPerChild 4500
</IfModule>
Mô-đun prefork MPM này cung cấp khả năng điều chỉnh bổ sung cho cài đặt Apache của bạn . Tệp này sẽ được Salt quản lý và cài đặt vào thư mục cấu hình phù hợp ở bước sau.
3.Nếu bạn sẽ cài đặt Apache trên máy CentOS, hãy tạo một tệp có tên là include_sites_enabled.conf
và /srv/salt/files
dán nội dung sau vào:
IncludeOptional sites-enabled/*.conf
Tệp này sẽ cho phép chúng ta sử dụng các thư mục tệp giống như những thư mục có trong cài đặt Debian để giúp sắp xếp cấu hình Apache.
Tạo tệp trạng thái Apache cho Debian và Ubuntu
Các bước riêng lẻ
Hướng dẫn này sẽ hướng dẫn từng bước quá trình tạo tệp trạng thái Apache cho Debian và Ubuntu. Nếu bạn muốn xem toàn bộ tệp trạng thái, bạn có thể xem ở cuối phần này .
1.Tạo một tệp trạng thái có tên apache-debian.sls
là /srv/salt
và mở tệp đó trong trình soạn thảo văn bản mà bạn chọn.
2.Hướng dẫn Salt cài đặt apache2
gói và khởi động apache2
dịch vụ:
apache2:
pkg.installed
apache2 Service:
service.running:
- name: apache2
- enable: True
- require:
- pkg: apache2
...
Tại đây Salt đảm bảo apache2
gói được cài đặt bằng pkg.installed
. Tương tự như vậy, nó đảm bảo apache2
dịch vụ đang chạy và được bật trong service.running
. Cũng trong service.running
, apache-debian.sls
sử dụng require
để đảm bảo lệnh này không chạy trước khi apache2
gói được cài đặt. require
Bước này sẽ được lặp lại trong suốt apache-debian.sls
.
Cuối cùng, một watch
câu lệnh được sử dụng để khởi động lại apache2
dịch vụ nếu tệp cấu hình của trang web của bạn thay đổi. Bạn sẽ định nghĩa tệp cấu hình đó trong bước sau. Lưu ý rằng tệp cấu hình này được đặt tên bằng tên miền bạn đã cung cấp khi tạo tệp Salt Pillar trong phần đầu tiên. Dữ liệu Pillar này sẽ được sử dụng trong suốt apache-debian.sls
.
3.Tắt KeepAlive:
...
Turn Off KeepAlive:
file.replace:
- name: /etc/apache2/apache2.conf
- pattern: 'KeepAlive On'
- repl: 'KeepAlive Off'
- show_changes: True
- require:
- pkg: apache2
...
KeepAlive cho phép nhiều yêu cầu được gửi qua cùng một kết nối TCP. Đối với mục đích của hướng dẫn này, KeepAlive sẽ bị vô hiệu hóa. Để vô hiệu hóa, Salt được hướng dẫn tìm chỉ thị KeepAlive /etc/apache2/apache2.conf
bằng cách khớp một mẫu và thay thế bằng KeepAlive Off
. show_changes
hướng dẫn Salt hiển thị bất kỳ thay đổi nào đã thực hiện trong trạng thái cao.
4.Chuyển tune_apache.conf
đến minion của bạn và kích hoạt nó:
...
/etc/apache2/conf-available/tune_apache.conf:
file.managed:
- source: salt://files/tune_apache.conf
- require:
- pkg: apache2
Enable tune_apache:
apache_conf.enabled:
- name: tune_apache
- require:
- pkg: apache2
...
Bước này lấy tune_apache.conf
tệp bạn đã tạo trong bước Tệp cấu hình và chuyển nó đến minion Salt của bạn. Sau đó, Salt kích hoạt tệp cấu hình đó bằng mô-đun apache_conf .
5.Tạo các thư mục cần thiết:
...
/var/www/html/{{ pillar['domain'] }}:
file.directory
/var/www/html/{{ pillar['domain'] }}/log:
file.directory
/var/www/html/{{ pillar['domain'] }}/backups:
file.directory
/var/www/html/{{ pillar['domain'] }}/public_html:
file.directory
...
6.Vô hiệu hóa tệp cấu hình máy chủ ảo mặc định:
...
000-default:
apache_site.disabled:
- require:
- pkg: apache2
...
Bước này sử dụng mô-đun apache_site của Salt để vô hiệu hóa tệp cấu hình máy chủ ảo Apache mặc định và giống như khi chạy a2dissite
trên máy chạy Debian.
7.Tạo tệp cấu hình máy chủ ảo cho trang web của bạn:
...
/etc/apache2/sites-available/{{ pillar['domain'] }}.conf:
apache.configfile:
- config:
- VirtualHost:
this: '*:80'
ServerName:
- {{ pillar['domain'] }}
ServerAlias:
- www.{{ pillar['domain'] }}
DocumentRoot: /var/www/html/{{ pillar['domain'] }}/public_html
ErrorLog: /var/www/html/{{ pillar['domain'] }}/log/error.log
CustomLog: /var/www/html/{{ pillar['domain'] }}/log/access.log combined
...
Bước này sử dụng mô-đun apache của Salt (không nên nhầm lẫn với mô apache_site
-đun được sử dụng trong bước trước) để tạo tệp cấu hình máy chủ ảo của trang web của bạn. this
Biến này biểu thị những gì theo truyền thống sẽ được bao gồm VirtualHost
trong dấu ngoặc nhọn trong tệp cấu hình Apache: <VirtualHost *:80>
.
8.Kích hoạt tệp cấu hình máy chủ ảo mới của bạn:
...
{{ pillar['domain'] }}:
apache_site.enabled:
- require:
- pkg: apache2
...
Bước này sử dụng cùng một apache_site
mô-đun mà bạn đã dùng để vô hiệu hóa tệp máy chủ ảo mặc định nhằm kích hoạt tệp máy chủ ảo mới tạo của bạn. apache_site.enabled
tạo một liên kết tượng trưng từ /etc/apache2/sites-available/example.com.conf
đến /etc/apache2/sites-enabled/example.com.conf
và giống như khi chạy a2ensite
trên máy chạy Debian.
9.Chuyển index.html
tập tin trang web của bạn tới minion của bạn:
...
/var/www/html/{{ pillar['domain'] }}/public_html/index.html:
file.managed:
- source: salt://{{ pillar['domain'] }}/index.html
Bất kỳ thay đổi nào được thực hiện với index.html
tệp trên Salt master của bạn sẽ được truyền đến minion của bạn.
Ghi chú: Vì Salt không theo dõi các tệp cấu hình để phát hiện thay đổi nhằm kích hoạt khởi động lại Apache, nên bạn có thể cần sử dụng lệnh bên dưới từ máy chủ Salt của mình.
salt '*' apache.signal restart
Hồ sơ hoàn chỉnh State File
Tệp tin đầy đủ apache-debian.sls
trông như thế này:
apache2:
pkg.installed
apache2 Service:
service.running:
- name: apache2
- enable: True
- require:
- pkg: apache2
Turn Off KeepAlive:
file.replace:
- name: /etc/apache2/apache2.conf
- pattern: 'KeepAlive On'
- repl: 'KeepAlive Off'
- show_changes: True
- require:
- pkg: apache2
/etc/apache2/conf-available/tune_apache.conf:
file.managed:
- source: salt://files/tune_apache.conf
- require:
- pkg: apache2
Enable tune_apache:
apache_conf.enabled:
- name: tune_apache
- require:
- pkg: apache2
/var/www/html/{{ pillar['domain'] }}:
file.directory
/var/www/html/{{ pillar['domain'] }}/log:
file.directory
/var/www/html/{{ pillar['domain'] }}/backups:
file.directory
/var/www/html/{{ pillar['domain'] }}/public_html:
file.directory
000-default:
apache_site.disabled:
- require:
- pkg: apache2
/etc/apache2/sites-available/{{ pillar['domain'] }}.conf:
apache.configfile:
- config:
- VirtualHost:
this: '*:80'
ServerName:
- {{ pillar['domain'] }}
ServerAlias:
- www.{{ pillar['domain'] }}
DocumentRoot: /var/www/html/{{ pillar['domain'] }}/public_html
ErrorLog: /var/www/html/{{ pillar['domain'] }}/log/error.log
CustomLog: /var/www/html/{{ pillar['domain'] }}/log/access.log combined
{{ pillar['domain'] }}:
apache_site.enabled:
- require:
- pkg: apache2
/var/www/html/{{ pillar['domain'] }}/public_html/index.html:
file.managed:
- source: salt://{{ pillar['domain'] }}/index.html
Tạo một tệp trạng thái Apache cho CentOS
Các bước riêng lẻ
1.Tạo một tệp có tên là apache-centos.sls
in /srv/salt
và mở tệp đó trong trình soạn thảo văn bản mà bạn chọn.
2.Trên CentOS Apache được đặt tên là httpd
. Hướng dẫn Salt cài đặt httpd
và chạy httpd
dịch vụ:
httpd:
pkg.installed
httpd Service:
service.running:
- name: httpd
- enable: True
- require:
- pkg: httpd
- watch:
- file: /etc/httpd/sites-available/{{ pillar['domain'] }}.conf
...
Tại đây Salt đảm bảo httpd
gói được cài đặt bằng pkg.installed
. Tương tự như vậy, nó đảm bảo httpd
dịch vụ đang chạy và được bật trong service.running
. Cũng trong service.running
, apache-debian.sls
sử dụng require
để đảm bảo lệnh này không chạy trước khi httpd
gói được cài đặt. require
Bước này sẽ được lặp lại trong suốt apache-centos.sls
.Cuối cùng, một watch
câu lệnh được sử dụng để khởi động lại httpd
dịch vụ nếu tệp cấu hình của trang web của bạn thay đổi. Bạn sẽ định nghĩa tệp cấu hình đó trong bước sau. Lưu ý rằng tệp cấu hình này được đặt tên bằng tên miền bạn đã cung cấp khi tạo tệp Salt Pillar trong phần đầu tiên. Dữ liệu Pillar này sẽ được sử dụng trong suốt apache-centos.sls
.
3.Tắt KeepAlive:
...
Turn Off KeepAlive:
file.replace:
- name: /etc/httpd/conf/httpd.conf
- pattern: 'KeepAlive On'
- repl: 'KeepAlive Off'
- show_changes: True
- require:
- pkg: httpd
...
KeepAlive cho phép nhiều yêu cầu được gửi qua cùng một kết nối TCP. Đối với mục đích của hướng dẫn này, KeepAlive sẽ bị vô hiệu hóa. Để vô hiệu hóa, Salt được hướng dẫn tìm chỉ thị KeepAlive /etc/httpd/conf/httpd.conf
bằng cách khớp một mẫu và thay thế bằng KeepAlive Off
. show_changes
hướng dẫn Salt hiển thị bất kỳ thay đổi nào đã thực hiện trong trạng thái cao.
4.Thay đổi DocumentRoot:
...
Change DocumentRoot:
file.replace:
- name: /etc/httpd/conf/httpd.conf
- pattern: 'DocumentRoot "/var/www/html"'
- repl: 'DocumentRoot "/var/www/html/{{ pillar['domain'] }}/public_html"'
- show_changes: True
- require:
- pkg: httpd
...
Tương tự như bước cuối cùng, trong bước này salt-centos.sls
hướng dẫn Salt tìm kiếm chỉ thị DocumentRoot trong tệp Apache httpd.conf
và thay thế dòng đó bằng gốc tài liệu mới. Điều này cho phép sử dụng kiến trúc thư mục trang web theo phong cách Debian.
5.Chuyển tune_apache.conf
và include_sites_enabled.conf
cho lính của bạn.
...
/etc/httpd/conf.d/tune_apache.conf:
file.managed:
- source: salt://files/tune_apache.conf
- require:
- pkg: httpd
/etc/httpd/conf.d/include_sites_enabled.conf:
file.managed:
- source: salt://files/include_sites_enabled.conf
- require:
- pkg: httpd
...
6.Tạo các thư mục cần thiết:
...
/etc/httpd/sites-available:
file.directory
/etc/httpd/sites-enabled:
file.directory
/var/www/html/{{ pillar['domain'] }}:
file.directory
/var/www/html/{{ pillar['domain'] }}/backups:
file.directory
/var/www/html/{{ pillar['domain'] }}/public_html:
file.directory
...
7.Tạo tệp cấu hình máy chủ ảo cho trang web của bạn:
...
/etc/httpd/sites-available/{{ pillar['domain'] }}.conf:
apache.configfile:
- config:
- VirtualHost:
this: '*:80'
ServerName:
- {{ pillar['domain'] }}
ServerAlias:
- www.{{ pillar['domain'] }}
DocumentRoot: /var/www/html/{{ pillar['domain'] }}/public_html
file.symlink:
- target: /etc/httpd/sites-enabled/{{ pillar['domain'] }}.conf
- force: True
...
Bước này sử dụng mô-đun apache của Salt để tạo tệp cấu hình máy chủ ảo của trang web của bạn. this
Biến này biểu thị những gì theo truyền thống sẽ được bao gồm VirtualHost
trong dấu ngoặc nhọn trong tệp cấu hình Apache: <VirtualHost *:80>
.
8.Chuyển index.html
tập tin trang web của bạn tới minion của bạn:
...
/var/www/html/{{ pillar['domain'] }}/public_html/index.html:
file.managed:
- source: salt://{{ pillar['domain'] }}/index.html
...
Bất kỳ thay đổi nào được thực hiện với index.html
tệp trên máy chủ Salt của bạn sẽ được truyền đến máy chủ minion của bạn.
9.Cấu hình tường lửa của bạn để cho phép lưu lượng truy cập http và https:
...
Configure Firewall:
firewalld.present:
- name: public
- ports:
- 22/tcp
- 80/tcp
- 443/tcp
Ghi chú: Bạn phải liệt kê tất cả các cổng cần mở cho máy của mình trong phần này. Nếu không liệt kê các cổng này, Salt sẽ đóng chúng.
Hồ sơ hoàn chỉnh State File
Tệp tin đầy đủ apache-centos.sls
trông như thế này:
httpd:
pkg.installed
httpd Service:
service.running:
- name: httpd
- enable: True
- require:
- pkg: httpd
- watch:
- file: /etc/httpd/sites-available/{{ pillar['domain'] }}.conf
Turn off KeepAlive:
file.replace:
- name: /etc/httpd/conf/httpd.conf
- pattern: 'KeepAlive On'
- repl: 'KeepAlive Off'
- show_changes: True
- require:
- pkg: httpd
Change DocumentRoot:
file.replace:
- name: /etc/httpd/conf/httpd.conf
- pattern: 'DocumentRoot "/var/www/html"'
- repl: 'DocumentRoot "/var/www/html/{{ pillar['domain'] }}/public_html"'
- show_changes: True
- require:
- pkg: httpd
/etc/httpd/conf.d/tune_apache.conf:
file.managed:
- source: salt://files/tune_apache.conf
- require:
- pkg: httpd
/etc/httpd/conf.d/include_sites_enabled.conf:
file.managed:
- source: salt://files/include_sites_enabled.conf
- require:
- pkg: httpd
/etc/httpd/sites-available:
file.directory
/etc/httpd/sites-enabled:
file.directory
/var/www/html/{{ pillar['domain'] }}:
file.directory
/var/www/html/{{ pillar['domain'] }}/backups:
file.directory
/var/www/html/{{ pillar['domain'] }}/public_html:
file.directory
/etc/httpd/sites-available/{{ pillar['domain'] }}.conf:
apache.configfile:
- config:
- VirtualHost:
this: '*:80'
ServerName:
- {{ pillar['domain'] }}
ServerAlias:
- www.{{ pillar['domain'] }}
DocumentRoot: /var/www/html/{{ pillar['domain'] }}/public_html
file.symlink:
- target: /etc/httpd/sites-enabled/{{ pillar['domain'] }}.conf
- force: True
/var/www/html/{{ pillar['domain'] }}/public_html/index.html:
file.managed:
- source: salt://{{ pillar['domain'] }}/index.html
Configure Firewall:
firewalld.present:
- name: public
- ports:
- 22/tcp
- 80/tcp
- 443/tcp
Chạy Tệp Trạng thái Apache
Trên Salt master của bạn, hãy đưa ra lệnh highstate:
salt '*' state.apply
Sau một vài phút, bạn sẽ thấy danh sách các lệnh Salt và tóm tắt về thành công của chúng. Điều hướng đến tên miền của trang web nếu bạn đã thiết lập DNS hoặc địa chỉ IP công khai của trang web. Bạn sẽ thấy index.html
tệp của mình. Bây giờ bạn đã sử dụng Salt để cấu hình Apache. Truy cập các liên kết trong phần bên dưới để biết thêm thông tin.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
- Mô-đun trạng thái Salt Apache
- Mô-đun trạng thái Salt Apache_Conf
- Mô-đun Salt Apache_Site State
- Sử dụng hạt trong mô-đun SLS
Nguồn: https://www.linode.com/docs/guides/configure-apache-with-salt-stack/