LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

aws上に作成したansibleサーバーでテストサイトを構築する(5) Webサーバーの構成

Last updated at Posted at 2017-08-23

はじめに

前回は、作成したEC2インスタンスに共通の処理を適用するところまでを実装しました。
今回は、Webサーバーとしての構成を行っていきます。

Webアプリサーバー向けのPlay作成

前回作成したwordpress.ymlに、Webアプリサーバー向けのPlayを追加します。

wordpress.yml(追記)
 hosts: webapps
  become: true
  roles:
    - { role: nginx, tags: [nginx] }

nginxのインストール

今回は、Webサーバーとしてはnginxを使用し、Wordpressを/var/lib/wordpressにインストールして、http://<IPアドレス>/wordpressでアクセスするように設定します。
http://<IPアドレス>/はyumによる既定の設定のままとしておきます。

なので、nginxのインストールタスクはパッケージをインストールして起動するだけの簡単なものとなります。

command
> mkdir -p roles/nginx/tasks
roles/nginx/tasks/main.yml
---
- 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

wordpress.yml(変更部分)
 hosts: webapps
   become: true
   roles:
     - { role: nginx, tags: [nginx] }
+    - { role: php-fpm, tags: [php-fpm] }
command
> mkdir -p roles/php-fpm/tasks
roles/php-fpm/tasks/main.yml
---
- name: php installed
  yum:
    pkg: '{{ item }}'
    state: installed
  with_items:
    - php71
    - php71-fpm
    - php71-mbstring
    - php71-mysqlnd
  notify:
    - restart php-fpm

PHPのタイムゾーンを東京に変更します。

roles/php-fpm/tasks/main.yml(追記)
- 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用に実行ユーザー等を変更します。

roles/php-fpm/tasks/main.yml(追記)
- 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
group_vars/all.yml(追記)
php_fpm:
  user: nginx
  group: nginx

最後にphp-fpmのサービス起動設定と、handlerの定義を行います。

roles/php-fpm/tasks/main.yml(追記)
- name: php-fpm is running
  service:
    name: php-fpm
    state: started
    enabled: true
roles/php-fpm/handlers/main.yml
---
- name: restart php-fpm
  service:
    name: php-fpm
    state: restarted

wordpressソースファイルの展開

PHPの実行基盤ができたので、wordpressをインストールしていきます。
まずはタスクの追加から。

wordpress.yml(変更部分)
 hosts: webapps
   become: true
   roles:
     - { role: nginx, tags: [nginx] }
     - { role: php-fpm, tags: [php-fpm] }
+    - { role: wordpress, tags: [wordpress] }
command
$ mkdir -p roles/wordpress/tasks

Wordpressはプレイブック実行時の最新を使うことにします。
展開先は/var/lib/以下としていますが、直接指定はせずに変数で指定して、php-fpmの実行ユーザーをオーナーに設定しています。

group_vars/all.yml(追記)
wordpress:
  root: /var/lib
  alias: wordpress
  user: '{{ php_fpm.user }}'
  group: '{{ php_fpm.group }}'
roles/wordpress/tasks/main.yml
---
- 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の設定をします。

roles/wordpress/tasks/main.yml(追加)
- 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
roles/wordpress/templates/wordpress.j2.conf
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で使用するデータベースを準備していきます。




  1. php71にしたのは新しい方がいいだろうと思っただけで、意味はありません。 

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up