Koyo-PC / 2023-onten-web

1 stars 0 forks source link

2023年度のページ公開をやる #9

Closed ZOI-dayo closed 1 year ago

ZOI-dayo commented 1 year ago

以下ツリー

ZOI-dayo commented 1 year ago

3 を参考に

今年は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で終了する)

ZOI-dayo commented 1 year ago

そこまでできたら、次は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

ZOI-dayo commented 1 year ago

ここまでできたら、あとは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

image

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/ と入力してアクセスできれば完了です。

ZOI-dayo commented 1 year ago

なんか止まってた 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