エンジニアなのでLaravel, AWS, Vueあたりでポートフォリオ作った。(2/2)

こんばんは。

前回の続きです。

 

エンジニアなのでLaravel, AWS, Vueあたりでポートフォリオ作った。(1/2)

エンジニアなのでLaravel, AWS, Vueあたりでポートフォリオ作った。(2/2)←当記事

 

細かく説明はしないのですが、詰まったところはここら辺を見て解決したよ、的なことを書いていきます。

 

目次

  - AWSの設定(1/2)

  - AWSの設定(2/2)

  - nginx、php-fpmの設定

 

AWSの設定(1/2)

純粋に本番サーバーで動かして、ネットに公開したいと思っただけだったので

昔からあるさくらでもよかったのですが、

去年あたりに先輩がAWSへの移管作業しているのを隣で見てて興味があったので、AWSを使ってみました。

 

ちなみに、本当に時間が無くてローカル環境の状態をそのまま誰かに見せたい!って時にはlocaltunnelっていうサービスを使うといいですよ!

IPとport合わせるだけでURLが発行されて誰でも見れるようになります。

 

特に僕が新規で説明することも無いので、リンクを貼るだけにはなってしまうのですが、

順序だけ補足しますね。

基本的には以下のページで事足ります。

qiita.com

 

対象はRailsなのですが、下準備の部分やsshログインする部分までは一緒なので、そこまでは見ながらやれば問題ありません。

 

ただし、セキュリティ的に事前にやって置いた方が良いことが以下のページに載っています。

qiita.com

第1回と第2回だけ先に済ませておくのをオススメします。

世界一丁寧な〜の記事と被っている部分はあるものの、1つずつ確実に進めていけば問題なく進めることができるはずです。

 

AWSの設定(2/2)

さて、無事に

$ ssh ●●●

で本番サーバーにログイン出来るようになったら、ローカル環境のdockerの中と同じものを作ります。

 

具体的には

  - nginx

  - php

  - mysql

をインストールします。

それが終わったら任意のフォルダの下にgit cloneします。

僕は /var/www/html/laravel/ の下に作りました。

 

おそらく .envファイルがgit ignoreされているはずなので存在しなくてエラーになるはずです。

 

なので、下記コマンドで作成して下さい。

$ cp .env.example .env

 

そうしたら.envの中の、DBの設定部分を変更します。 

あとは config/database.php の中にあるDBの設定部分も同じように変更し

下記コマンドを打って設定を反映

$ php artisan config:clear

 

これでmigration出来るようになったと思うので、

下記コマンドでテーブルを作成して下さい。

$ php artisan migrate

 

先にDBを作成していないといけないので、mysqlをインストールした時についでに作っちゃってください。

 

access deniedとかで拒否される場合は、基本的に以下の理由です。

  - パスワードが間違っている

  - mysqlユーザーの権限が無い

    - 参考:一発でMySQLのrootユーザーにすべてのホストからすべてのデータベースにすべての権限を与えるコマンド

  - 然るべきログファイル・フォルダが無い

    - http://blog.infosuite.jp/laravel-deploy/

 

nginx、php-fpmの設定

設定、というほどでも無いですが

少しハマったので一応書きます。

 

nginxの設定ファイルは /etc/nginx/nginx.conf にあります。

以下のコードを書き加えました。

 

server {
    root /var/www/html/laravel/portfolio/public;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_s
        cript_name;
        include fastcgi_params;
    }
}

rootの指定を、プロジェクト配下にあるpublicというフォルダを見に行くように設定しなくてはなりません。

あとは、fastcgi_passで、php-fpm.sockを指定していますが

初期状態ではこのファイルは存在しなかったため作成する必要があります。

とは行ってもphp-fpm を起動するだけで、無い場合は作成されます。

$ sudo service php-fpm start

 

意外とここにたどり着くまでに時間がかかったので、この記事を読まれている方はラッキーだと思います。

nginxの記述を読んで理解できれば別ですが..w

 

以上になりますが、

他にもハマるところがあるかと思いますので、その時は /var/log に入ってるログファイルとかを見てググってみてください。

 

無事に本番公開出来ることを祈っております。

 

コメント等で質問やご指摘などwelcomeですので、よろしくお願いいたします。

 

それでは。