はじめに
前回は、作成したEC2インスタンスに共通の処理を適用するところまでを実装しました。
今回は、Webサーバーとしての構成を行っていきます。
- aws上に作成したansibleサーバーでテストサイトを構築する
Webアプリサーバー向けのPlay作成
前回作成したwordpress.yml
に、Webアプリサーバー向けのPlayを追加します。
hosts: webapps
become: true
roles:
- { role: nginx, tags: [nginx] }
nginxのインストール
今回は、Webサーバーとしてはnginxを使用し、Wordpressを/var/lib/wordpress
にインストールして、http://<IPアドレス>/wordpress
でアクセスするように設定します。
http://<IPアドレス>/
はyumによる既定の設定のままとしておきます。
なので、nginxのインストールタスクはパッケージをインストールして起動するだけの簡単なものとなります。
> mkdir -p roles/nginx/tasks
---
- name: installed nginx
yum:
pkg: nginx
state: installed
- name: nginx is running
service:
name: nginx
state: started
enabled: true
なお、ここでのPlaybookを実行すると、ブラウザでweb01のグローバルアドレスに接続することでNginxのデフォルトページを参照することができます。
php-fpmのインストール
wordpressはPHPで稼働するため、php-fpmのインストールを行います。
amzn-updatesリポジトリにphp71が入っていたので、yumでこちらをインストールします。1
hosts: webapps
become: true
roles:
- { role: nginx, tags: [nginx] }
+ - { role: php-fpm, tags: [php-fpm] }
> mkdir -p roles/php-fpm/tasks
---
- name: php installed
yum:
pkg: '{{ item }}'
state: installed
with_items:
- php71
- php71-fpm
- php71-mbstring
- php71-mysqlnd
notify:
- restart php-fpm
PHPのタイムゾーンを東京に変更します。
- name: timezone of php is Asia/Tokyo
lineinfile:
path: /etc/php.ini
regexp: '^;date.timezone ='
line: 'date.timezone = "Asia/Tokyo"'
backrefs: yes
notify:
- restart php-fpm
php-fpmをrpmでインストールすると既定ではApacheで実行されるようになっているので、Nginx用に実行ユーザー等を変更します。
- name: execution user definition
lineinfile:
path: /etc/php-fpm.d/www.conf
regexp: '^user = apache'
line: 'user = {{ php_fpm.user }}'
backrefs: yes
notify:
- restart php-fpm
- name: execution group definition
lineinfile:
path: /etc/php-fpm.d/www.conf
regexp: '^group = apache'
line: 'group = {{ php_fpm.group }}'
backrefs: yes
notify:
- restart php-fpm
- name: Set owner of session directories
file:
path: /var/lib/php
recurse: yes
owner: "{{ php_fpm.user }}"
group: "{{ php_fpm.group }}"
notify:
- restart php-fpm
php_fpm:
user: nginx
group: nginx
最後にphp-fpmのサービス起動設定と、handlerの定義を行います。
- name: php-fpm is running
service:
name: php-fpm
state: started
enabled: true
---
- name: restart php-fpm
service:
name: php-fpm
state: restarted
wordpressソースファイルの展開
PHPの実行基盤ができたので、wordpressをインストールしていきます。
まずはタスクの追加から。
hosts: webapps
become: true
roles:
- { role: nginx, tags: [nginx] }
- { role: php-fpm, tags: [php-fpm] }
+ - { role: wordpress, tags: [wordpress] }
$ mkdir -p roles/wordpress/tasks
Wordpressはプレイブック実行時の最新を使うことにします。
展開先は/var/lib/
以下としていますが、直接指定はせずに変数で指定して、php-fpmの実行ユーザーをオーナーに設定しています。
wordpress:
root: /var/lib
alias: wordpress
user: '{{ php_fpm.user }}'
group: '{{ php_fpm.group }}'
---
- name: unarchived Wordpress
unarchive:
src: 'https://ja.wordpress.org/latest-ja.tar.gz'
dest: '{{ wordpress.root }}'
remote_src: true
owner: '{{ wordpress.user }}'
group: '{{ wordpress.group }}'
Wordpressを/var/lib/wordpress
に展開したら、そこにアクセスするNginxの設定をします。
- name: Nginx settings for wordpress
template:
src: wordpress.j2.conf
dest: /etc/nginx/default.d/wordpress.conf
owner: root
group: root
mode: 0644
notify:
- restart nginx
location /{{ wordpress.alias }} {
alias {{ wordpress.root }}/{{ wordpress.alias }};
index index.php;
location ~ /{{ wordpress.alias }}/.*\.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME {{ wordpress.root }}/$uri;
include fastcgi_params;
}
}
ここまで実行すると、http://<IP>/wordpress/
でWordpressのセットアップウィザードにアクセスできます。
が、まだDatabaseを作っていないのでセットアップはできません。
次回
次回から、RDSのセットアップをしてwordpressで使用するデータベースを準備していきます。
-
php71にしたのは新しい方がいいだろうと思っただけで、意味はありません。 ↩