4と5のリビジョン間の差分
2019-10-06 12:35:43時点のリビジョン4
サイズ: 5957
コメント:
2019-10-06 12:48:30時点のリビジョン5
サイズ: 6036
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 76: 行 76:
※注意※ {{{#!wiki caution
この変更を実施した場合(実施しないと動かないですが)、アップデート(`snap refresh`)により変更が元に戻る場合があります。
}}}
行 94: 行 96:
 * この変更は更新(`snap refresh`)すると上書きされる可能性があるので注意。

GitHubで回すWebサイト制作

  • 思えば、Webサイト制作の現場は、下記のような移り変わりであった気がする。
    • エンジニアが作業した(場合によってはHTMLも書く)。
    • デザイナーさんが作業するようになった(ちょっとはサーバー側の事情も考慮してくれる)。
    • 既存のデザインに対して営業さんがちょこっと修正するようになった(今回の動機)。
  • エンジニア・デザイナーさんであれば、FTP(今時はSFTP/SCP)使ってサーバーにアップロードしてくれた。あるいは強制できた。
  • 流石に営業さんにそういうツールを使ってもらうのは通じず。
  • そのために、CSM(Content Management System)導入することもしばしば。

  • しかし世の中にはもっとカジュアルにWebサイト運用(HTML一枚程度)したいこともしばしば。
  • 今回、そんなライトウェイトな要求に対してGitHubで回す&自動デプロイを実施するための仕組みを作ってみた。

検証環境

  • 下記ソフトウェアの利用を前提に検証を実施した。いずれも現時点で最新のリリースに基づいて検証しているが、ある程度古い環境、より新しい環境でも問題無いと思われる。
  • OSについては古いOS(CentOS6等)ではこの手順では実施できない点に注意。
  • 上記以外の環境では、以下の点に相違が発生する。当該環境に応じて読み替えたし。
    • インストール方法
    • インストールされるディレクトリ
  • 逆に以下の点は参考にできる。
    • 設定パラメータとその意味
    • 運用事例

用途

ソフトウェア名

バージョン番号

備考

OS

CentOS 7

7.7.1908

SELinuxは有効とする

Webサーバー

Apache 2.4

2.4.41

IUSリポジトリ

Webフック

webhook

2.6.10

スナップクラフト

検証目標

  • GitHubに対して以下の設定を行う。

    • WebフックのURLの指定
    • 秘密鍵の指定
    • デプロイ用のSSH鍵の設置
  • 上記設定のためにサーバー側のセットアップを行う。
  • もちろんWebフックを受けて実際にデプロイを実施する。
  • HTTPSオンリーサイトとしてHTTPでの運用は行わない。

ミドルウェアの初期セットアップ

OS

基本的なセットアップは実施済みであることとする。

ファイアウォール設定

sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

Apache

sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install httpd24u httpd24u-tools

/etc/httpd/conf/httpd.conf

ProxyPass /hooks/ http://localhost:9000/hooks/
<Proxy *>
    Require all granted
</Proxy>

Webhook

sudo yum -y install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
sudo systemctl reboot
sudo snap install webhook

※スナップクラフトの有効化のために一度再起動しておくこと。

/etc/systemd/system/snap.webhook.webhook.service

この変更を実施した場合(実施しないと動かないですが)、アップデート(snap refresh)により変更が元に戻る場合があります。

   1 --- /etc/systemd/system/snap.webhook.webhook.service.orig       2019-10-04 15:38:24.368772102 +0900
   2 +++ /etc/systemd/system/snap.webhook.webhook.service    2019-10-06 04:51:03.366711591 +0900
   3 @@ -7,7 +7,8 @@
   4  X-Snappy=yes
   5 
   6  [Service]
   7 -ExecStart=/usr/bin/snap run webhook
   8 +EnvironmentFile=-/etc/sysconfig/webhook
   9 +ExecStart=/usr/bin/snap run webhook $OPTIONS
  10  SyslogIdentifier=webhook.webhook
  11  Restart=on-abnormal
  12  WorkingDirectory=/var/snap/webhook/2
  • webhook起動のための設定オプションの指定ができなかったので、/etc/sysconfig/webhookを参照するように改変してみた。

  • またこの変更実施直後は systemctl daemon-reload を実行すること。

/etc/sysconfig/webhook

OPTIONS="-hooks /etc/httpd/conf/hooks.yaml -hotreload -ip 127.0.0.1 -port 9000"

デプロイ用SSH鍵の準備

sudo ssh-keygen -t ssh-ed25519 -C root@$(hostname) -N "" -f /root/.ssh/id_ed25519

以下の点に注意すること。

  • root 鍵が必要とするため注意。

  • パスフレーズの設定は行わない。

参考文献

apache+webhook/GitHubで回すWebサイト制作 (最終更新日時 2019-11-13 01:46:10 更新者 NorikatsuShigemura)