Edited at

Laravelをレンタルサーバーに手動デプロイする手順

More than 1 year has passed since last update.

CPIの共用サーバーにLaravel5を手動デプロイするメモ。

難しいことはできない。

バージョン

Laravel
5.4.23

PHP
7.1.1

MySQL
5.6.30

パッケージ管理にはcomposerを使う。

バージョン管理にはGitを使う。


デプロイの流れ

localにあるプロジェクトをレポジトリにプッシュ。

RemoteにSSHログイン。

Remoteからレポジトリのプロジェクトをクローンもしくはプル。


プロジェクト作成

laravel new sample

開発はがんばる。


SSH利用前準備

コントロールパネルの「公開サイトSSHを利用する」から公開鍵を登録しておく。

ついでにSSHのポート番号も確認しておく。

localの~/.ssh/configに設定を書いておくと、

ssh 任意の名前で接続できて便利だよ。

Host 任意の名前

HostName ホスト名
User ユーザーID
Port ポート番号


composerインストール

で、早速、SSHでログイン。

CPIでPHPコマンドを叩く時はこうする。

% php-7.1 -v

PHP 7.1.1 (cli) (built: Feb 17 2017 07:15:12) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

phpコマンドはない。

ふーん。

composerインストール

curl -sS https://getcomposer.org/installer | php-7.1

php-7.1 composer.pharと叩いてバージョンが表示されればOK。


プロジェクトインストール

ホスティングサービスはBitbucketを使用。

httpsでクローンしてくる想定。

URLはBitbucketからコピペしてくる。

git clone https://ユーザー名@bitbucket.org/ユーザー名/プロジェクト名.git laravel

プロジェクトルートへ移動。

パッケージインストール。

cd laravel/

php-7.1 ~/composer.phar install

post-install-cmdの箇所でエラーが出るので、手動で叩く。

php-7.1 artisan optimize

環境変数設定。

cp .env.example .env

vim .env

設定内容はこんな感じ。

APP_NAME=プロジェクト名

APP_ENV=production

# php-7.1 artisan key:generate
APP_KEY=作成したkey

APP_DEBUG=false
APP_LOG_LEVEL=debug
APP_URL=http://ドメイン名

# データベースはコントロールパネルの「MySQL 5.6 データベースの追加・削除」から作成しておくこと。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3307
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# メールは下記の設定で送れた
MAIL_DRIVER=sendmail
MAIL_HOST=localhost
MAIL_PORT=587
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=任意のメールアドレス
MAIL_FROM_NAME=任意

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

いくつかコマンドを叩く。

php-7.1 artisan config:cache

php-7.1 artisan route:cache
php-7.1 artisan migrate
chmod 777 bootstrap/cache
chmod 777 storage

シンボリックリンクを張る。

ln -s /usr/home/ユーザーID/laravel/public/index.php /usr/home/ユーザーID/html

# 適宜CSSやJS、storageにも張る。

ドキュメントルートに.htaccess設置

cp ~/laravel/public/.htaccess ~/html/.htaccess

cd ~/html
vim .htaccess

内容を下記のように修正

# デフォルトバージョン以外のPHPを使用する場合

AddHandler x-httpd-php71 .php

# ここにバージョンに対応したphp.iniを設置する
# コンパネの「プログラムのパスとサーバーの情報」→「PHP ini の設定情報」からコピペ
suPHP_ConfigPath /usr/home/ユーザーID/conf/

# シンボリックリンクの有効化
Options +SymLinksIfOwnerMatch

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
# RewriteCond %{REQUEST_FILENAME} !-d <--これをコメントアウトして
RewriteRule ^(.*)/$ /$1 <-- こう修正する

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

これを削除しておく。

rm ~/html/index.html

以上。