0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWSへデプロイしてみよう(〜仮想サーバへデプロイ その4)

Posted at

13.EC2でのデータベースの設定

まずは PostgreSQL をインストールします。

$ sudo su -
$ yum -y install postgresql94 postgresql94-server postgresql94-devel postgresql94-contrib postgresql94-docs
$ /etc/init.d/postgresql94 initdb
[起動]
$ /etc/init.d/postgresql94 start

設定ファイルを編集します。

$ vi /var/lib/pgsql94/data/postgresql.conf

三番目のトピックにある、listen_addressesのコメントを解除(先頭の#を削除)して、設定を'localhost'から'*'に編集してください。


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

認証設定の編集

$ vi /var/lib/pgsql94/data/pg_hba.conf

このファイルの最下部に、以下を追記します。

local   all     all     trust
host    all     all     0.0.0.0/0       md5

また、同ファイルの下の部分を以下のようにコメント化します

# "local" is for Unix domain socket connections only
# local   all             all                                     peer  ←コメント化する
# IPv4 local connections:
# host    all             all             127.0.0.1/32            ident ←コメント化する
# IPv6 local connections:
# host    all             all             ::1/128                 ident  ←コメント化する

編集が終了したら再起動させます。
$ /etc/init.d/postgresql94 restart

次に、postgresというユーザー名で、PostgreSQLへ接続します。

$ psql -U postgres

次に、アプリのconfig/database.ymlに書いてあるproduction設定のusername、database名を使ってロールとデータベースを登録します。

スクリーンショット 2019-10-30 18.11.43.png

postgres=# CREATE ROLE "ロール名" WITH SUPERUSER LOGIN;
postgres=# CREATE DATABASE "データベース名";

作業が終了したら、PostgreSQLとの接続を解除

postgres=# \q

最後にPostgreSQLを再起動してOK。

14.Nginx(エンジンエックス)Webサーバ、Unicorn(ユニコーン)アプリケーションサーバの環境整備

Nginxのインストール

EC2からrootユーザーに入って、Nginxをインストール

$ sudo su -
$ yum -y install nginx
$ chkconfig nginx on

以下のコマンドでNginxが起動

$ /etc/init.d/nginx start

これでEC2のIPアドレスをブラウザのアドレスに記述すれば、Nginxのページが表示されます。

15.デプロイツール(Capistrano)を使ってデプロイ

公開鍵を作成してGithubに設置する

$ sudo su app # app userに切り替わっていない場合のみ実行
$ cd # ホームディレクトリにいない場合のみ実行
$ ssh-keygen -t rsa # 公開鍵秘密鍵のペアを作成

入力画面が出てきたら全てエンターでOK。

$ cat ~/.ssh/id_rsa.pub

コピーした公開鍵を、Githubのsettingにて設置すれば、EC2とGithub間でSSH接続ができるようになります。

アプリ公開用ディレクトリを作成

EC2上に、アプリ公開用のディレクトリを新規作成します。
今回はwwwを公開用ディレクトリの名前として作成。

$ sudo mkdir wwwを管理者権限で実行しwwwフォルダを作り、
$ sudo chown -R app:app wwwでapp userに権限を与え、
$ cd /var/wwwでディレクトリに移動するながれになります

$ cd /var
$ sudo mkdir www
$ sudo chown -R app:app www
$ cd /var/www

Gemfile編集

gem 'dotenv-rails' # 開発環境で環境変数を操作するのに必要
  gem 'unicorn' # アプリケーションサーバのunicorn
  gem 'mini_racer', platforms: :ruby # デプロイ時に必要

  group :development, :test do
    gem 'capistrano', '3.6.0' # capistranoのツール一式
    gem 'capistrano-bundler'
    gem 'capistrano-rails'
    gem 'capistrano-rbenv'
    gem 'capistrano3-unicorn'
    # 以下省略
  end
  # 以下省略

Capfileの作成、編集

$ bundle exec cap install でファイル作成

Capfileに以下の内容を追記

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano3/unicorn'

デプロイ先のサーバ情報、アクセスキー情報を設定

/config/deploy/production.rb

server 'EC2のIPアドレス', user: 'app', roles: %w{app db web}
set :ssh_options, keys: 'ローカルの秘密鍵へのpath'

config/deploy.rbを開き、すべて以下に上書き

# config valid only for current version of Capistrano
lock '3.6.0'

# デプロイするアプリケーション名
set :application, 'achieve'

# cloneするgitのレポジトリ
# (xxxxxxxx:ユーザ名、yyyyyyyy:アプリケーション名)
set :repo_url, 'https://github.com/xxxxxxxxx/yyyyyyyyy'

# deployするブランチ。デフォルトはmasterなのでなくても可。
set :branch, ENV['BRANCH'] || 'master'

# deploy先のディレクトリ。
set :deploy_to, '/var/www/achieve'

# シンボリックリンクをはるフォルダ・ファイル
set :linked_files, %w{.env config/secrets.yml}
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets public/uploads}

# 保持するバージョンの個数(※後述)
set :keep_releases, 5

# Rubyのバージョン
set :rbenv_ruby, '2.5.1'
set :rbenv_type, :system

# 出力するログのレベル。エラーログを詳細に見たい場合は :debug に設定する。
# 本番環境用のものであれば、 :info程度が普通。
# ただし挙動をしっかり確認したいのであれば :debug に設定する。
set :log_level, :info

namespace :deploy do
  desc 'Restart application'
  task :restart do
    invoke 'unicorn:restart'
  end

  desc 'Create database'
  task :db_create do
    on roles(:db) do |host|
      with rails_env: fetch(:rails_env) do
        within current_path do
          execute :bundle, :exec, :rake, 'db:create'
        end
      end
    end
  end

  desc 'Run seed'
  task :seed do
    on roles(:app) do
      with rails_env: fetch(:rails_env) do
        within current_path do
          execute :bundle, :exec, :rake, 'db:seed'
        end
      end
    end
  end

  after :publishing, :restart

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
    end
  end
end

。。つづく

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?