概要
さくらレンタルサーバーのスタンダードプランを利用していて、そこにLaravelをインストールしてみた記録。以下の2つの方法を試してみた。
- composerをドキュメントルートに配置し、ドキュメントルート下にプロジェクトを作成
- composerをドキュメントルートと別の場所に配置し、ドキュメントルート下で公開
ドキュメントルートへのインストール
composerのインストール
ssh接続後~/www
(ドキュメントルート)に移動し、composer.phar
をダウンロード。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
FreeBSD 11.2-RELEASE-p14 (GENERIC) #0: Mon Aug 19 22:38:50 UTC 2019 Welcome to FreeBSD! %cd ~/www % curl -sS https://getcomposer.org/installer | php All settings correct for using Composer Downloading... Composer (version 2.1.14) successfully installed to: /home/..../www/composer.phar Use it: php composer.phar |
インストール確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
% php composer.phar ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.1.14 2021-11-30 10:51:43 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: about Shows a short information about Composer. archive Creates an archive of this composer package. browse Opens the package's repository URL or homepage in your browser. cc Clears composer's internal package cache. check-platform-reqs Check that platform requirements are satisfied. clear-cache Clears composer's internal package cache. clearcache Clears composer's internal package cache. config Sets config options. create-project Creates new project from a package into given directory. depends Shows which packages cause the given package to be installed. diagnose Diagnoses the system to identify common errors. dump-autoload Dumps the autoloader. dumpautoload Dumps the autoloader. exec Executes a vendored binary/script. fund Discover how to help fund the maintenance of your dependencies. global Allows running commands in the global composer dir ($COMPOSER_HOME). help Displays help for a command home Opens the package's repository URL or homepage in your browser. i Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. info Shows information about packages. init Creates a basic composer.json file in current directory. install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. licenses Shows information about licenses of dependencies. list Lists commands outdated Shows a list of installed packages that have updates available, including their latest version. prohibits Shows which packages prevent the given package from being installed. reinstall Uninstalls and reinstalls the given package names remove Removes a package from the require or require-dev. require Adds required packages to your composer.json and installs them. run Runs the scripts defined in composer.json. run-script Runs the scripts defined in composer.json. search Searches for packages. self-update Updates composer.phar to the latest version. selfupdate Updates composer.phar to the latest version. show Shows information about packages. status Shows a list of locally modified packages. suggests Shows package suggestions. u Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. update Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. upgrade Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. validate Validates a composer.json and composer.lock. why Shows which packages cause the given package to be installed. why-not Shows which packages prevent the given package from being installed. |
プロジェクト作成
~/www
ディレクトリーでテスト用のプロジェクトを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
% php composer.phar create-project laravel/laravel laravel_test Creating a "laravel/laravel" project at "./laravel_test" Installing laravel/laravel (v8.6.9) - Downloading laravel/laravel (v8.6.9) - Installing laravel/laravel (v8.6.9): Extracting archive Created project in /home/..../www/laravel_test > @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies Lock file operations: 110 installs, 0 updates, 0 removals - Locking asm89/stack-cors (v2.0.3) - Locking brick/math (0.9.3) ........ - Locking voku/portable-ascii (1.5.6) - Locking webmozart/assert (1.10.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 110 installs, 0 updates, 0 removals - Downloading doctrine/inflector (2.0.4) - Downloading doctrine/lexer (1.2.1) ........ - Downloading myclabs/deep-copy (1.10.2) - Downloading phpunit/phpunit (9.5.10) - Installing doctrine/inflector (2.0.4): Extracting archive - Installing doctrine/lexer (1.2.1): Extracting archive ........ - Installing myclabs/deep-copy (1.10.2): Extracting archive - Installing phpunit/phpunit (9.5.10): Extracting archive 67 package suggestions were added by new dependencies, use `composer suggest` to see details. Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead. Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: facade/ignition Discovered Package: fruitcake/laravel-cors Discovered Package: laravel/sail Discovered Package: laravel/sanctum Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully. 77 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 No publishable resources for tag [laravel-assets]. Publishing complete. > @php artisan key:generate --ansi Application key set successfully. |
動作確認
welcomeページ
ブラウザーでURLを指定。
1 |
http://ホスト名/laravel_test/ |
結果は以下のエラー。
You don’t have permission to access this resource.
URLを以下のように指定して、welcomeページが無事表示される。ドキュメントルート下にプロジェクトを配置すると、public
ディレクトリー内が公開対象になる。
1 |
~/www/laravel_test/public/ |
ルーティング
以下のルーティングで'Hello'
が表示される。
1 2 3 4 |
Route::get('/', function () { return 'Hello'; # return view('welcome'); }); |
コントローラー
TestController
コントローラーを作成してアクションを定義し、その中で文字列を渡す。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function testAction() { return 'Hello!'; } } |
ルーティングを以下のように変更。
1 |
Route::get('/', 'App\Http\Controllers\TestController@testAction'); |
これでブラウザーに'Hello!'
と表示される。
ビュー
resource/views
ディレクトリーに以下のビューファイルtest.blade.php
を作成。
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>{{ $title }}</title> </head> <body> <h1>Hello from blade!</h1> </body> </html> |
TestController
を以下のように修正。
1 2 3 4 5 6 |
class TestController extends Controller { public function testAction() { return view('test', ['title' => 'Laravel Test']); } } |
これでブラウザーにアクセスすると、タブのタイトルが'Laravel Test'
となり、h1
要素のフォントで'Hello from blade!'
と表示される。
別ディレクトリーへのインストール
composerのインストール
ドキュメントルート下にプロジェクトを配置するのは気持ち悪いので、別に配置する。ここではユーザーホーム下のディレクトリーに配置してみる。ライブラリーを加えていないので、インストールはcomposer.phar
を移動して配置するのみ。
まずcomposer_test
ディレクトリーを作ってその下にcomposer.phar
を移動。また、先にドキュメントルートに作ったプロジェクトを削除しておく。
1 2 3 4 5 6 7 |
% mkdir composer_test % mv www/composer.phar composer_test/ % rm -rf www/laravel_test/ % cd composer_test/ |
移動先でcomposerの動作確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
% php composer.phar ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.1.14 2021-11-30 10:51:43 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: about Shows a short information about Composer. archive Creates an archive of this composer package. browse Opens the package's repository URL or homepage in your browser. cc Clears composer's internal package cache. check-platform-reqs Check that platform requirements are satisfied. clear-cache Clears composer's internal package cache. clearcache Clears composer's internal package cache. config Sets config options. create-project Creates new project from a package into given directory. depends Shows which packages cause the given package to be installed. diagnose Diagnoses the system to identify common errors. dump-autoload Dumps the autoloader. dumpautoload Dumps the autoloader. exec Executes a vendored binary/script. fund Discover how to help fund the maintenance of your dependencies. global Allows running commands in the global composer dir ($COMPOSER_HOME). help Displays help for a command home Opens the package's repository URL or homepage in your browser. i Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. info Shows information about packages. init Creates a basic composer.json file in current directory. install Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json. licenses Shows information about licenses of dependencies. list Lists commands outdated Shows a list of installed packages that have updates available, including their latest version. prohibits Shows which packages prevent the given package from being installed. reinstall Uninstalls and reinstalls the given package names remove Removes a package from the require or require-dev. require Adds required packages to your composer.json and installs them. run Runs the scripts defined in composer.json. run-script Runs the scripts defined in composer.json. search Searches for packages. self-update Updates composer.phar to the latest version. selfupdate Updates composer.phar to the latest version. show Shows information about packages. status Shows a list of locally modified packages. suggests Shows package suggestions. u Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. update Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. upgrade Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file. validate Validates a composer.json and composer.lock. why Shows which packages cause the given package to be installed. why-not Shows which packages prevent the given package from being installed. |
プロジェクトの作成
composer_test
ディレクトリー下に先と同じ手順でプロジェクトを作成。
公開ディレクトリーへのシンボリックリンク
公開ディレクトリー以外に配置したプロジェクトは、クライアントからは認識されない。そこでプロジェクトのpublic
ディレクトリーのシンボリックリンクをドキュメントルート下に作成する。
ここではシンボリックリンク名をプロジェクト名と同じ名前にして、~/www
ディレクトリー下に作成。
1 |
% ln -s ~/laravel/laravel_test/public/ ~/www/laravel_test |
この状態で以下のURLを指定するとwelcomeページが表示される。
1 |
http://taustation.com/laravel_test/ |
コントローラー・ビュー
新しいプロジェクトでTestController
コントローラーを作成。
1 2 3 |
% php artisan make:controller TestController Controller created successfully. |
ビューを呼び出すアクションを定義。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function testAction() { return view('test', ['title' => 'Laravel Test']); } } |
ルーティングを定義。
1 |
Route::get('/', 'App\Http\Controllers\TestController@testAction'); |
resources/views/
ディレクトリーにtest.blade.php
ファイルを以下の内容で作成。
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>{{ $title }}</title> </head> <body> <h1>Hello from blade!</h1> </body> </html> |
これでブラウザーにアクセスすると、タブのタイトルが'Laravel Test'
となり、h1要素のフォントで'Hello from blade!'
と表示される。
Laravelのバージョン指定
composerでプロジェクトを作成するときにLaravelのバージョン指定が可能だが、さくらサーバーでワイルドカードを使うとうまくいかない。
1 2 3 |
% php composer.phar create-project laravel/laravel laravel_test2 6.* php: 照合パターンに合いません. |
以下のようにワイルドカードを指定しない方法だと、無事にプロジェクトが作成される。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
% php composer.phar create-project laravel/laravel laravel_test 6 Creating a "laravel/laravel" project at "./laravel_test" Installing laravel/laravel (v6.0.0) - Downloading laravel/laravel (v6.0.0) - Installing laravel/laravel (v6.0.0): Extracting archive Created project in /home/taustation/laravel/laravel_test ........ Package manifest generated successfully. 60 packages you are using are looking for funding. Use the `composer fund` command to find out more! > @php artisan key:generate --ansi Application key set successfully. |
バージョン確認。
1 2 3 4 5 |
% cd laravel_test/ % php artisan --version Laravel Framework 6.20.43 |
プロジェクトの設定
タイムゾーンとロケールをconfig/app.php
ファイルで設定。
1 2 3 4 5 |
........ 'timezone' => 'Asia/Tokyo', ........ 'locale' => 'ja', ........ |
データベースはさくらサーバーの設定に従って、.env
ファイルで設定。DB_HOST
はmysql5.7アップグレード後の場合、phpMyAdminなどで使われるサーバー名。
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=mysqlxxxx.db.sakura.ne.jp DB_PORT=3306 DB_DATABASE=データベース名 DB_USERNAME=ユーザー名 DB_PASSWORD=******** |