初めてサーバー構築からRails アプリケーションのデプロイまでを経験しました。
また同じ様な作業をする時の為の備忘録として作業内容を纏めます。
新規でRailsプロジェクト作成
rails _7.0.2.3_ new project_name -d mysql -B
gem install rails -v 7.0.2.3
database.ymlで開発環境のpasswordを設定します。設定しないままDBを作成しようとすると以下のエラーが発生します。
Access denied for user ‘root’@’localhost’ (using password: NO)
設定した後にDBを作成
rake db:create
立ち上げてみる。
bundle exec puma -b tcp://192.168.194.101:300
以下の画面が確認出来たら新規Railsアプリの立ち上げ成功です。

今回は、新規でRailsプロジェクト作成・RailsのWelcomeページを開発環境で確認出来たら、すぐに本番環境でも見えるようにサーバー構築の作業をしました。
サーバー購入 ~ git clone まで
さくらでサーバーを購入しました。スペックはこんな感じ。
サーバープラン
仮想コア:2 / メモリ:2GB
ディスク
アーカイブ選択:centos の最新版
ディスクの修正
管理ユーザーパス:pass
ホスト名:project_name
スタートアップスクリプト:shell
サーバーの情報
名前:project_name
説明:project_name
ssh root ログインしてユーザーを作成します。
ssh root@IP_address
# rootでログイン成功
useradd user_name
su user_name
公開鍵認証の設定をしていきます。
# 鍵をローカルで作る。
cd .ssh/
mkdir project_name
cd project_name
# パスフレーズは面倒なので未入力。本当はあった方がいいと思う。
ssh-keygen -t rsa -b 4096
# 公開鍵をリモートサーバーへ転送して登録
ssh-copy-id -i ~/.ssh/project_name/id_rsa.pub user_name@IP_address
# ssh ユーザーログイン
ssh -i ~/.ssh/project_name/id_rsa user_name@IP_address
ssh_configに以下の設定を追加しておきます。
Host project_name
HostName IP
User user
IdentityFile ~/.ssh/project_name/id_rsa
補足:ssh公開鍵認証で接続が出来ない場合
以下のサイトで原因を一つ一つ潰していきました。

自分の場合は、リモート側のパーミッションの設定が原因でした。
ssh接続は、以下のような厳格なパーミッションを設定することを求められる様です。
・「/home/(ユーザー名)/」のフォルダのパーミッションが「755」より厳しいこと
・「/home/(ユーザー名)/.ssh」のフォルダのパーミッションが「700」であること
・「/home/(ユーザー名)/.ssh/authorized_keys」のファイルのパーミッションが「600」であること
https://www.t3a.jp/blog/infrastructure/not-ssh-login/
Railsプロジェクトをgitで管理・リモートリポジトリにpush
先ほど作成したRailsプロジェクトをgitで管理出来るようにしておきます。
Bitbucket・Sourcetreeを使ったやり方は以下の記事を参照して下さい。

リモートリポジトリを購入したサーバーにcloneする
先ほど作成したRailsプロジェクトを開発環境からBitbucketへpushした後に、購入したサーバーからBitbucketにあるリモートリポジトリを取得できるようにします。
bitbucketの秘密鍵をローカルからコピー
scp ~/.ssh/bitbucket/id_rsa root@IP:~/.ssh/
chmod 700 .ssh
リモートリポジトリから取得
git clone git@bitbucket.org:organization/projext_name.git
メモ:git コマンドのTipsだけ置いておきます。
# 最初のコミットを取り消す
git update-ref -d HEAD
# 特定のファイルをgitの追跡対象から除外する設定をするファイル.gitignore
/vendor/bundle/
最初の内にごちゃごちゃ修正してコンフリクト起きて変になっちゃったら、これで解決しちゃいましょう。
# リモートの最新を取得する
git fetch origin master
# リモートの変更に強制的に合わせる
git reset --hard origin/master
必要なツールのinstall
# 色々install。Rubyのビルドに必要なライブラリなど
yum -y update && yum install -y git gcc gcc-c++ openssl-devel readline-devel zlib-devel wget vim
# nginx のインストール・再起動の設定・起動
yum -y install nginx && chkconfig nginx on && systemctl start nginx
# firewall ポートを開ける
firewall-cmd --permanent --zone public --add-service http && firewall-cmd --permanent --zone public --add-service https && systemctl restart firewalld && systemctl restart nginx
# anyenvのinstall(rbenv・nodenv installの為に必要)
git clone https://github.com/riywo/anyenv ~/.anyenv
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> .bashrc
echo 'eval "$(anyenv init -)"' >> .bashrc
source .bash_profile
anyenv install --init
anyenv -v
# anyenvでrbenv・rubyをインストール 10分くらいかかる
anyenv install rbenv
exec $SHELL -l
rbenv install 3.1.1
rbenv global 3.1.1
ruby -v
# anyenvでnodenv・node.jsをインストール
anyenv install nodenv
exec $SHELL -l
nodenv install
nodenv global
# anyenvでインストールしたrbenvでbundlerをinstallしたときにパスでハマった
rbenv exec gem install bundler -v 2.1.4
bundle -v
# gem がローカルインストールされるように設定
bundle config
bundle config --local path vendor/bundle
bundle
/code