Closed ZOI-dayo closed 1 year ago
今年はRuby on Railsを利用してるっぽいので、2022と似た仕組みかも
まずはRubyのインストールとディレクトリの用意
# 今回のプロジェクトではRuby3.0.0を利用するので、RVMで入れる
# https://rvm.io/ を参考に
$ sudo su nginx
$ sudo apt install gnupg2
$ gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ \curl -sSL https://get.rvm.io | bash -s stable
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
# 再ログイン
$ exit
$ sudo su nginx
# どうやらRubyの3.1.0より前のバージョンはOpenSSL3(最初から入ってる)ではビルドできないようなので、OpenSSL1を手動で入れます
$ rvm pkg install openssl
# コンパイルでかなり時間がかかります 待ちます
# そして、OpenSSL1を利用してRuby3.0.0を入れる、というわけです
$ rvm install 3.0.0 --with-openssl-dir=/home/$(whoami)/.rvm/usr
# これもコンパイルでかなり時間がかかります 待ちます
# Ruby3.0.0のインストール完了!
$ cd ~/www
# GitHubの認証のため、SSH鍵を作る
$ ssh-keygen -t ed25519
# Enterカチャカチャ
$ cat ~/.ssh/id_ed25519.pub
# これをコピーし、GitHubのユーザー設定の「SSH and GPG keys」の「New SSH key」に貼る
$ git clone git@github.com:Koyo-PC/2023-onten-web.git onten2023
# 起動テスト
$ cd onten2023
$ rvm use 3.0.0
$ exit
# なんかインストールしろって言われたので
$ sudo apt install libpq-dev
$ sudo su nginx
$ cd ~/www/onten2023
$ bundle install
$ ruby app.rb
起動できてそう (Ctrl+Cで終了する)
そこまでできたら、次はGitHub Actionsを用いて、「GitHubにプッシュされたら自動でサーバーにコピーする」という仕組みを作る
仕組みとしては、「GitHubにプッシュされた」というイベントに対して、「サーバー上の、『Webページの公開を一時停止して、GitHubからPullして、Webページの公開を再開する』という内容のファイルを実行する」という操作をくっつけているだけ
まずは起動ファイルを作る
#!/bin/bash
cd `dirname $0`
screen -S onten2023 -X quit
git pull
screen -dmS onten2023 ruby app.rb
→ 7a03a6c
これをGitHubでリモート実行できるように、GitHub Actionsを作る
2022のやつが参考になるかどうかはわからないけど、ともかく、GitHubのプロジェクトに.github/workflows/deploy.yml
を追加、以下を書く
(別にdeploy.yml
じゃなくても良い、わかりやすく)
name: Deploy to AWS
on:
workflow_dispatch:
push:
# branches-ignore: # Disable
# - '**'
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Reload server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: bash -c -l "~/www/onten2023/start.sh"
そして、GitHub ActionsのSECRETとして、「SSH_KEY」、「SSH_USER」、「SSH_HOST」を設定する SSH_USER、SSH_HOSTはAWSの情報を、SSH_KEYは任意のSSH秘密鍵(ただし、SSH_USERのauthorized_keysに公開鍵を書くのを忘れずに!)
そのために、自分のPCなどで
# 適当なフォルダに移動
$ cd /tmp/
$ ssh-keygen -t rsa
# ファイル名には ./id_rsa を指定
$ cat ./id_rsa
# これがSSH_KEY (絶対に流出させないこと!)
$ cat ./id_rsa.pub
# これもコピーする
次にAWS側で、
$ vim ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
id_rsa.pub
の内容をペースト、保存
そしてdeploy.yml
をpush
緑のチェックマークを確認
https://github.com/Koyo-PC/2023-onten-web/actions/runs/6047392181
ここまでできたら、あとは2022と同じ
# sudoユーザー
$ cd /etc/nginx
$ sudo cp sites-available/onten2022.conf sites-available/onten2023.conf
$ sudo vim sites-available/onten2023.conf
server {
listen 443 ssl;
ssl_certificate /home/nginx/cert/koyo-onten.net.pem;
ssl_certificate_key /home/nginx/cert/koyo-onten.net.key;
- server_name 2022.koyo-onten.net;
+ server_name 2023.koyo-onten.net;
- access_log /home/nginx/log/onten2022/access.log;
- error_log /home/nginx/log/onten2022/error.log;
+ access_log /home/nginx/log/onten2022/access.log;
+ error_log /home/nginx/log/onten2022/error.log;
location / {
- proxy_pass http://0.0.0.0:3000/;
+ proxy_pass http://0.0.0.0:4567/;
}
location /stub_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
server {
listen 80;
- server_name 2022.koyo-onten.net;
+ server_name 2023.koyo-onten.net;
return 301 https://$host$request_uri;
}
$ sudo ln -s /etc/nginx/sites-available/onten2023.conf sites-enabled/onten2023.conf
$ sudo su nginx
$ mkdir ~/log/onten2023
$ exit
DNS
Dynamic DNS
$ sudo vim /etc/ddclient.conf
- koyo-onten.net,admin.koyo-onten.net,2020.koyo-onten.net,2021.koyo-onten.net,2022.koyo-onten.net
+ koyo-onten.net,admin.koyo-onten.net,2020.koyo-onten.net,2021.koyo-onten.net,2022.koyo-onten.net,2023.koyo-onten.net
反映
$ sudo systemctl restart ddclient
$ sudo systemctl restart nginx
https://2023.koyo-onten.net/ と入力してアクセスできれば完了です。
なんか止まってた rubyのバーションが変わったのかな
Your Ruby version is 3.0.0, but your Gemfile specified 3.2.2
直します
$ rvm install 3.2.2
$ cd ~/www/onten2023
$ rvm use 3.2.2
$ bundle install
以下ツリー