Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WordPress を Trellis で管理した話

WordPress を Trellis で管理した話

九州インフラ交流勉強会(Kixs) Vol.006

Yusuke Matsuura

December 16, 2017
Tweet

More Decks by Yusuke Matsuura

Other Decks in Technology

Transcript

  1. WordPress を Trellis で管理した話
    Yusuke Matsuura ‒ Nulab Inc.
    Dec 16, 2017 14:00 ∼ 17:30
    九州インフラ交流勉強会(Kixs)
    Vol.006

    View Slide

  2. 自己紹介
    ‒ Yusuke Matsuura @matsuzj
    ‒ Nulab Inc.
    ‒ Site Reliability Engineer @Backlog
    ‒ 趣味は登山・キャンプ
    ‒ Job
    ‒ Web サービスの開発/運用を始めて11年ぐらい経ちます
    ‒ アプリケーションエンジニアからインフラ方面へ
    ‒ 現在は運用・改善・トラブルシュート等
    ‒ Team
    ‒ 2015年7月から Nulab のインフラ担当としてジョイン
    ‒ 2016年9月から SRE チームを2名になる
    ‒ 2017年8月から SREメンバーが追加されて3名体制へ

    View Slide

  3. 話すること
    ‒ Trellis 導入の経緯
    ‒ Trellis ついて
    ‒ Web サイトのインフラ構成など

    View Slide

  4. Trellis 導入の経緯
    日本向けのドメイン backlog.jp と
    海外向けの backlogtool.com を
    backlog.com へ統合するプロジェクトが動いています。
    Webサイトも backlog.com へ統合することになったの
    で、コンテンツ管理、インフラ管理を楽になるよう検討
    することになりました

    View Slide

  5. View Slide

  6. View Slide

  7. Trellisって何?
    WordPress をよしなに構成管理してくれるツール
    Modern LEMP stack
    ‒ Linux ( Ubuntu )
    ‒ Nginx
    ‒ MySQL ( MariaDB )
    ‒ PHP

    View Slide

  8. 具体的には何を使っているか
    ‒ Nginx
    ‒ MariaDB (MySQL drop‒in replacement)
    ‒ PHP 7.1 (+ extensions)
    ‒ Composer
    ‒ WP‒CLI
    ‒ sSMTP
    ‒ Memcached
    ‒ Fail2ban
    ‒ ferm (firewall)
    ‒ Mailhog

    View Slide

  9. ディレクトリ構成は?
    ̀̀̀shell
    current/ # Root directory (You can change this directory name)
    ├── trellis/ # For Ansible
    │ ├── nginx‒includes # Include nginx conf https://roots.io/trellis/docs/nginx‒includes/
    │ └── templates # Define User template, Require trellis/group̲vars/all/main.yml
    └── site/ # Directory for website (Bedrock‒based)
    └── web/
    ├── app/ # WordPress content directory (themes, plugins, etc.)
    └── wp/ # WordPress core (don't touch!)
    ̀̀̀

    View Slide

  10. 開発
    ‒ 開発は vagrant up を実行してローカルで動作確認で
    きます
    ‒ Ansible の group̲vars には development, staging,
    production が定義されている
    ansible‒playbook server.yml ‒e env=staging ‒u
    ubuntu
    ‒ デプロイも簡単です
    ./bin/deploy.sh staging backlog.com

    View Slide

  11. PHP の extensions 拡張したいんだけど?
    できます!
    trellis/group̲vars/all/main.yml に以下を追加するだけ
    php̲extensions̲custom:
    php7.1‒yaml: "{{ apt̲package̲state }}"

    View Slide

  12. Nginxで他のサーバにプロキシしたいんだけど?
    できます!
    以下に配置するだけで location の追加ができる
    trellis/nginx‒includes/domain/*.conf.j2

    View Slide

  13. RDS 使いたいんだけど?
    できます!
    trellis/group̲vars/production/wordpress̲sites.yml
    wordpress̲sites:
    backlog.com:
    env:
    db̲host: rds.us‒east‒1.rds.amazonaws.com

    View Slide

  14. SES 使いたいんだけど?
    できます!
    trellis/group̲vars/all/mail.yml
    # Documentation: https://roots.io/trellis/docs/mail/
    mail̲smtp̲server: email‒smtp.us‒east‒1.amazonaws.com:465
    mail̲admin: [email protected]
    mail̲hostname: localhost
    mail̲user: mail̲user
    mail̲password: "{{ vault̲mail̲password }}"
    # Disable STARTSSL for Amazon SES
    ssmtp̲start̲tls: 'No'

    View Slide

  15. ALB 使いたいんだけどヘルスチェックどうすんの?
    できます!
    trellis/group̲vars/all/main.yml に以下を追加する
    https://github.com/roots/trellis/issues/786
    nginx̲sites̲confs:
    ‒ src: no‒default.conf.j2
    enabled: false
    ‒ src: "{{ playbook̲dir }}/templates/default‒elb‒health‒check.conf.site.j2"

    View Slide

  16. 所感
    ‒ サーバ管理が Ansible なのはいい
    ‒ 細かい設定・拡張もできる
    ‒ デプロイもすごく楽

    View Slide

  17. Backlog 歴史的経緯
    ‒ 10年の歴史で作られたコンテンツがいっぱいある
    ‒ すべてWordPress で管理されているわけでなくStatic
    なファイルがある

    View Slide

  18. Backlog のコンテンツは?

    View Slide

  19. インフラ構成
    us­east­1
    public
    private
    Target Group
    backlog­com­website
    Target Group
    backlog­com­website­staging
    https://backlog.com/
    backlog­website­blog
    backlog­website
    Target Group
    backlog­com­website­world
    Target Group
    backlog­com­website­dl
    backlog­website­world

    View Slide