はじめに
さくらインターネット(スタンダード)にSSH接続して環境設定した話。
ついでに色々設定いじって本番環境として稼働できるように調整した話とか。
サーバー設定
ssh接続
ssh (username)@(hostname).sakura.ne.jp
password : 'Your password'
文字コード設定
デフォルトの設定のままだと日本語ファイルが文字化けする。
設定を変える。
ついでに使い慣れたbashで操作できるようにしておく。
cd ~
# 以下、なければ新規に作る...設定ファイルは下記参照
vim ~/.bashrc
vim ~/.bash_profile
vim ~/.vimrc
# bashへ切り替え
chsh -s /usr/local/bin/bash
# 一旦ログアウトして設定を反映させる
exit
各設定ファイル記述
# .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
# 矢印キーでDとかBとか表示される問題の解決
set nocompatible
# バックスペースキーで文字削除できない問題の解決
set backspace=indent,eol,start
# .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でファイルアップロードして対応。謎。
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する
cd ~/www/
git clone 'repository'
# 依存関係の注入とアップデート
cd /{project_root}
composer install
composer update
composer dump-autoload
後から気づきましたが、プロジェクト本体を/home/{account_name}/www
直下に置く必要はなく、シンボリックリンクさえ置いておけばいいようです。
面倒なのでこのまま行きます。
さくらインターネット側設定
独自ドメインで公開する場合、事前に取得しといてください。
SSL化までするなら反映までに数十分~数時間かかる場合があるので注意。
管理コンソールにつなぐ
さくらインターネットのサーバーコンソールに接続します。
「ドメイン設定」項目の「ドメイン/SSL接続」から対象のドメインを選択します。
「マルチドメインの対象フォルダ」を「('プロジェクトルート')/public」に変更
前に話した通り、Laravelは/{project_root}/public
以下のindex.php
で全てのアクセスを捌いています。
ですので、今回も同様に、指定フォルダの中に/{project_root}/public
を設定します。
Laravelは一度
/[project]/public/index.php
にアクセスさせて、そこで全てのアクセスを捌いている模様。
なのでデフォルトのドキュメントルートを変更して、public
へとルーティングするように設定を変える。
.htaccess設定
なんかここいじらないとうまくいかないっぽい。
こちらの記事を参考に、.htaccess
の値に追記する。
.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
を忘れないようにする。
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もハマったので。
事前にジョブを作成
実行コマンドを登録します。
今回登録したコマンドはこれ。
ポイントは、先にプロジェクトルートへcd
している点。
artisan
へのフルパスを記述しても通りませんでした。
なお、登録できるCRONは5つまでみたいです。注意。
# 先に自プロジェクトに移動しておかないと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のアカウントをそのまま使ってもいいのだけどね。
事前に管理コンソールからアカウントを作成しておく
.envファイルの修正
.env
ファイルのメール設定を次のように修正。
info@{account_name}.sakura.ne.jp
を例に解説する。
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
上で設定してもメール送れないからな!
ハマったなんて言わないもん
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が返ってくればテスト成功
所感
さくらインターネットしゅごい。
ステージング環境とかもらくらく作れちゃうっぽい。