cloudfreeサーバでLaravelを動かす
2023-12-26 記載
概要 : cloudfreeでLaravelを動かすにはこれまでに培った総合的なノウハウが必要でした
Keyword : Laravel, cloudfree, 『基礎から学ぶ Laravel』
Laravelはartisanコマンドで開発をすすめますが、あいにくcloudfreeではSSHが使えないので、開発はローカルでおこなう必要があります。
そして開発ステップの区切りがよいところでファイルとデータベースを一気にサーバへあげる形になります。こうするとサーバで走らせるのはphpとデータベースアクセスだけで、結局はLaravelもWordpressも同じということです。
もう一点、LaravelはDocumentRootをPublicフォルダにする配置を前提にしていますが、いろんなものを同居させているなら、Laravel占有にさせるわけにはいきません。自分のApacheサーバなら Alias でPublicにLaravel専用のURLを与えてそれで解決ですが、レンタルサーバだとそうもいきません。ドメインも標準のものだけでやりくりするなら工夫が要ります。public_htmlの並びに、訳のわからないLaravel関係フォルダをわらわらと作られても困りますし。
ということで階層を踏んだサブフォルダに押し込めて、Laravelシステムのフォルダにアクセスされたら.htaccessでpublic_htmlにリダイレクトするようにすれば、いけそうです。
プロジェクトのパスは cfsid.cloudfree.jp/laravel_app/public_html/ といった感じに。formのactionなども”/”ではダメで注意して記述する必要がありますが。
ということで、ローカルにセットアップ。
composer create-project laravel/laravel myapp
Venderが50Mほどになりました。
Creating a "laravel/laravel" project at "./bbsapp"
Installing laravel/laravel (v10.3.1)
- Downloading laravel/laravel (v10.3.1)
- Installing laravel/laravel (v10.3.1): Extracting archive
Created project in C:\home\cfsid\cfsid.cloudfree.jp\public_html\...
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 111 installs, 0 updates, 0 removals
- Locking brick/math (0.11.0)
- Locking carbonphp/carbon-doctrine-types (2.1.0)
.....
- Locking voku/portable-ascii (2.0.1)
- Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 111 installs, 0 updates, 0 removals
- Downloading symfony/http-foundation (v6.4.0)
- Downloading fruitcake/php-cors (v1.3.0)
.....
- Installing spatie/ignition (1.11.3): Extracting archive
- Installing spatie/laravel-ignition (2.3.3): Extracting archive
60 package suggestions were added by new dependencies,
use `composer suggest` to see details.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
INFO Discovering packages.
laravel/sail ........................................... DONE
laravel/sanctum ........................................ DONE
laravel/tinker ......................................... DONE
nesbot/carbon .......................................... DONE
nunomaduro/collision ................................... DONE
nunomaduro/termwind .................................... DONE
spatie/laravel-ignition ................................ DONE
83 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
INFO No publishable resources for tag [laravel-assets].
> @php artisan key:generate --ansi
INFO Application key set successfully.
.envをcloudfreeサーバ用に書き換えます。
127.0.0.1ではなくlocalhostがよさそうです。mailのあたりはまだよくわかりません。(てきとう ^^;)
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=cfsid_laravelproject
DB_USERNAME=cfsid_dbuser
DB_PASSWORD=password
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=cfsid
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="cfsid@svXX.cloudfree.ne.jp"
MAIL_FROM_NAME="${APP_NAME}"
Laravelをセットアップするとデータベースにいくつかのテーブルが作られます。
- migrations: データベースのマイグレーション履歴を管理するためのテーブルです。マイグレーションファイルを実行する際に使用されます。
- password_resets: パスワードリセットトークンを保存するためのテーブルです。ユーザーがパスワードをリセットするための機能で使用されます。
- personal_access_tokens: Laravel Sanctum(以前はLaravel Passport)で使用される、APIトークンを保存するためのテーブルです。API認証の一部として使用されます。
- failed_jobs: キューのジョブ実行中に失敗したジョブのログを保存するためのテーブルです。ジョブの再試行やエラーログの追跡に使用されます。
- users: 認証ユーザー管理用のテーブル。
ローカルでエクスポートしてサーバへインポートさせます。
https://cfsid.cloudfree.jp/laravel_project/public/
でLaravel画面(welcome.blade.php)がたちあがりました。
Laravel v10.39.0 (PHP v8.2.9)

書籍『基礎から学ぶ Laravel』にのって学習をすすめました。
第2章までのMessagesモデルをサーバにあげて、
https://cfsid.cloudfree.jp/laravel_project/public/messages/
にアクセス。
無事にデータ追記も成功しました。
このとき
\resources\views\message\index.blade.php
は
<form action=”/laravel_project/public/messages” method=”POST”>
となるので注意が必要です。

これでLaravelは稼働しているのですが、
https://cfsid.cloudfree.jp/laravel_project/にアクセスされた場合、403にはなるのですが、なにか気持ち悪いところです。
よってhttps://cfsid.cloudfree.jpに配置の.htaccessにlaravel_projectパスにアクセスされたら、/laravel_project/public/へリライトする設定を書き加えました。
もっとよいデプロイの方法もありそうですが、とりあえずこれでLaravelの開発をすすめたいと思います。