4
3

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.

Laravelプロジェクトのサーバ環境構築

Last updated at Posted at 2018-10-12

linuxサーバーにて、laravelの環境を構築したので備忘。

##ローカルにlaravelプロジェクトの作成
既存サーバー環境にlaravelにて開発した別プロジェクトがいたので、バージョンを合わせてプロジェクトの作成。
既存laravelのバージョン確認。
laravelのルートディレクトリにて下記を実行。

php artisan -V
結果
5.5.20

LTS(Long-Term Stability:長期間安定性)のバージョン。

今回はlaradockを使用しているので、dockerにてlaravelプロジェクトの作成。
こちらを参照。
https://qiita.com/tomborius/items/6a5f3a8e4f6f477d96c7

1点だけ違うのが、laravelのバージョン指定をして作成。

composer create-project "laravel/laravel=5.5.*" project_name

##git管理
ローカルに作成したプロジェクトをbitbucketにて管理する。
bitbucketにて新規プロジェクト用のリポジトリを新規作成。

git管理したいプロジェクトのディレクトリまで移動して下記を実行。

git init
git add -A
git commit -m "first commit"

ローカルのリポジトリとリモートのリポジトリを紐付け。
bitbucketのクローンするときに出てくるhttpをコピーして下記に貼り付け。

git remote add origin https://xxxxxx@bitbucket.org/yyyyyyyyy/zzzzzzzzz.git

準備が整ったのでpush

git push origin master

エラー...

failed to push some refs to 'https://xxxxxx@bitbucket.org/yyyyyyyyy/zzzzzzzzz.git'

どうやら、ローカルのreadmeとリモートのreadmeとで競合が発生。
ローカルの方を強制的に正しいこととする。

git merge --allow-unrelated-histories origin/master
git push origin master

成功。
あとは、使う想定のブランチを切る。

##サーバに新プロジェクト用のドメインを追加
rootにてサーバにログイン。
useraddにてユーザを追加する。

useradd new_user

ついでに、パスワードも変更しておく。

passwd new_user

new_userにて再度サーバにログイン。

ルートにするディレクトリにて、クローンを実行。
このとき、このあとに作成する自動デプロイ機能を活用するために、httpではなくsshにてクローンをする。

##envファイル

cp .env.sample .env

.envの中を対処プロジェクトによって変更する。

##デプロイ
envoyファイルの作成

@include("./vendor/autoload.php")

@servers(['dev' => ['new_user@192.168.xxx.yyy']])

@story('deploy_dev',  ['on' => 'dev'])
chdir_app_root
git_develop
migrate
remove_cache
@endstory

@task('chdir_app_root')
cd ~/htdocs
@endtask

@task('git_develop')
cd ~/htdocs
git pull origin develop
@endtask

@task('remove_cache')
cd ~/htdocs
~/bin/composer dump-autoload
php artisan clear-compiled
php artisan optimize
php artisan config:cache

rm -f ~/htdocs/bootstrap/cache/config.php
@endtask

@task('migrate')
cd ~/htdocs
php artisan migrate
@endtask

デプロイを実施。
下記をルートディレクトリにて実行。

envoy run deploy_dev

gitからのpullはできたけど、エラー…
/vendor/autoload.php
がない。

そもそも、composerがインストールされていない!
とりあえずはcomposerのインストール。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

「composer」で使用できるようにbinへ移動。

mv composer.phar /usr/local/bin/composer

composerのインストール完了!
そしたら、composer.jsonから必要なライブラリをインストール。

composer install

/vendor/autoload.phpが作成されたことを確認。

再度envoy → 正常に完了。

##apacheの設定
まずはconfigの設定。
既存のapacheにプロジェクトを追加するので、現状の設定を確認。
まずは、/etc/httpd/conf/httpd.confの内容を確認。

複数サイトの管理をしているので、サイトごとのconfigをincludeしている。
IncludeOptional conf.d/*.conf

/etc/httpd/conf.dの.confを確認。
ssl.confにサイトごとの記載あり。

既存の書き方を真似て、virtualhostを追記。

あとやったとこと:
・virtualhostにて記載しているログファイルの書き出しディレクトリの整備
・pathへの追記
・ssl接続の設定

この辺りの設定をミスると、apache再起動時に再起動しなくなるので注意!!

最後に、apacheに変更後の設定を反映させる。
すでに動いている環境があるので、再起動ではなくreload(graceful)を行う。

systemctl reload httpd

systemctlでのreloadがhttpdのgracefulになる記述は下記。

cat /usr/lib/systemd/system/httpd.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
Environment=LANG=C

ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH
KillMode=mixed
PrivateTmp=true

実行後、apacheのステータスを確認する。

systemctl status httpd

エラーになっていなければ完了。

作成したサイトにアクセス。

403 Forbidden
You don't have permission to access / on this server

パーミッションの設定は確かに何もしていない。
新規で作成したディレクトリのパーミッションを変更。
そもそも、パーミッションについてあまり知らない…
@shisamaさんの記事が非常にわかりやすかったので、下記リンクになります。
https://qiita.com/shisama/items/5f4c4fa768642aad9e06

permissionの変更対象
・ルートディレクトリ(755)
・~/laravel/public/storage/logs(777)
・~/laravel/public/storage/framework(777)
 ※framework内の全ディレクトリ

再度実行。

RuntimeException 
No application encryption key has been specified.

またまたエラー。
調べると.envAPP_KEYがないとのこと。
下記を実行。

php artisan key:generate

その後.envのAPP_KEYが入っていることを確認。
再度アクセスし、Laravel起動を確認し完了。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?