サイト管理人Blog

cloudfreeで「さぁ始めましょう♪」

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の開発をすすめたいと思います。

投稿へのコメントは コチラ(掲示板) へお願いします。

サイト管理人Blog