8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel6.x On Xserver(X10) with Queue/Job

Last updated at Posted at 2020-01-26

XserverにLaravelアプリケーションをデプロイして動かしたメモ わりと簡単だった

概要

基本的には、https://readouble.com/laravel/6.x/ja/installation.html に記載されているシステム要件を満たすように準備していけばいいはず。アセットのコンパイルでnpm、デプロイはgitサーバーからpullしたいので、

  • php7.2以上
  • composer
  • node/npm
  • git

が入っていれば概ね良さそう。更に、job/queue を使いたいのでキューワーカーのプロセスをデーモン化する

  • supervisor

がほしい。上記環境を整えた後、Laravelアプリケーションを公開するセッティングを進める。

事前調査(超やっつけ)

  • Linuxディストリビューション
    よくはわからんがyumがあったのでRedHat系っぽい。が、root権限は無いのでyumは使えなそう(当たり前か)

  • PHP
    コンパネから7.3に変更しても、CLIのバージョンは5.4.16となっていた。
    /usr/bin/php を指してる。

  • git
    入ってる(version 1.8.3.1)

  • node
    入ってない

  • composer
    入ってる(version 1.9.1)

  • supervisor
    入ってない。root権限が無いのでyumでインストールすることもできない。困りそう。cronは使えるので、1分間隔でcronにキューワーカのプロセスを起動させる、くらいで行けるかな?
    ググったら全く同じことをやろうとしてるのを見つけたので、なんとか大丈夫そう

前提

Laravelバージョンは6.x、XServerのプランはX10
SSH設定/エックスサーバー
→SSH接続成功してる

PHPのバージョンについて/エックスサーバー
→PHP7.3に切り替え実施済み

MySQLの設定/エックスサーバー
→Mysqlデータベース作成、接続ユーザー設定済み

無料独自SSL設定/エックスサーバー
→SSL設定済み

環境構築

CLIのPHPバージョン変更

参考URL

XSERVER(エックスサーバー)にLaravelアプリを構築する方法/2018.12.10

XSERVER の cli(ssh接続) で PHP7 を使用する

手順

デフォルトのバージョンは5.4.16のようなので、webサーバ側に合わせる(今回は7.3)

mkdir $HOME/bin
ln -s /usr/bin/php7.3 $HOME/bin/php
vi $HOME/.bash_profile

.bash_profile を修正

- PATH=$PATH:$HOME/.local/bin:$HOME/bin
+ PATH=$HOME/bin:$PATH:$HOME/.local/bin

修正したら保存して、反映

source $HOME/.bash_profile

Node.js インストール

参考URL

レンタルサーバ「XSERVER」にNode.jsをインストールする

nodebrewのインストールとnodeのセットアップ

概要

nodebrew経由で入れるのが楽っぽい

手順

nodebrew インストール

wget git.io/nodebrew
perl nodebrew setup
vi $HOME/.bash_profile

またパスを追加

- PATH=$HOME/bin:$PATH:$HOME/.local/bin
+ PATH=$HOME/bin:$HOME/.nodebrew/current/bin:$PATH:$HOME/.local/bin

修正したら保存して反映、バージョン表示されればOK

source $HOME/.bash_profile
nodebrew -v

node/npm のインストール

# stableを入れる
nodebrew install-binary stable
# 入ったバージョンを確認
nodebrew list
# 確認したバージョンをuse
nodebrew use v12.14.1
# node/npmのバージョン確認
node -v
npm -v

キューワーカー設定

キューワーカーをデーモンプロセスにしたいがsupervisorはインストールできないっぽい。crontabに一定間隔で叩かせればいけそう。

参考URL

https://chinotsubo.com/laravel-queue-on-shared-hosting/

Karnel.php にスケジュール設定

参考URLとオプションを少し変えて、1分間隔でキューワーカー起動、JOBがなければ勝手に落ちるようにしてる。アプリケーションの運用上Jobがたまり続けることもそんなになさそうなので、restartも要らないかなー、運用しながら様子みるかなー、って感じで

/**
  * Define the application's command schedule.
  * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
  * @return void
  */
protected function schedule(Schedule $schedule)
{
    //supervisorが使えない環境用の代替運用:1分間隔でキューワーカーを起動。
    $schedule->command('queue:work --tries=1 --stop-when-empty')
        ->everyMinute()
        ->withoutOverlapping();
}

crontabにLaravelのタスクスケジューラを登録

いつもの。Xserverのコンパネから設定すればOK

https://readouble.com/laravel/6.x/ja/scheduling.html

アプリケーションのセットアップ

ソースコードのデプロイ

gitリポジトリ上にLaravelプロジェクトが置いてある前提、とりあえずlaravelというディレクトリを作って放り込む

cd ~/<example.com>
git clone <repo url> laravel
cd laravel

依存パッケージのインストール

いつもの。

composer install

.envファイルの作成と編集

いつも通り。

cp .env.example .env
php artisan key:generate
vi .env

いつも通り。コンパネで作成したMysqlデータベースを指すように、設定を適宜修正。

- DB_HOST=
- DB_DATABASE=
- DB_USERNAME=
- DB_PASSWORD=
+ DB_HOST=<コンパネで確認>
+ DB_DATABASE=<コンパネで作成したDB名>
+ DB_USERNAME=<コンパネで作成、設定したユーザ>
+ DB_PASSWORD=<コンパネで設定したパスワード>

他にも必要な項目があれば適宜実施。とりあえず動かして動作確認するところまで行けば良いので、開発環境と同じような感じで設定しておくと良いでしょう。(メールはログに吐いたり、とりあえずRedisを使わない設定にしておいたり、Queueをsyncにしたり、とか)

DB接続の確認

上記編集を完了して、DBに接続できるかをチェック

php artisan tinker

tinker内で下記実行し、日時が正しく取れればDB接続OK

DB::select("select now()");

webサーバー周りの設定

ドキュメントルートをいじったりはできなそう(調べてない)ので、.htaccessを編集しリダイレクトを設定(全部 public へ)

vi ~/example.com/public_html/.htaccess
+ <IfModule mod_rewrite.c>
+    RewriteEngine On
+    RewriteRule ^(.*)$ public/$1 [QSA,L]
+ </IfModule>

※webサーバがnginxでも.htaccessを書けばいいらしい。謎

.htaccessに書いたリダイレクト先のpublic がLaravel/publicを指すようにシンボリックリンク作成

 ln -s /home/<USERNAME>/<example.com>/laravel/public ./public
8
8
0

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
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?