hiroki-saoyun’s blog

40歳でも夢くらい持つよね!!プログラミング勉強中!

AWSのEC2を使ってサーバーを作成⑥

Webサーバ、アプリケーションサーバの設定

EC2のサーバに個人アプリのコードをクローンする準備

GithubSSH鍵を登録します。

ターミナル(EC2)

$ ssh-keygen -t rsa -b 4096
$ cat ~/.ssh/id_rsa.pub

上のコマンドで生成されたSSH公開鍵をGithubにアクセスして登録していきます。

ターミナル(EC2)

$ ssh -T git@github.com

登録できたか確認するコマンドです。

アプリケーションサーバの設定

Unicornをインストールしていきます。

Gemfile

group :production do
  gem 'unicorn', '5.4.1'
end

ターミナル(ローカル)

$ bundle install

config/unicorn.rbを作成します。

unicorn.rb

app_path = File.expand_path('../../', __FILE__)


worker_processes 1


working_directory app_path


pid "#{app_path}/tmp/pids/unicorn.pid"


listen 3000


stderr_path "#{app_path}/log/unicorn.stderr.log"


stdout_path "#{app_path}/log/unicorn.stdout.log"


timeout 60



preload_app true
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true

check_client_connection false

run_once = true

before_fork do |server, worker|
  defined?(ActiveRecord::Base) &&
    ActiveRecord::Base.connection.disconnect!

  if run_once
    run_once = false # prevent from firing again
  end

  old_pid = "#{server.config[:pid]}.oldbin"
  if File.exist?(old_pid) && server.pid != old_pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH => e
      logger.error e
    end
  end
end

after_fork do |_server, _worker|
  defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection
end

config/environments/production.rb

config.assets.js_compressor = :uglifier

コメントアウトします。

そして、GitHub Desktopからコミットしてプッシュします。