さくらVPSでLaravelアプリ

ローカルとリモートにGit連携したLaravelをインストールする

前回はさくらVPSとローカルMACでGitを自動更新する設定を行いました。

さくらVPSサーバーにローカルMacからgit pushすると自動的にgit pullする方法|ゼロから始めるLaravel勉強会

今回は、ローカルとサーバー側にLaravelをインストールします。

さくらのVPS

MacBookにLaravelをインストール

まずは自分のMacにcomposerを使ってLaravelをインストールします。

$ composer self-update
Upgrading to version 2.1.3 (stable channel).

Use composer self-update --rollback to return to version 2.0.7

これでアップデートできました。

composer global require laravel/installer

laravelインストーラーもいれておきます。

でも、PATHがうまくきれてないようなので、そのままインストールしちゃいます。

versionsのフォルダに移動して、

composer create-project laravel/laravel example-app

これで、example-app に移動

$ php artisan serve

として、ブラウザからlocalhost:8000をひらくと

07 16 12 51 01

無事にLaravelがローカルで起動しました。

MacBookからgit push

git add *して、git statusを見てみます。

(base) $ git add *
The following paths are ignored by one of your .gitignore files:
example-app/vendor
Use -f if you really want to add them.
(base) $ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   README.md
	new file:   app/Console/Kernel.php
	new file:   app/Exceptions/Handler.php
	new file:   app/Http/Controllers/Controller.php
	new file:   app/Http/Kernel.php
	new file:   app/Http/Middleware/Authenticate.php
	new file:   app/Http/Middleware/EncryptCookies.php
	new file:   app/Http/Middleware/PreventRequestsDuringMaintenance.php
	new file:   app/Http/Middleware/RedirectIfAuthenticated.php
	new file:   app/Http/Middleware/TrimStrings.php
	new file:   app/Http/Middleware/TrustHosts.php
	new file:   app/Http/Middleware/TrustProxies.php
	new file:   app/Http/Middleware/VerifyCsrfToken.php
	new file:   app/Models/User.php
	new file:   app/Providers/AppServiceProvider.php
	new file:   app/Providers/AuthServiceProvider.php
	new file:   app/Providers/BroadcastServiceProvider.php
	new file:   app/Providers/EventServiceProvider.php
	new file:   app/Providers/RouteServiceProvider.php
	new file:   artisan
	new file:   bootstrap/app.php
	new file:   bootstrap/cache/.gitignore
	new file:   composer.json
	new file:   composer.lock
	new file:   config/app.php
	new file:   config/auth.php
	new file:   config/broadcasting.php
	new file:   config/cache.php
	new file:   config/cors.php
	new file:   config/database.php
	new file:   config/filesystems.php
	new file:   config/hashing.php
	new file:   config/logging.php
	new file:   config/mail.php
	new file:   config/queue.php
	new file:   config/services.php
	new file:   config/session.php
	new file:   config/view.php
	new file:   database/.gitignore
	new file:   database/factories/UserFactory.php
	new file:   database/migrations/2014_10_12_000000_create_users_table.php
	new file:   database/migrations/2014_10_12_100000_create_password_resets_table.php
	new file:   database/migrations/2019_08_19_000000_create_failed_jobs_table.php
	new file:   database/seeders/DatabaseSeeder.php
	new file:   package.json
	new file:   phpunit.xml
	new file:   public/.htaccess
	new file:   public/favicon.ico
	new file:   public/index.php
	new file:   public/robots.txt
	new file:   public/web.config
	new file:   resources/css/app.css
	new file:   resources/js/app.js
	new file:   resources/js/bootstrap.js
	new file:   resources/lang/en/auth.php
	new file:   resources/lang/en/pagination.php
	new file:   resources/lang/en/passwords.php
	new file:   resources/lang/en/validation.php
	new file:   resources/views/welcome.blade.php
	new file:   routes/api.php
	new file:   routes/channels.php
	new file:   routes/console.php
	new file:   routes/web.php
	new file:   server.php
	new file:   storage/app/.gitignore
	new file:   storage/app/public/.gitignore
	new file:   storage/framework/.gitignore
	new file:   storage/framework/cache/.gitignore
	new file:   storage/framework/cache/data/.gitignore
	new file:   storage/framework/sessions/.gitignore
	new file:   storage/framework/testing/.gitignore
	new file:   storage/framework/views/.gitignore
	new file:   storage/logs/.gitignore
	new file:   tests/CreatesApplication.php
	new file:   tests/Feature/ExampleTest.php
	new file:   tests/TestCase.php
	new file:   tests/Unit/ExampleTest.php
	new file:   webpack.mix.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.editorconfig
	.env.example
	.gitattributes
	.gitignore
	.styleci.yml

次に、git commitします。

git commit -m "all laravel"

特に問題はなさそうなので、

git push origin master

で、git push。

サーバー側を確認したところ、無事にpullされていました。

サーバー側の対応

先程のgit pushでは、gitignoreで指定されているファイルはインストールされていないので、サーバー側でもcomposerをつくってLaravelをインストールする必要があります。

↓ やり方はこちらを参照しました。

Laravel5のプロジェクトをGitで管理する – Qiita

.envファイルをサーバー側にも作成する必要があるので、まずはローカルのMacのVS codeで.env-localを作成します。

$ git add .env-sample
$ git commit -m "env-sample"
$ git push origin master

で、.env-sampleファイルもサーバー側に送ります。

ここに、DB接続情報などをいれていきます。

DB情報のチェック

今回、さくらVPSのLAPMスタートアップスクリプトでインストールしましたが、DB情報を確認します。

サーバー側で

# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDBがインストールされています。

$ create database laravelDB;

とりあえず、データベースを作成します。

ローカルの.env-samplのDB部分を修正します。

これで、push.

サーバー側の.env-sampleを.envにファイル名を変更。

これで

$ composer install

サーバー側のLaravelのインストールができました。

確認

http://サーバーIPアドレス/versions/nakachon/public/index.php

ブラウザでLaravelの画面がでるか確認。

UnexpectedValueException
The stream or file "/var/www/html/versions/nakachon/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied

logsフォルダの権限の問題でエラーがでるので、これの対応をします。

$ chown -R apache:apache storage/
$ chmod -R 775 storage

これでapacheユーザーが書き込みできる設定。

再び確認。

Illuminate\Encryption\MissingAppKeyException
No application encryption key has been specified.

php artisanでencryption keyを作成する。

$  php artisan key:generate
07 16 18 27 05

ようやく表示されました。

まとめ

次回はapacheの設定でURLの調整とDB接続の確認をします。