iCLUSTA+でLaravelを導入するのに苦労した

GMOのiCLUSTAがLaravelに不親切で苦労した忘備録...

ソース反映がFTPでしかできない

iCLUSTAではSSHは使用できない。FTPのみ。
そのため、git clonecomposer installができないので、
重たいvendorファイルやその他ソースをFTPでアップする必要がある。

当然npmも使えないので、viteの場合はローカルにてnpm run buildした後に、
ビルドされたpublic/buildディレクトリをFTPにてアップロードする。

ビルドファイルを直接アップするので、node_modulesはアップ不要
(重いから上げないほうがいい)

シンボリックリンクが貼れない

SSHは使用できないし、ファイルマネージャーにもシンボリックリンク機能はないので、
以下のようなcgiを設置して使用する必要があった。

https://qiita.com/rdonster/items/e99d1f3db7de280de36d

cronの定期処理について

管理画面上でcron設定は行えるが、
phpコマンドが使えないのでschedule:runが実行できない...

そのためphp artisan schedule:runを実行する
メソッドを別途作成して呼び出す必要があった

  • routes/web.phpに以下を追記
Route::get('/run-schedule', function () {
    \Illuminate\Support\Facades\Artisan::call('schedule:run');
    \Illuminate\Support\Facades\Log::info('schedule:run at '. now()->format('Y.m.d H:i'));
    return 'Scheduler run successfully.';
});

  • schedule_run.phpをLaravel直下にアップ
#! /usr/local/php81/bin/php
<?php
$url = '{サイトURL}/run-schedule';

$response = file_get_contents($url);

if ($response === false) {
    echo 'Error accessing the URL.';
} else {
    echo $response;
}

※ 権限は755にする
※ 1行目の! /usr/local/php81/bin/phpは自身のPHPのバージョンに変更する
$urlには自身のサイトURLを入れる

.envの設定確認

  • DB接続情報
    データベース > 接続情報で確認

  • SMTP情報
    メール > 一覧のメールアドレスクリックで確認

通常のsmtp.XXXをホストにすると証明書エラーが出たので、
2つ目のmail.XXXを使用した。こんな感じ↓

MAIL_MAILER=smtp
MAIL_HOST=mail.red.shared-server.net
MAIL_PORT=465
MAIL_USERNAME=no-reply@{ドメイン}
MAIL_PASSWORD={パスワード}
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=no-reply@{ドメイン}
MAIL_FROM_NAME="${APP_NAME}"

\ 案件のご依頼・ご相談はこちらから /