Railsアプリを実行できるようにするための環境構築を行っていきます。
EC2インスタンス にログインしていない場合は,次でログインして下さい。
ssh アプリ名
以下の順序で実行していきます。
Nginx のインストールNginx の起動とインスタンス起動時自動起動の設定sudo yum -y update
sudo amazon-linux-extras install -y nginx1
sudo systemctl start nginx
sudo systemctl enable nginx
ブラウザに Elastic IP を入力してアクセスしましょう。
Welcome to nginx on Amazon Linux! が表示されればOKです。
【補足】ここでアクセスできない場合は,以下の可能性があります
0.0.0.0/0 と ::/0」のものが含まれているかを確認。「HTTP」を「HTTPS」にしているミスを見かけますNginx の設定ファイルは /etc/nginx に存在します。確認しておくとよいでしょう。
cd /etc/nginx
ls
# nginx.conf などたくさんのファイルが表示される
後々の都合上, Nginx の設定ファイルの読み込み先を conf.d から sites-enabled 配下を変更しておきましょう。
cd /etc/nginx
sudo mkdir sites-available sites-enabled
sudo rm -rf conf.d
sudo vi nginx.conf
nginx.conf が開きますので,  include /etc/nginx/conf.d/*.conf; を include /etc/nginx/sites-enabled/*; に置き換えて保存終了して下さい。
念のため, 設定ファイルのテストしておきましょう。
sudo nginx -t
以下のように成功していれば OK です。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
問題なければ Nginx をリロードしましょう。
sudo systemctl reload nginx
sudo yum -y install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel ImageMagick ImageMagick-devel
【注意】上記はあくまで「画像投稿可能なアプリ」のデプロイを想定したものです。アプリに導入されている gem や ライブラリ次第では,依存関係にある他のプラグインもインストールしておく必要があります。
まず,EC2 にプリインストールされている MariaDB を削除しておきましょう。
sudo yum -y remove mariadb-libs
以下の順序で実行していきます。
MySQL のリポジトリを追加MySQL の5.7がインストールされるように変更MySQL をインストールsudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
sudo yum -y install mysql-community-client mysql-server mysql-devel
次のコマンドでRDSの MySQL にログインできます。
mysql -h エンドポイント -u root -p
# RDS の パスワード を入力
mysql> という表示が出た後に次を実行して下さい。
show databases;
# 表示されたデータベース一覧に,「アプリ名_production」が存在していればOK
exit
【参考】「エンドポイント」は 2.4 で確認したものです。確認できていない場合は RDS の「データベース」をクリックし,アプリを選択して出てくる「エンドポイント」を確認しましょう。
【補足】もし,データベース一覧に,「アプリ名_production」が存在しない場合は,exit; で終了する前に以下を実行してデータベースを作成して下さい。
# 「アプリ名_production」が存在しない場合のみ,次を実行して下さい
CREATE DATABASE アプリ名_production;
Sequel Ace をインストールしていない場合は,App Store からインストールしましょう。
| キー | 値 | 
|---|---|
| MySQL Host | RDSのエンドポイントを記載 | 
| Username | root | 
| Password | RDSのパスワードを記載 | 
| Database | アプリ名_production | 
| Port | 3306 | 
| SSH Host | Elastic IPを記載 | 
| SSH User | EC2のユーザー名を記載 | 
| SSH Password | 右側の鍵マークボタンをクリックし「~/.ssh/アプリ名.pem」を選択 | 
【参考】 .ssh は隠しファイルです。隠しファイルを表示するショートカットキーは command + shift + . です。

単純にインストールするとバージョンが低すぎるので,amazon-linux-extras リポジトリから PostgreSQL のバージョン11を入れることにしましょう。
sudo amazon-linux-extras install -y postgresql14
sudo yum -y install postgresql-devel
【補足】PostgreSQLのインストール可能な最新バージョンは, amazon-linux-extras | grep postgresql で確認できます。
次のコマンドでRDSの PostgreSQL にログインできます。
# RDS のユーザー名を変更している場合は -U の後を変更すること
psql -h エンドポイント -d postgres -U postgres
# RDS の パスワード を入力
postgres=> という表示が出た後に次を実行して下さい。
\l
# 表示されたデータベース一覧に,「アプリ名_production」が存在していればOK
exit;
【補足】もし,データベース一覧に,「アプリ名_production」が存在しない場合は,exit; で終了する前に以下を実行してデータベースを作成して下さい。
# 「アプリ名_production」が存在しない場合のみ,次を実行
CREATE DATABASE アプリ名_production;
インストールしていない場合は,上記サイトの Download ボタンをクリックし,zipファイルを解凍して出てくる Postico をアプリケーションに移動した上で,実行して下さい。
Postico を起動し,左下の「New Favorite」をクリック
Options のドロップダウンを開き, Connect via SSH をクリック
| キー | 値 | 
|---|---|
| Nickname | ※任意 (アプリ名_production など) | 
| Host | RDS のエンドポイントを記載 | 
| Port | ※不要 | 
| User | postgres | 
| Password | RDSのパスワードを記載 | 
| Database | アプリ名_production | 
| SSH Host | Elastic IPを記載 | 
| User | EC2のユーザー名を記載 | 
| Password | ※不要 | 
| Private Key | 「Choose」をクリックし,「~/.ssh/アプリ名.pem」を選択 | 
「Connect」を選択し,再度「Connect」を選択

Node のインストール
node-sass が現時点ではバージョン14以下にしか対応していないため, バージョン14をインストールcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
. ~/.nvm/nvm.sh
# インストール可能なバージョンを確認
nvm ls-remote | grep v14
# バージョン14のいずれかをインストール
# (例) nvm install v14.21.2
node -e "console.log('Running Node.js ' + process.version)"
最後のコマンドで Running Node.js バージョン が表示されればOKです。
Yarn のインストールcurl -o- -L https://yarnpkg.com/install.sh | bash
rbenv のインストールgit clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
ruby-build のインストールgit clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Ruby のインストールまず,デプロイするアプリの Ruby のバージョンを確認して下さい。
(ローカル環境のターミナル でアプリのディレクトリまで移動し ruby -v で確認できます)
以下は,バージョンが 3.1.3 の場合の例です。バージョンはアプリに「必ず」合わせて下さい。
rbenv install 3.1.3
rbenv global 3.1.3
rbenv rehash
Ruby のインストールには時間がかかります。
Bundler のインストールgem install bundler
完了後に以下を実行し,全てバージョンが表示されればOKです。
rbenv -v
ruby -v
yarn -v
bundler -v
(デフォルト設定の場合) Capistrano によるアプリのデプロイ先は /var/www/アプリ名 ディレクトリになります。
そこで,このディレクトリをあらかじめ作成しておき,必要な権限を与えておきましょう。
sudo mkdir -p /var/www/$APP_NAME
sudo chown `whoami`:`whoami` /var/www/$APP_NAME
ls -l /var/www
最後のコマンドで drwxr-xr-x 2 ユーザー名 ユーザー名 日付 アプリ名 が表示されればOKです。
次に,サーバー環境で GitHub の操作ができるようにしていきましょう。
まずは,サーバー環境の Git の初期設定を行いましょう。ここでは,ローカル環境と同じ「ユーザー名」「メールアドレス」を登録することとしておきます。
まず, Git に登録した名前とメールアドレスを確認しましょう。
cat ~/.gitconfig
次の箇所をコピーして下さい。
[user]
    name = ~~~~~
  email = ~~~~~@~~~.~~~
.gitconfig ファイルの生成cd
vi .gitconfig
サーバー環境に GitHub へのアクセス権限を持たせるため,必要な公開鍵・秘密鍵を生成しましょう。
cd .ssh
ssh-keygen -t rsa -f "${APP_NAME}_git_rsa" -N ""
これで,以下のファイルが作成されます
config ファイルの生成
vi config
Host github github.com
  Hostname github.com
  User git
  IdentityFile ~/.ssh/アプリ名_git_rsa
以下を実行し,値をコピーしておきましょう。
cat "${APP_NAME}_git_rsa.pub"



| キー | 値 | 
|---|---|
| Title | アプリ名_git_rsa.pub | 
| Key | サーバー環境のターミナルからコピーした値をペースト | 

「Add SSH key」ボタンをクリック
chmod 600 config
ssh github
yes を入力し,次の赤枠の内容が出力されればOKです。
