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です。