{"id":34972,"date":"2024-09-12T10:41:32","date_gmt":"2024-09-12T03:41:32","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/configure-apache-with-salt-stack\/"},"modified":"2024-09-12T10:41:32","modified_gmt":"2024-09-12T03:41:32","slug":"configure-apache-with-salt-stack","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/configure-apache-with-salt-stack\/","title":{"rendered":"C\u1ea5u h\u00ecnh Apache v\u1edbi Salt Stack"},"content":{"rendered":"<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#before-you-begin\"><\/a><\/h2>\n<p>B\u1ea1n s\u1ebd c\u1ea7n \u00edt nh\u1ea5t hai Linodes \u0111\u00e3 c\u00e0i \u0111\u1eb7t Salt. N\u1ebfu b\u1ea1n ch\u01b0a c\u00e0i \u0111\u1eb7t, h\u00e3y \u0111\u1ecdc H\u01b0\u1edbng&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/\">d\u1eabn B\u1eaft \u0111\u1ea7u v\u1edbi Salt &#8211; C\u00e0i \u0111\u1eb7t v\u00e0 Thi\u1ebft l\u1eadp C\u01a1 b\u1ea3n<\/a>&nbsp;v\u00e0 l\u00e0m theo h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 thi\u1ebft l\u1eadp Salt master v\u00e0 minion.<\/p>\n<p>C\u00e1c b\u01b0\u1edbc sau \u0111\u00e2y s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n tr\u00ean Salt master c\u1ee7a b\u1ea1n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: C\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y y\u00eau c\u1ea7u quy\u1ec1n root. H\u00e3y \u0111\u1ea3m b\u1ea3o ch\u1ea1y c\u00e1c b\u01b0\u1edbc b\u00ean d\u01b0\u1edbi d\u01b0\u1edbi d\u1ea1ng&nbsp;<code>root<\/code> ho\u1eb7c v\u1edbi&nbsp;<code>sudo<\/code>ti\u1ec1n t\u1ed1. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 quy\u1ec1n, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/linux-users-and-groups\/\">Ng\u01b0\u1eddi d\u00f9ng v\u00e0 Nh\u00f3m<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<h2 id=\"setting-up-your-salt-master-and-managed-files\">Thi\u1ebft l\u1eadp Salt Master v\u00e0 c\u00e1c t\u1ec7p \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd c\u1ee7a b\u1ea1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#setting-up-your-salt-master-and-managed-files\"><\/a><\/h2>\n<h3 id=\"salt-master-sls-files\">T\u1ec7p Salt Master SLS<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#salt-master-sls-files\"><\/a><\/h3>\n<p>1.T\u1ea1o&nbsp;<code>\/srv\/salt<\/code>th\u01b0 m\u1ee5c n\u1ebfu n\u00f3 ch\u01b0a t\u1ed3n t\u1ea1i:<\/p>\n<pre class=\"wp-block-code\"><code>mkdir \/srv\/salt\n<\/code><\/pre>\n<p>2.T\u1ea1o m\u1ed9t t\u1ec7p Salt top trong&nbsp;<code>\/srv\/salt<\/code>\u0111\u00f3 s\u1ebd l\u00e0 \u0111i\u1ec3m v\u00e0o c\u1ee7a Salt cho c\u1ea5u h\u00ecnh Apache:<\/p>\n<pre class=\"wp-block-code\"><code>base:\n  'G@os_family:Debian':\n    - match: compound\n    - apache-debian\n\n  'G@os:CentOS':\n    - match: compound\n    - apache-centos<\/code><\/pre>\n<p>T\u1ec7p tr\u00ean c\u00f9ng n\u00e0y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.saltstack.com\/en\/latest\/topics\/targeting\/compound.html\" target=\"_blank\" rel=\"noreferrer noopener\">ph\u00e9p gh\u00e9p h\u1ee3p ch\u1ea5t<\/a>&nbsp;\u0111\u1ec3 nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ebfn c\u00e1c minion c\u1ee7a b\u1ea1n theo h\u1ec7 \u0111i\u1ec1u h\u00e0nh b\u1eb1ng Salt Grains. \u0110i\u1ec1u n\u00e0y s\u1ebd cho ph\u00e9p Salt ch\u1ecdn c\u1ea5u h\u00ecnh Apache ph\u00f9 h\u1ee3p t\u00f9y thu\u1ed9c v\u00e0o b\u1ea3n ph\u00e2n ph\u1ed1i Linux. C\u00e1c tr\u00ecnh gh\u00e9p n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c m\u1edf r\u1ed9ng \u0111\u1ec3 c\u1ee5 th\u1ec3 h\u01a1n n\u1eefa. V\u00ed d\u1ee5, n\u1ebfu b\u1ea1n ch\u1ec9 mu\u1ed1n nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ebfn c\u00e1c minion c\u00f3 ID&nbsp;<code>web-server<\/code>\u0111ang ch\u1ea1y tr\u00ean Ubuntu, b\u1ea1n c\u00f3 th\u1ec3 nh\u1eadp&nbsp;<code>web* and G@os:Ubuntu<\/code>.<\/p>\n<h3 id=\"pillar-files\">T\u1ec7p Pillar&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#pillar-files\"><\/a><\/h3>\n<p>1.T\u1ea1o&nbsp;<code>\/srv\/pillar<\/code>th\u01b0 m\u1ee5c n\u1ebfu n\u00f3 ch\u01b0a t\u1ed3n t\u1ea1i:<\/p>\n<pre class=\"wp-block-code\"><code>mkdir \/srv\/pillar<\/code><\/pre>\n<p>2.T\u1ea1o m\u1ed9t t\u1ec7p Pillar top. T\u1ec7p top n\u00e0y tham chi\u1ebfu \u0111\u1ebfn&nbsp;<code>apache.sls<\/code>t\u1ec7p Pillar m\u00e0 b\u1ea1n s\u1ebd t\u1ea1o \u1edf b\u01b0\u1edbc ti\u1ebfp theo:<\/p>\n<pre class=\"wp-block-code\"><code>base:\n  '*':\n    - apache<\/code><\/pre>\n<p>3.T\u1ea1o&nbsp;<code>apache.sls<\/code>t\u1ec7p \u0111\u01b0\u1ee3c tham chi\u1ebfu \u1edf b\u01b0\u1edbc tr\u01b0\u1edbc. T\u1ec7p n\u00e0y \u0111\u1ecbnh ngh\u0129a d\u1eef li\u1ec7u Pillar s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng b\u00ean trong t\u1ec7p tr\u1ea1ng th\u00e1i Apache c\u1ee7a ch\u00fang t\u00f4i \u1edf ph\u1ea7n ti\u1ebfp theo, trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y l\u00e0 t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n. Thay th\u1ebf&nbsp;<code>example.com<\/code>b\u1eb1ng t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>domain: example.com<\/code><\/pre>\n<h3 id=\"website-files\">T\u1eadp tin trang web<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#website-files\"><\/a><\/h3>\n<p>1.T\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c cho c\u00e1c t\u1eadp tin trang web c\u1ee7a b\u1ea1n trong th\u01b0&nbsp;<code>\/srv\/salt<\/code>m\u1ee5c. Thay th\u1ebf&nbsp;<code>example.com<\/code>b\u1eb1ng t\u00ean mi\u1ec1n trang web c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>mkdir \/srv\/salt\/example.com\n<\/code><\/pre>\n<p>B\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp th\u01b0 m\u1ee5c n\u00e0y t\u1eeb c\u00e1c t\u1ec7p tr\u1ea1ng th\u00e1i Salt t\u1ea1i&nbsp;<code>salt:\/\/example.com<\/code>.<\/p>\n<p>2.T\u1ea1o m\u1ed9t&nbsp;<code>index.html<\/code>t\u1ec7p cho trang web c\u1ee7a b\u1ea1n trong&nbsp;<code>\/srv\/salt\/example.com<\/code>th\u01b0 m\u1ee5c, thay th\u1ebf&nbsp;<code>example.com<\/code>cho t\u00ean th\u01b0 m\u1ee5c b\u1ea1n \u0111\u00e3 ch\u1ecdn \u1edf b\u01b0\u1edbc tr\u01b0\u1edbc. B\u1ea1n s\u1ebd s\u1eed d\u1ee5ng t\u1ec7p n\u00e0y nh\u01b0 m\u1ed9t b\u00e0i ki\u1ec3m tra \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o trang web c\u1ee7a b\u1ea1n ho\u1ea1t \u0111\u1ed9ng b\u00ecnh th\u01b0\u1eddng.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;html&gt;\n  &lt;body&gt;\n    &lt;h1&gt;Server Up and Running!&lt;\/h1&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3 id=\"configuration-files\">T\u1eadp tin c\u1ea5u h\u00ecnh<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#configuration-files\"><\/a><\/h3>\n<p>1.T\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c cho c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh b\u1ed5 sung c\u1ee7a b\u1ea1n t\u1ea1i&nbsp;<code>\/srv\/salt\/files<\/code>. C\u00e1c t\u1ec7p n\u00e0y s\u1ebd c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c t\u1ea1i&nbsp;<code>salt:\/\/files<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>mkdir \/srv\/salt\/files\n<\/code><\/pre>\n<p>2.T\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean l\u00e0&nbsp;<code>tune_apache.conf<\/code>in&nbsp;<code>\/srv\/salt\/files<\/code>v\u00e0 d\u00e1n kh\u1ed1i sau v\u00e0o:<\/p>\n<pre class=\"wp-block-code\"><code>&lt;IfModule mpm_prefork_module&gt;\nStartServers 4\nMinSpareServers 20\nMaxSpareServers 40\nMaxClients 200\nMaxRequestsPerChild 4500\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>M\u00f4-\u0111un prefork MPM n\u00e0y cung c\u1ea5p&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/tuning-your-apache-server\/\">kh\u1ea3 n\u0103ng \u0111i\u1ec1u ch\u1ec9nh b\u1ed5 sung cho c\u00e0i \u0111\u1eb7t Apache c\u1ee7a b\u1ea1n<\/a>&nbsp;. T\u1ec7p n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c Salt qu\u1ea3n l\u00fd v\u00e0 c\u00e0i \u0111\u1eb7t v\u00e0o th\u01b0 m\u1ee5c c\u1ea5u h\u00ecnh ph\u00f9 h\u1ee3p \u1edf b\u01b0\u1edbc sau.<\/p>\n<p>3.N\u1ebfu b\u1ea1n s\u1ebd c\u00e0i \u0111\u1eb7t Apache tr\u00ean m\u00e1y CentOS, h\u00e3y t\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean l\u00e0&nbsp;<code>include_sites_enabled.conf<\/code>v\u00e0&nbsp;<code>\/srv\/salt\/files<\/code>d\u00e1n n\u1ed9i dung sau v\u00e0o:<\/p>\n<pre class=\"wp-block-code\"><code>IncludeOptional sites-enabled\/*.conf<\/code><\/pre>\n<p>T\u1ec7p n\u00e0y s\u1ebd cho ph\u00e9p ch\u00fang ta s\u1eed d\u1ee5ng c\u00e1c th\u01b0 m\u1ee5c t\u1ec7p gi\u1ed1ng nh\u01b0 nh\u1eefng th\u01b0 m\u1ee5c c\u00f3 trong c\u00e0i \u0111\u1eb7t Debian \u0111\u1ec3 gi\u00fap s\u1eafp x\u1ebfp c\u1ea5u h\u00ecnh Apache.<\/p>\n<h2 id=\"creating-the-apache-state-file-for-debian-and-ubuntu\">T\u1ea1o t\u1ec7p tr\u1ea1ng th\u00e1i Apache cho Debian v\u00e0 Ubuntu<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#creating-the-apache-state-file-for-debian-and-ubuntu\"><\/a><\/h2>\n<h3 id=\"individual-steps\">C\u00e1c b\u01b0\u1edbc ri\u00eang l\u1ebb<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#individual-steps\"><\/a><\/h3>\n<p>H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc qu\u00e1 tr\u00ecnh t\u1ea1o t\u1ec7p tr\u1ea1ng th\u00e1i Apache cho Debian v\u00e0 Ubuntu. N\u1ebfu b\u1ea1n mu\u1ed1n xem to\u00e0n b\u1ed9 t\u1ec7p tr\u1ea1ng th\u00e1i,&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#complete-state-file\">b\u1ea1n c\u00f3 th\u1ec3 xem \u1edf cu\u1ed1i ph\u1ea7n n\u00e0y<\/a>&nbsp;.<\/p>\n<p>1.T\u1ea1o m\u1ed9t t\u1ec7p tr\u1ea1ng th\u00e1i c\u00f3 t\u00ean&nbsp;<code>apache-debian.sls<\/code>l\u00e0&nbsp;<code>\/srv\/salt<\/code>v\u00e0 m\u1edf t\u1ec7p \u0111\u00f3 trong tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n m\u00e0 b\u1ea1n ch\u1ecdn.<\/p>\n<p>2.H\u01b0\u1edbng d\u1eabn Salt c\u00e0i \u0111\u1eb7t&nbsp;<code>apache2<\/code>g\u00f3i v\u00e0 kh\u1edfi \u0111\u1ed9ng&nbsp;<code>apache2<\/code>d\u1ecbch v\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>apache2:\n  pkg.installed\n\napache2 Service:\n  service.running:\n    - name: apache2\n    - enable: True\n    - require:\n      - pkg: apache2\n\n...<\/code><\/pre>\n<p>T\u1ea1i \u0111\u00e2y Salt \u0111\u1ea3m b\u1ea3o&nbsp;<code>apache2<\/code>g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t b\u1eb1ng&nbsp;<code>pkg.installed<\/code>. T\u01b0\u01a1ng t\u1ef1 nh\u01b0 v\u1eady, n\u00f3 \u0111\u1ea3m b\u1ea3o&nbsp;<code>apache2<\/code>d\u1ecbch v\u1ee5 \u0111ang ch\u1ea1y v\u00e0 \u0111\u01b0\u1ee3c b\u1eadt trong&nbsp;<code>service.running<\/code>. C\u0169ng trong&nbsp;<code>service.running<\/code>,&nbsp;<code>apache-debian.sls<\/code>s\u1eed d\u1ee5ng&nbsp;<code>require<\/code>\u0111\u1ec3 \u0111\u1ea3m b\u1ea3o l\u1ec7nh n\u00e0y kh\u00f4ng ch\u1ea1y tr\u01b0\u1edbc khi&nbsp;<code>apache2<\/code>g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t.&nbsp;<code>require<\/code>B\u01b0\u1edbc n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c l\u1eb7p l\u1ea1i trong su\u1ed1t&nbsp;<code>apache-debian.sls<\/code>.<\/p>\n<p>Cu\u1ed1i c\u00f9ng, m\u1ed9t&nbsp;<code>watch<\/code>c\u00e2u l\u1ec7nh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng l\u1ea1i&nbsp;<code>apache2<\/code>d\u1ecbch v\u1ee5 n\u1ebfu t\u1ec7p c\u1ea5u h\u00ecnh c\u1ee7a trang web c\u1ee7a b\u1ea1n thay \u0111\u1ed5i. B\u1ea1n s\u1ebd \u0111\u1ecbnh ngh\u0129a t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00f3 trong b\u01b0\u1edbc sau. L\u01b0u \u00fd r\u1eb1ng t\u1ec7p c\u1ea5u h\u00ecnh n\u00e0y \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean b\u1eb1ng t\u00ean mi\u1ec1n b\u1ea1n \u0111\u00e3 cung c\u1ea5p khi t\u1ea1o t\u1ec7p Salt Pillar trong ph\u1ea7n \u0111\u1ea7u ti\u00ean. D\u1eef li\u1ec7u Pillar n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong su\u1ed1t&nbsp;<code>apache-debian.sls<\/code>.<\/p>\n<p>3.T\u1eaft KeepAlive:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\nTurn Off KeepAlive:\n  file.replace:\n    - name: \/etc\/apache2\/apache2.conf\n    - pattern: 'KeepAlive On'\n    - repl: 'KeepAlive Off'\n    - show_changes: True\n    - require:\n      - pkg: apache2\n...<\/code><\/pre>\n<p>KeepAlive cho ph\u00e9p nhi\u1ec1u y\u00eau c\u1ea7u \u0111\u01b0\u1ee3c g\u1eedi qua c\u00f9ng m\u1ed9t k\u1ebft n\u1ed1i TCP. \u0110\u1ed1i v\u1edbi m\u1ee5c \u0111\u00edch c\u1ee7a h\u01b0\u1edbng d\u1eabn n\u00e0y, KeepAlive s\u1ebd b\u1ecb v\u00f4 hi\u1ec7u h\u00f3a. \u0110\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a, Salt \u0111\u01b0\u1ee3c h\u01b0\u1edbng d\u1eabn t\u00ecm ch\u1ec9 th\u1ecb KeepAlive&nbsp;<code>\/etc\/apache2\/apache2.conf<\/code>b\u1eb1ng c\u00e1ch kh\u1edbp m\u1ed9t m\u1eabu v\u00e0 thay th\u1ebf b\u1eb1ng&nbsp;<code>KeepAlive Off<\/code>.&nbsp;<code>show_changes<\/code>h\u01b0\u1edbng d\u1eabn Salt hi\u1ec3n th\u1ecb b\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o \u0111\u00e3 th\u1ef1c hi\u1ec7n trong tr\u1ea1ng th\u00e1i cao.<\/p>\n<p>4.Chuy\u1ec3n&nbsp;<code>tune_apache.conf<\/code>\u0111\u1ebfn minion c\u1ee7a b\u1ea1n v\u00e0 k\u00edch ho\u1ea1t n\u00f3:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/etc\/apache2\/conf-available\/tune_apache.conf:\n  file.managed:\n    - source: salt:\/\/files\/tune_apache.conf\n    - require:\n      - pkg: apache2\n\nEnable tune_apache:\n  apache_conf.enabled:\n    - name: tune_apache\n    - require:\n      - pkg: apache2\n\n...<\/code><\/pre>\n<p>B\u01b0\u1edbc n\u00e0y l\u1ea5y&nbsp;<code>tune_apache.conf<\/code>t\u1ec7p b\u1ea1n \u0111\u00e3 t\u1ea1o trong b\u01b0\u1edbc&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#configuration-files\">T\u1ec7p c\u1ea5u h\u00ecnh<\/a>&nbsp;v\u00e0 chuy\u1ec3n n\u00f3 \u0111\u1ebfn minion Salt c\u1ee7a b\u1ea1n. Sau \u0111\u00f3, Salt k\u00edch ho\u1ea1t t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00f3 b\u1eb1ng&nbsp;<a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache_conf.html\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00f4-\u0111un apache_conf<\/a>&nbsp;.<\/p>\n<p>5.T\u1ea1o c\u00e1c th\u01b0 m\u1ee5c c\u1ea7n thi\u1ebft:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/backups:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html:\n  file.directory\n\n...<\/code><\/pre>\n<p>6.V\u00f4 hi\u1ec7u h\u00f3a t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o m\u1eb7c \u0111\u1ecbnh:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n000-default:\n  apache_site.disabled:\n    - require:\n      - pkg: apache2\n\n...<\/code><\/pre>\n<p><a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache_site.html\" target=\"_blank\" rel=\"noreferrer noopener\">B\u01b0\u1edbc n\u00e0y s\u1eed d\u1ee5ng m\u00f4-\u0111un apache_site<\/a>&nbsp;c\u1ee7a Salt&nbsp;\u0111\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o Apache m\u1eb7c \u0111\u1ecbnh v\u00e0 gi\u1ed1ng nh\u01b0 khi ch\u1ea1y&nbsp;<code>a2dissite<\/code>tr\u00ean m\u00e1y ch\u1ea1y Debian.<\/p>\n<p>7.T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o cho trang web c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/etc\/apache2\/sites-available\/{{ pillar&#91;'domain'] }}.conf:\n  apache.configfile:\n    - config:\n      - VirtualHost:\n          this: '*:80'\n          ServerName:\n            - {{ pillar&#91;'domain'] }}\n          ServerAlias:\n            - www.{{ pillar&#91;'domain'] }}\n          DocumentRoot: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\n          ErrorLog: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log\/error.log\n          CustomLog: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log\/access.log combined\n\n...<\/code><\/pre>\n<p>B\u01b0\u1edbc n\u00e0y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache.html\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00f4-\u0111un apache<\/a>&nbsp;c\u1ee7a Salt (kh\u00f4ng n\u00ean nh\u1ea7m l\u1eabn v\u1edbi m\u00f4&nbsp;<code>apache_site<\/code>-\u0111un \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong b\u01b0\u1edbc tr\u01b0\u1edbc) \u0111\u1ec3 t\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o c\u1ee7a trang web c\u1ee7a b\u1ea1n.&nbsp;<code>this<\/code>Bi\u1ebfn n\u00e0y bi\u1ec3u th\u1ecb nh\u1eefng g\u00ec theo truy\u1ec1n th\u1ed1ng s\u1ebd \u0111\u01b0\u1ee3c bao g\u1ed3m&nbsp;<code>VirtualHost<\/code>trong d\u1ea5u ngo\u1eb7c nh\u1ecdn trong t\u1ec7p c\u1ea5u h\u00ecnh Apache:&nbsp;<code>&lt;VirtualHost *:80&gt;<\/code>.<\/p>\n<p>8.K\u00edch ho\u1ea1t t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o m\u1edbi c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n{{ pillar&#91;'domain'] }}:\n  apache_site.enabled:\n    - require:\n      - pkg: apache2\n\n...<\/code><\/pre>\n<p>B\u01b0\u1edbc n\u00e0y s\u1eed d\u1ee5ng c\u00f9ng m\u1ed9t&nbsp;<code>apache_site<\/code>m\u00f4-\u0111un m\u00e0 b\u1ea1n \u0111\u00e3 d\u00f9ng \u0111\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a t\u1ec7p m\u00e1y ch\u1ee7 \u1ea3o m\u1eb7c \u0111\u1ecbnh nh\u1eb1m k\u00edch ho\u1ea1t t\u1ec7p m\u00e1y ch\u1ee7 \u1ea3o m\u1edbi t\u1ea1o c\u1ee7a b\u1ea1n.&nbsp;<code>apache_site.enabled<\/code>t\u1ea1o m\u1ed9t li\u00ean k\u1ebft t\u01b0\u1ee3ng tr\u01b0ng t\u1eeb&nbsp;<code>\/etc\/apache2\/sites-available\/example.com.conf<\/code>\u0111\u1ebfn&nbsp;<code>\/etc\/apache2\/sites-enabled\/example.com.conf<\/code>v\u00e0 gi\u1ed1ng nh\u01b0 khi ch\u1ea1y&nbsp;<code>a2ensite<\/code>tr\u00ean m\u00e1y ch\u1ea1y Debian.<\/p>\n<p>9.Chuy\u1ec3n&nbsp;<code>index.html<\/code>t\u1eadp tin trang web c\u1ee7a b\u1ea1n t\u1edbi minion c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\/index.html:\n  file.managed:\n    - source: salt:\/\/{{ pillar&#91;'domain'] }}\/index.html<\/code><\/pre>\n<p>B\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n v\u1edbi&nbsp;<code>index.html<\/code>t\u1ec7p tr\u00ean Salt master c\u1ee7a b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c truy\u1ec1n \u0111\u1ebfn minion c\u1ee7a b\u1ea1n.<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: V\u00ec Salt kh\u00f4ng theo d\u00f5i c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u1ec3 ph\u00e1t hi\u1ec7n thay \u0111\u1ed5i nh\u1eb1m k\u00edch ho\u1ea1t kh\u1edfi \u0111\u1ed9ng l\u1ea1i Apache, n\u00ean b\u1ea1n c\u00f3 th\u1ec3 c\u1ea7n s\u1eed d\u1ee5ng l\u1ec7nh b\u00ean d\u01b0\u1edbi t\u1eeb m\u00e1y ch\u1ee7 Salt c\u1ee7a m\u00ecnh.<\/p>\n<pre class=\"wp-block-code\"><code>salt '*' apache.signal restart\n<\/code><\/pre>\n<h3 id=\"complete-state-file\">H\u1ed3 s\u01a1 ho\u00e0n ch\u1ec9nh State File<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#complete-state-file\"><\/a><\/h3>\n<p>T\u1ec7p tin \u0111\u1ea7y \u0111\u1ee7&nbsp;<code>apache-debian.sls<\/code>tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0y:<\/p>\n<pre class=\"wp-block-code\"><code>apache2:\n  pkg.installed\n\napache2 Service:\n  service.running:\n    - name: apache2\n    - enable: True\n    - require:\n      - pkg: apache2\n\nTurn Off KeepAlive:\n  file.replace:\n    - name: \/etc\/apache2\/apache2.conf\n    - pattern: 'KeepAlive On'\n    - repl: 'KeepAlive Off'\n    - show_changes: True\n    - require:\n      - pkg: apache2\n\n\/etc\/apache2\/conf-available\/tune_apache.conf:\n  file.managed:\n    - source: salt:\/\/files\/tune_apache.conf\n    - require:\n      - pkg: apache2\n\nEnable tune_apache:\n  apache_conf.enabled:\n    - name: tune_apache\n    - require:\n      - pkg: apache2\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/backups:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html:\n  file.directory\n\n000-default:\n  apache_site.disabled:\n    - require:\n      - pkg: apache2\n\n\/etc\/apache2\/sites-available\/{{ pillar&#91;'domain'] }}.conf:\n  apache.configfile:\n    - config:\n      - VirtualHost:\n          this: '*:80'\n          ServerName:\n            - {{ pillar&#91;'domain'] }}\n          ServerAlias:\n            - www.{{ pillar&#91;'domain'] }}\n          DocumentRoot: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\n          ErrorLog: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log\/error.log\n          CustomLog: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/log\/access.log combined\n\n{{ pillar&#91;'domain'] }}:\n  apache_site.enabled:\n    - require:\n      - pkg: apache2\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\/index.html:\n  file.managed:\n    - source: salt:\/\/{{ pillar&#91;'domain'] }}\/index.html<\/code><\/pre>\n<h2 id=\"creating-an-apache-state-file-for-centos\">T\u1ea1o m\u1ed9t t\u1ec7p tr\u1ea1ng th\u00e1i Apache cho CentOS<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#creating-an-apache-state-file-for-centos\"><\/a><\/h2>\n<h3 id=\"individual-steps-1\">C\u00e1c b\u01b0\u1edbc ri\u00eang l\u1ebb<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#individual-steps-1\"><\/a><\/h3>\n<p>1.T\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean l\u00e0&nbsp;<code>apache-centos.sls<\/code>in&nbsp;<code>\/srv\/salt<\/code>v\u00e0 m\u1edf t\u1ec7p \u0111\u00f3 trong tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n m\u00e0 b\u1ea1n ch\u1ecdn.<\/p>\n<p>2.Tr\u00ean CentOS Apache \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean l\u00e0&nbsp;<code>httpd<\/code>. H\u01b0\u1edbng d\u1eabn Salt c\u00e0i \u0111\u1eb7t&nbsp;<code>httpd<\/code>v\u00e0 ch\u1ea1y&nbsp;<code>httpd<\/code>d\u1ecbch v\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>httpd:\n  pkg.installed\n\nhttpd Service:\n  service.running:\n    - name: httpd\n    - enable: True\n    - require:\n      - pkg: httpd\n    - watch:\n      - file: \/etc\/httpd\/sites-available\/{{ pillar&#91;'domain'] }}.conf\n\n...<\/code><\/pre>\n<p>T\u1ea1i \u0111\u00e2y Salt \u0111\u1ea3m b\u1ea3o&nbsp;<code>httpd<\/code>g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t b\u1eb1ng&nbsp;<code>pkg.installed<\/code>. T\u01b0\u01a1ng t\u1ef1 nh\u01b0 v\u1eady, n\u00f3 \u0111\u1ea3m b\u1ea3o&nbsp;<code>httpd<\/code>d\u1ecbch v\u1ee5 \u0111ang ch\u1ea1y v\u00e0 \u0111\u01b0\u1ee3c b\u1eadt trong&nbsp;<code>service.running<\/code>. C\u0169ng trong&nbsp;<code>service.running<\/code>,&nbsp;<code>apache-debian.sls<\/code>s\u1eed d\u1ee5ng&nbsp;<code>require<\/code>\u0111\u1ec3 \u0111\u1ea3m b\u1ea3o l\u1ec7nh n\u00e0y kh\u00f4ng ch\u1ea1y tr\u01b0\u1edbc khi&nbsp;<code>httpd<\/code>g\u00f3i \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t.&nbsp;<code>require<\/code>B\u01b0\u1edbc n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c l\u1eb7p l\u1ea1i trong su\u1ed1t&nbsp;<code>apache-centos.sls<\/code>.Cu\u1ed1i c\u00f9ng, m\u1ed9t&nbsp;<code>watch<\/code>c\u00e2u l\u1ec7nh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 kh\u1edfi \u0111\u1ed9ng l\u1ea1i&nbsp;<code>httpd<\/code>d\u1ecbch v\u1ee5 n\u1ebfu t\u1ec7p c\u1ea5u h\u00ecnh c\u1ee7a trang web c\u1ee7a b\u1ea1n thay \u0111\u1ed5i. B\u1ea1n s\u1ebd \u0111\u1ecbnh ngh\u0129a t\u1ec7p c\u1ea5u h\u00ecnh \u0111\u00f3 trong b\u01b0\u1edbc sau. L\u01b0u \u00fd r\u1eb1ng t\u1ec7p c\u1ea5u h\u00ecnh n\u00e0y \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean b\u1eb1ng t\u00ean mi\u1ec1n b\u1ea1n \u0111\u00e3 cung c\u1ea5p khi t\u1ea1o t\u1ec7p Salt Pillar trong ph\u1ea7n \u0111\u1ea7u ti\u00ean. D\u1eef li\u1ec7u Pillar n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong su\u1ed1t&nbsp;<code>apache-centos.sls<\/code>.<\/p>\n<p>3.T\u1eaft KeepAlive:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\nTurn Off KeepAlive:\n  file.replace:\n    - name: \/etc\/httpd\/conf\/httpd.conf\n    - pattern: 'KeepAlive On'\n    - repl: 'KeepAlive Off'\n    - show_changes: True\n    - require:\n      - pkg: httpd\n...<\/code><\/pre>\n<p>KeepAlive cho ph\u00e9p nhi\u1ec1u y\u00eau c\u1ea7u \u0111\u01b0\u1ee3c g\u1eedi qua c\u00f9ng m\u1ed9t k\u1ebft n\u1ed1i TCP. \u0110\u1ed1i v\u1edbi m\u1ee5c \u0111\u00edch c\u1ee7a h\u01b0\u1edbng d\u1eabn n\u00e0y, KeepAlive s\u1ebd b\u1ecb v\u00f4 hi\u1ec7u h\u00f3a. \u0110\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a, Salt \u0111\u01b0\u1ee3c h\u01b0\u1edbng d\u1eabn t\u00ecm ch\u1ec9 th\u1ecb KeepAlive&nbsp;<code>\/etc\/httpd\/conf\/httpd.conf<\/code>b\u1eb1ng c\u00e1ch kh\u1edbp m\u1ed9t m\u1eabu v\u00e0 thay th\u1ebf b\u1eb1ng&nbsp;<code>KeepAlive Off<\/code>.&nbsp;<code>show_changes<\/code>h\u01b0\u1edbng d\u1eabn Salt hi\u1ec3n th\u1ecb b\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o \u0111\u00e3 th\u1ef1c hi\u1ec7n trong tr\u1ea1ng th\u00e1i cao.<\/p>\n<p>4.Thay \u0111\u1ed5i DocumentRoot:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\nChange DocumentRoot:\n  file.replace:\n    - name: \/etc\/httpd\/conf\/httpd.conf\n    - pattern: 'DocumentRoot \"\/var\/www\/html\"'\n    - repl: 'DocumentRoot \"\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\"'\n    - show_changes: True\n    - require:\n      - pkg: httpd\n\n...<\/code><\/pre>\n<p>T\u01b0\u01a1ng t\u1ef1 nh\u01b0 b\u01b0\u1edbc cu\u1ed1i c\u00f9ng, trong b\u01b0\u1edbc n\u00e0y&nbsp;<code>salt-centos.sls<\/code>h\u01b0\u1edbng d\u1eabn Salt t\u00ecm ki\u1ebfm ch\u1ec9 th\u1ecb DocumentRoot trong t\u1ec7p Apache&nbsp;<code>httpd.conf<\/code>v\u00e0 thay th\u1ebf d\u00f2ng \u0111\u00f3 b\u1eb1ng g\u1ed1c t\u00e0i li\u1ec7u m\u1edbi. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p s\u1eed d\u1ee5ng ki\u1ebfn \u200b\u200btr\u00fac th\u01b0 m\u1ee5c trang web theo phong c\u00e1ch Debian.<\/p>\n<p>5.Chuy\u1ec3n&nbsp;<code>tune_apache.conf<\/code>v\u00e0&nbsp;<code>include_sites_enabled.conf<\/code>cho l\u00ednh c\u1ee7a b\u1ea1n.<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/etc\/httpd\/conf.d\/tune_apache.conf:\n  file.managed:\n    - source: salt:\/\/files\/tune_apache.conf\n    - require:\n      - pkg: httpd\n\n\/etc\/httpd\/conf.d\/include_sites_enabled.conf:\n  file.managed:\n    - source: salt:\/\/files\/include_sites_enabled.conf\n    - require:\n      - pkg: httpd\n\n...<\/code><\/pre>\n<p>6.T\u1ea1o c\u00e1c th\u01b0 m\u1ee5c c\u1ea7n thi\u1ebft:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/etc\/httpd\/sites-available:\n  file.directory\n\n\/etc\/httpd\/sites-enabled:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/backups:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html:\n  file.directory\n\n...<\/code><\/pre>\n<p>7.T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o cho trang web c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/etc\/httpd\/sites-available\/{{ pillar&#91;'domain'] }}.conf:\n  apache.configfile:\n    - config:\n      - VirtualHost:\n          this: '*:80'\n          ServerName:\n            - {{ pillar&#91;'domain'] }}\n          ServerAlias:\n            - www.{{ pillar&#91;'domain'] }}\n          DocumentRoot: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\n  file.symlink:\n    - target: \/etc\/httpd\/sites-enabled\/{{ pillar&#91;'domain'] }}.conf\n    - force: True\n\n...<\/code><\/pre>\n<p>B\u01b0\u1edbc n\u00e0y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache.html\" target=\"_blank\" rel=\"noreferrer noopener\">m\u00f4-\u0111un apache<\/a>&nbsp;c\u1ee7a Salt \u0111\u1ec3 t\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 \u1ea3o c\u1ee7a trang web c\u1ee7a b\u1ea1n.&nbsp;<code>this<\/code>Bi\u1ebfn n\u00e0y bi\u1ec3u th\u1ecb nh\u1eefng g\u00ec theo truy\u1ec1n th\u1ed1ng s\u1ebd \u0111\u01b0\u1ee3c bao g\u1ed3m&nbsp;<code>VirtualHost<\/code>trong d\u1ea5u ngo\u1eb7c nh\u1ecdn trong t\u1ec7p c\u1ea5u h\u00ecnh Apache:&nbsp;<code>&lt;VirtualHost *:80&gt;<\/code>.<\/p>\n<p>8.Chuy\u1ec3n&nbsp;<code>index.html<\/code>t\u1eadp tin trang web c\u1ee7a b\u1ea1n t\u1edbi minion c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\/index.html:\n  file.managed:\n    - source: salt:\/\/{{ pillar&#91;'domain'] }}\/index.html\n\n...<\/code><\/pre>\n<p>B\u1ea5t k\u1ef3 thay \u0111\u1ed5i n\u00e0o \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n v\u1edbi&nbsp;<code>index.html<\/code>t\u1ec7p tr\u00ean m\u00e1y ch\u1ee7 Salt c\u1ee7a b\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c truy\u1ec1n \u0111\u1ebfn m\u00e1y ch\u1ee7 minion c\u1ee7a b\u1ea1n.<\/p>\n<p>9.C\u1ea5u h\u00ecnh t\u01b0\u1eddng l\u1eeda c\u1ee7a b\u1ea1n \u0111\u1ec3 cho ph\u00e9p l\u01b0u l\u01b0\u1ee3ng truy c\u1eadp http v\u00e0 https:<\/p>\n<pre class=\"wp-block-code\"><code>...\n\nConfigure Firewall:\n  firewalld.present:\n    - name: public\n    - ports:\n      - 22\/tcp\n      - 80\/tcp\n      - 443\/tcp<\/code><\/pre>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: B\u1ea1n ph\u1ea3i li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c c\u1ed5ng c\u1ea7n m\u1edf cho m\u00e1y c\u1ee7a m\u00ecnh trong ph\u1ea7n n\u00e0y. N\u1ebfu kh\u00f4ng li\u1ec7t k\u00ea c\u00e1c c\u1ed5ng n\u00e0y, Salt s\u1ebd \u0111\u00f3ng ch\u00fang.<\/p>\n<h3 id=\"complete-state-file-1\">H\u1ed3 s\u01a1 ho\u00e0n ch\u1ec9nh State File<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#complete-state-file-1\"><\/a><\/h3>\n<p>T\u1ec7p tin \u0111\u1ea7y \u0111\u1ee7&nbsp;<code>apache-centos.sls<\/code>tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0y:<\/p>\n<pre class=\"wp-block-code\"><code>httpd:\n  pkg.installed\n\nhttpd Service:\n  service.running:\n    - name: httpd\n    - enable: True\n    - require:\n      - pkg: httpd\n    - watch:\n      - file: \/etc\/httpd\/sites-available\/{{ pillar&#91;'domain'] }}.conf\n\nTurn off KeepAlive:\n  file.replace:\n    - name: \/etc\/httpd\/conf\/httpd.conf\n    - pattern: 'KeepAlive On'\n    - repl: 'KeepAlive Off'\n    - show_changes: True\n    - require:\n      - pkg: httpd\n\nChange DocumentRoot:\n  file.replace:\n    - name: \/etc\/httpd\/conf\/httpd.conf\n    - pattern: 'DocumentRoot \"\/var\/www\/html\"'\n    - repl: 'DocumentRoot \"\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\"'\n    - show_changes: True\n    - require:\n      - pkg: httpd\n\n\/etc\/httpd\/conf.d\/tune_apache.conf:\n  file.managed:\n    - source: salt:\/\/files\/tune_apache.conf\n    - require:\n      - pkg: httpd\n\n\/etc\/httpd\/conf.d\/include_sites_enabled.conf:\n  file.managed:\n    - source: salt:\/\/files\/include_sites_enabled.conf\n    - require:\n      - pkg: httpd\n\n\/etc\/httpd\/sites-available:\n  file.directory\n\n\/etc\/httpd\/sites-enabled:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/backups:\n  file.directory\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html:\n  file.directory\n\n\/etc\/httpd\/sites-available\/{{ pillar&#91;'domain'] }}.conf:\n  apache.configfile:\n    - config:\n      - VirtualHost:\n          this: '*:80'\n          ServerName:\n            - {{ pillar&#91;'domain'] }}\n          ServerAlias:\n            - www.{{ pillar&#91;'domain'] }}\n          DocumentRoot: \/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\n  file.symlink:\n    - target: \/etc\/httpd\/sites-enabled\/{{ pillar&#91;'domain'] }}.conf\n    - force: True\n\n\/var\/www\/html\/{{ pillar&#91;'domain'] }}\/public_html\/index.html:\n  file.managed:\n    - source: salt:\/\/{{ pillar&#91;'domain'] }}\/index.html\n\nConfigure Firewall:\n  firewalld.present:\n    - name: public\n    - ports:\n      - 22\/tcp\n      - 80\/tcp\n      - 443\/tcp<\/code><\/pre>\n<h2 id=\"running-the-apache-state-file\">Ch\u1ea1y T\u1ec7p Tr\u1ea1ng th\u00e1i Apache<a href=\"https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/#running-the-apache-state-file\"><\/a><\/h2>\n<p>Tr\u00ean Salt master c\u1ee7a b\u1ea1n, h\u00e3y \u0111\u01b0a ra l\u1ec7nh highstate:<\/p>\n<pre class=\"wp-block-code\"><code>salt '*' state.apply\n<\/code><\/pre>\n<p>Sau m\u1ed9t v\u00e0i ph\u00fat, b\u1ea1n s\u1ebd th\u1ea5y danh s\u00e1ch c\u00e1c l\u1ec7nh Salt v\u00e0 t\u00f3m t\u1eaft v\u1ec1 th\u00e0nh c\u00f4ng c\u1ee7a ch\u00fang. \u0110i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn t\u00ean mi\u1ec1n c\u1ee7a trang web n\u1ebfu b\u1ea1n \u0111\u00e3 thi\u1ebft l\u1eadp DNS ho\u1eb7c \u0111\u1ecba ch\u1ec9 IP c\u00f4ng khai c\u1ee7a trang web. B\u1ea1n s\u1ebd th\u1ea5y&nbsp;<code>index.html<\/code>t\u1ec7p c\u1ee7a m\u00ecnh. B\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 s\u1eed d\u1ee5ng Salt \u0111\u1ec3 c\u1ea5u h\u00ecnh Apache. Truy c\u1eadp c\u00e1c li\u00ean k\u1ebft trong ph\u1ea7n b\u00ean d\u01b0\u1edbi \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache.html\" target=\"_blank\" rel=\"noreferrer noopener\">M\u00f4-\u0111un tr\u1ea1ng th\u00e1i Salt Apache<\/a><\/li>\n<li><a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache_conf.html\" target=\"_blank\" rel=\"noreferrer noopener\">M\u00f4-\u0111un tr\u1ea1ng th\u00e1i Salt Apache_Conf<\/a><\/li>\n<li><a href=\"https:\/\/docs.saltstack.com\/en\/latest\/ref\/states\/all\/salt.states.apache_site.html\" target=\"_blank\" rel=\"noreferrer noopener\">M\u00f4-\u0111un Salt Apache_Site State<\/a><\/li>\n<li><a href=\"https:\/\/docs.saltstack.com\/en\/latest\/topics\/tutorials\/states_pt3.html#using-grains-in-sls-modules\" target=\"_blank\" rel=\"noreferrer noopener\">S\u1eed d\u1ee5ng h\u1ea1t trong m\u00f4-\u0111un SLS<\/a><\/li>\n<\/ul>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/configure-apache-with-salt-stack\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u B\u1ea1n s\u1ebd c\u1ea7n \u00edt nh\u1ea5t hai Linodes \u0111\u00e3 c\u00e0i \u0111\u1eb7t Salt. N\u1ebfu b\u1ea1n ch\u01b0a c\u00e0i \u0111\u1eb7t, h\u00e3y \u0111\u1ecdc H\u01b0\u1edbng&nbsp;d\u1eabn B\u1eaft \u0111\u1ea7u v\u1edbi Salt &#8211; C\u00e0i \u0111\u1eb7t v\u00e0 Thi\u1ebft l\u1eadp C\u01a1 b\u1ea3n&nbsp;v\u00e0 l\u00e0m theo h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 thi\u1ebft l\u1eadp Salt master v\u00e0 minion. C\u00e1c b\u01b0\u1edbc sau \u0111\u00e2y s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n<\/p>\n","protected":false},"author":1,"featured_media":35998,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[],"class_list":["post-34972","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salt"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34972"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34972\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35998"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}