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

  • 1
    いいね
  • 0
    コメント

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

以上。