作ったもの、プログラミングで共有できそうなこと、IT関連でやってみたことなど、なんでも書いていきます。ヤドン可愛い

概要

下記の記事で、私の自作Webサイト「Market-Explorer」をHerokuに公開してあります。

この記事の中段付近

しかし、動作も遅いしメルカリを検索するときにエラーがでる・・・
サーバーエラーっぽいのでサーバーを変えてみれば直るのではないか、またAWSにアップロードすることがとても勉強になるしアピールポイントになるとも聞いたので、今回AWSを使用してみました。

前編は、ブラウザから見れるようにするまでにやったことやハマったことを簡単にまとめとこうと思っております。
というのも、現在ブラウザからのアクセスに成功し機能自体は動くのですが、CSSが反映されていないという状況なので、こちらが解決しその他ブラッシュアップしてみたことを後編に書こうと思います。

開発環境

ローカル

  • MAC OS
  • Ruby(ver2.4.1)
  • Rails(ver5.2.1)

全体の流れ

基本的には下記の記事に沿って各種操作を行いました。本当にありがとうございました。

世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

今回Capistranoを使用してデプロイしています。その際下記の記事も参考にしました。
(初心者向け)vpsを契約して、capistrano3でRailsアプリをデプロイするまで

また、Market-ExplorerはDBを使わないWebサービスです。
各種記事はDBを使用することを前提としたものだったのでどうしようかと悩みましたが、
下記対応で上手くいっております。

#fork前に行うことを定義。後述  
  before_fork do |server, worker|  
    defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!  
    old_pid = "#{server.config[:pid]}.oldbin"  
    if old_pid != server.pid  
      begin  
        Process.kill "QUIT", File.read(old_pid).to_i  
      rescue Errno::ENOENT, Errno::ESRCH  
      end  
    end  
  end  

#fork後に行うことを定義。後述  
  after_fork do |server, worker|  
    defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection  
  end  

ActiveRecordを持たないアプリなので、関りそうな部分を使用しないようにした感じです。

この流れに沿って作業をしていく中で、書かれていること以外でやったことをいくつか記録していきます。

やったこと1:SSH接続のタイムアウトの対応

sshで鍵認証を使ってサーバーにアクセスしようとするとタイムアウトになってしまう。

% ssh Market-Explorer_key_rsa  
ssh: connect to host ○○.○○.○○.○○○ port 22: Operation timed out  

これは、セキュリティグループのインバウンドのルールの編集から、SSH接続の設定部分をマイIPにすれば接続できました。

ただ、なぜか時間が経つとまたカスタムに戻ってしまうので、いちいち設定しに戻らないといけない状況です。改善策があるかもしれません・・・

やったこと2:パブリックDNSの表示

8.EC2へのログインにて、パブリックDNSを確認する作業がありましたが、私の場合は表示されていませんでした。
こちらに書かれている作業をすることで解決しました。

やったこと3:EC2インスタンスの環境構築時エラー

こちらの初っ端からつまづきました、yumのインストールができない!
まぁ自分の知識がなかっただけなんですけどね・・・ここに書かれていることを一行ずつ実行しようとしてできなかったってだけです、yumはインストールするものを指定して動くようですね。
下記をそのままコピペすれば問題ないはずです・・・無知ゆえだいぶハマりました。

sudo yum install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel mysql mysql-server mysql-devel ImageMagick ImageMagick-devel epel-release  

やったこと4:各種設定ファイルのパスの修正

記事の順番に沿っていき、Capistranoでのデプロイは、デプロイ編②でEC2サーバーでNginxの設定を行った後となりました。
そのため、Capistrano編でのnginxの設定には触れませんでした
で、デプロイが無事完了したので試しにブラウザから接続してみると404エラー・・・
よくnginxの設定をみると、ディレクトリの指定が間違っていました。下記のように、参考にした設定に若干違いがあります。

# デプロイ編②の記述  
upstream app_server {  
  # for UNIX domain socket setups  
  server unix:/var/www/rails/mumu/tmp/sockets/.unicorn.sock fail_timeout=0; #自分のアプリケーション名に変更  
    # railsフォルダがルートに含まれている  
}  

# Capistrano編の記述  
  upstream app_server {  
# 連携するunicornのソケットのパス  
    server unix:/var/www/mumu/current/tmp/sockets/.unicorn.sock fail_timeout=0;  
  }  
    # currentフォルダがルートに含まれている  

この例以外にもあるので、全て見つけて変更しました。
エラーが出た時にはまずディレクトリの指定が間違ってないかみてみるといいかもです。

前編のまとめ

初めてAWSで自作サイトをデプロイ、公開にまで至りました。(12/7現在CSSが読み込まれない不具合があります)基本的には世界一丁寧なAWS解説を読んで、色々と出てくるエラーも調査したり、教室メンターさんに相談することで乗り越えることができました。10日以上かかっております・・・思ってたより難しかったですが、ネットワーク周りやクラウドサービス、ミドルウェアなどいろんな分野の知識がついたので、やって損はなかったです。
ここまで読んでいただきありがとうございます。後編はCSSが反映されてから書き始めます。

2018年12月11日追記

CSSの不具合は解消しました。
しかし、今度はunicornの設定に不備があるようで検索結果が表示されなくなりました・・・対応中です。

この記事へのコメント

まだコメントはありません