64
70

More than 5 years have passed since last update.

さくらレンタルサーバーにLaravelを入れてとりあえず動くようにした話

Last updated at Posted at 2018-02-20

はじめに

さくらインターネット(スタンダード)にSSH接続して環境設定した話。
ついでに色々設定いじって本番環境として稼働できるように調整した話とか。

サーバー設定

ssh接続

console(local)
ssh (username)@(hostname).sakura.ne.jp
password : 'Your password'

文字コード設定

デフォルトの設定のままだと日本語ファイルが文字化けする。
設定を変える。
ついでに使い慣れたbashで操作できるようにしておく。

console(sakura)
cd ~
# 以下、なければ新規に作る...設定ファイルは下記参照
vim ~/.bashrc
vim ~/.bash_profile
vim ~/.vimrc

# bashへ切り替え
chsh -s /usr/local/bin/bash

# 一旦ログアウトして設定を反映させる
exit

各設定ファイル記述
~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# User specific aliases and functions
alias h='history 25'
alias j='jobs -l'
alias la='ls -a'
alias lf='ls -FA'
alias ll='ls -lA'
alias vi='jvim3 -K TTT -k t'

# A righteous umask
umask 22

export EDITOR=jvim3
export LANG=ja_JP.UTF-8
export PAGER=more
export BLOCKSIZE=K
export PKG_DBDIR=~/db/pkg
~/.vimrc
# 矢印キーでDとかBとか表示される問題の解決
set nocompatible
# バックスペースキーで文字削除できない問題の解決
set backspace=indent,eol,start
~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin

# environment language
LANG=ja_JP.UTF-8;
MM_CHARSET=UTF_8;

export PATH

composerのインストール

composerを入れておかないと依存関係の解決ができないため、入れる。

2015−05−25追記:
composer install したらタスクが殺されてしまいました...。
どうやら処理に時間がかかりすぎるとダメみたいです?
FTPでファイルアップロードして対応。謎。

console(sakura)
cd ~
mkdir bin
# 環境変数PATHに$HOME/binが含まれていることを確認
cat ~/.profile | grep HOME/bin
# インストール
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer
chmod 755 bin/composer

# アップデート
composer self-update

プロジェクト設定

プロジェクトをcloneする

console(sakura)
cd ~/www/
git clone 'repository'

# 依存関係の注入とアップデート
cd /{project_root}
composer install
composer update
composer dump-autoload

後から気づきましたが、プロジェクト本体を/home/{account_name}/www直下に置く必要はなく、シンボリックリンクさえ置いておけばいいようです。
面倒なのでこのまま行きます。

さくらインターネット側設定

独自ドメインで公開する場合、事前に取得しといてください。
SSL化までするなら反映までに数十分~数時間かかる場合があるので注意。

管理コンソールにつなぐ

2018-02-19_13h24_52.png
さくらインターネットのサーバーコンソールに接続します。
「ドメイン設定」項目の「ドメイン/SSL接続」から対象のドメインを選択します。

「マルチドメインの対象フォルダ」を「('プロジェクトルート')/public」に変更

2018-02-19_13h28_17.png
前に話した通り、Laravelは/{project_root}/public以下のindex.phpで全てのアクセスを捌いています。
ですので、今回も同様に、指定フォルダの中に/{project_root}/publicを設定します。

Laravelは一度/[project]/public/index.phpにアクセスさせて、そこで全てのアクセスを捌いている模様。
なのでデフォルトのドキュメントルートを変更して、publicへとルーティングするように設定を変える。

.htaccess設定

なんかここいじらないとうまくいかないっぽい。
こちらの記事を参考に、.htaccessの値に追記する。

.htaccess設定値
{project_root}/public.htaccess
<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 [L,R=301]

+   RewriteBase /

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


データベース設定

データベースの設定も変更してあげる必要がある。
基本的には.envだけでいいのだけど、環境によっては{project_root}/config/database.phpをいじいじする必要があるかもしれない。
なお、ここで言う{db_host}などの変数は下記資料をご参考に。
当然、設定し終わったらいつものphp artisan config:cacheを忘れないようにする。
2018-02-20_10h53_02.png

{project_root}/.env
DB_CONNECTION=mysql
DB_HOST={db_host}.db.sakura.ne.jp
DB_PORT=3306

DB_DATABASE={account_name}_{db_name}
DB_USERNAME={db_user_name}
DB_PASSWORD={db_password}

CRON設定

前の記事ではOSにsupervisorサービスを入れられていたので良かったが、さくらサーバーではそれができない。
root権限必要だからね。
ほとほと困っていたところに調べてみたらCRONが使えることが判明。
設定しました。でもCRONもハマったので。

事前にジョブを作成

2018-02-19_13h05_18.png
「新規項目の追加」から

2018-02-19_13h05_56.png
実行コマンドを登録します。
今回登録したコマンドはこれ。
ポイントは、先にプロジェクトルートへcdしている点。
artisanへのフルパスを記述しても通りませんでした。

なお、登録できるCRONは5つまでみたいです。注意。

cron
# 先に自プロジェクトに移動しておかないとartisanがうまく動かない
cd /home/{account_name}/www/{project_name}; /usr/local/bin/php artisan queue:work

# わるいれい
/usr/local/bin/php /home/{account_name}/www/{project_name}/artisan queue:work

スケジュールを登録

実例を参考に。
なお、最短でも5分おきぐらいじゃないと怒られて登録できません。残念。

  • 5分おきに実行したい場合
項目
*
*
*
*/5
曜日 日 月 火 水 木 金 土

...多分ググったほうが早いです。

メール設定

Jobの実行結果をメールしたりすることもあると思うので。
Gmailのアカウントをそのまま使ってもいいのだけどね。

事前に管理コンソールからアカウントを作成しておく

2018-02-19_12h56_59.png

.envファイルの修正

.envファイルのメール設定を次のように修正。
info@{account_name}.sakura.ne.jpを例に解説する。

{project_root}/.env
MAIL_DRIVER=smtp
MAIL_HOST={account_name}.sakura.ne.jp
MAIL_PORT=587
MAIL_USERNAME=info@{account_name}.sakura.ne.jp
# 独自ドメインであれば、info@{独自ドメイン}でも可能
MAIL_FROM_NAME={display_user_name}
MAIL_PASSWORD={password}
MAIL_ENCRYPTION=tls

テストメール送信

以下の操作はssh接続後のさくらサーバー上で行うこと。

念のためcomposerやらcacheやらを再設定しときます。
当然だけどさくらサーバー内でしかメール送れないからな!
homestead上で設定してもメール送れないからな!
ハマったなんて言わないもん

console(sakura)
cd /home/{account_name}/www/{project_name}

# キャッシュの設定
composer dump-autoload
php artisan config:cache

php artisan tinker

### tinker ###
Mail::raw('Test Mail', function($message) { $message->to('{test_address}')->subject('test'); });
# =>null ... nullが返ってくればテスト成功

所感

さくらインターネットしゅごい。
ステージング環境とかもらくらく作れちゃうっぽい。

64
70
1

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
64
70