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
以上。