このページでは、PHPを動かせるレンタルサーバでPHPを動かす方法を書いていきます。PHPはスクリプト言語なので、Javaのようにビルドする必要はありません。しかし、SCSSやLaravelなどのフレームワークを使うと、そのままでは動きませんので、やはり適切にビルドする必要があります。その手順を勉強兼ねてまとめていきたいと思います。
ココで使用するのは、coreserverという格安レンタルサーバです。PHPのバージョンは 7.1です。
1.単純なPHPファイル(HTML/CSS)だけのプロジェクト
純粋なPHPファイルは、単純にアップロードするだけで動作します。
<html>
<body>
<?php
echo "hello";
?> dolly
</body>
</html>
PHPはスクリプト言語に分類され、JavaScriptと同じように、動作環境さえ整っていれば、HTML内の<?php>を順次実行してくれます。これが基本形です。
2.Laravelプロジェクトをデプロイ(ファイル丸ごと)
レンタルサーバでComposerを動かす
まずはLaravelプロジェクトの作成に必要なComposerをレンタルサーバにインストールしていきます。
coreserver では、実は既にcomposerがインストールされています。
しかし、$ composer -v でバージョンを確認するとエラーになります。
coreserver では、php のバージョンを指定しながら、composerを実行することで、正常にプロジェクトを作成できます。
$ composer create-project laravel/laravel no6-sample --prefer-dist ←×
$ cd ProjectFolder(任意)
$ /usr/local/bin/php71cli /usr/bin/composer create-project laravel/laravel no6-sample --prefer-dist
この状態でブラウザから作成したプロジェクトフォルダ(ここでは/laravel1)にアクセスしても、403エラーとなります。
Laravelフレームワークは、プロジェクトを作成した時点で、こんなにファイルがあります。ファイル数: 6,922、フォルダー数: 1,153もあります。
これをすべてレンタルサーバにアップロードすれば、そのまま動かすことができます。
FFFTP等でアップロードする
最も単純な方法は、FFFTPでアップロードすることです。ですが、何度かトライしたのですが、ファイル数が多すぎるからか、途中でFFFTPが落ちてしまいます。やるとすれば、まとめてアップするのではなくて、2~3個のフォルダずつアップしていく必要があります。
ZIP圧縮して、FFFTPまたはTeratermのSSH SCP等でアップロードする
そのままアップロードすると落ちるので、一手間加える、つまりZIP圧縮してアップロードし、サーバ側で解凍するという方法があります。この方法では、サーバ側で解凍する必要があるため、TeratermなどでSSH接続できることが必須です。
FFFTPでアップロードする場合は、圧縮したZIPファイルをそのままアップロードしましょう。一瞬でアップロードは終わります。
TeratermのSSH SCPを使ってもいいでしょう。
アップロードできたら、後はzip解凍するだけです。
$ unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.
$ unzip laravel-sample.zip
で、UNZIPがインストールされているか確認します。coreserverには付属していました。大半のレンタルサーバには付属していると思います。
これで解凍してできたフォルダの、「/public」をめがけてブラウザからアクセスすると、Laravelプロジェクトが表示できるようになっています。Laravelでは/publicが公開フォルダであるため、プロジェクトルートではなくて、/publicにアクセスする必要があります。
試しに、適当なViewを作ってみます。
/resources/views/hoge.blade.php(新規)
<body class="antialiased">
Hoge<br>
{{ $fuga }}
</body>
/routes/web.php(追記)
Route::get('/hoge', function () {
return view('hoge', ['fuga' => 'hello world!']);
});
ブラウザから、/public/hoge にアクセスします。
無事、表示されました。
(Javaをやっていた人間としては、サーバ再起動していないのに、ルーティングされるのが不思議です。)
シンボリックリンクでURLを最適化する
coreserverでは、
http://account_name.sxxx.coreserver.jp/ に来たアクセスは、
/virtual/account_name/public_html に転送されます。
/public_html/xxx/yyy/zzz へのアクセスを、http://account_name.sxxx.coreserver.jp/yyy/に転送するには、
Linuxコマンドのlnを使ってシンボリックリンクを貼ります。
つまり、上の画像の例で言うと、
http://tahkah0124.s140.coreserver.jp/study/laravel-simple/public/
ではなく、
http://tahkah0124.s140.coreserver.jp/laravel-simple/
でアクセスできるようにしたい。
$ cd /virtual/tahkah0124/public_html
$ ln -s /virtual/tahkah0124/public_html/study/laravel-simple/public laravel-simple
これによって、URLを最適化することができました。
Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0".
Laravelのログの出力先は?
Laravelプロジェクト内の、storage/logs/laravel.log がデフォルトです。
変更するには、.envに下記のように出力先を追記します。
APP_LOG_DIR=/var/www/www.example.com/storage/
3.サーバ側でLaravelプロジェクトを作成する
2の方法でも動くことが確認できました。しかし、もっとスマートな方法があるはずだと思ったでしょう。2でとりあえず動かすことができたので、より現実的な方法を探っていきます。
4.Laravelフレームワーク+SCSS
5.Laravelプロジェクト+MySQL
1.プロジェクトの作成
2や3の方法を使って、MySQLをサーバ上に配置します。ここでは2の丸ごとアップロードを使いました。
2.データベースの作成と.envの設定
各レンタルサーバの管理画面から、データベースを作ります。Coreserverでは管理画面>データベース>MySQLの追加・編集から作成できる。
.envを作成したデータベースに合わせて編集します。
coreserverではこのようになります。
DB_DATABASE=tahkah0124_no6 (作成時に登録したDB/ユーザー名)
DB_USERNAME=tahkah0124_no6 (作成時に登録したDB/ユーザー名)
DB_PASSWORD=xxxxxxxxxxxxxx (作成時に登録したパスワード)
3.テーブルの作成
php artisan migrate により、データベースにテーブル群を作る。
$ /usr/local/bin/php80cli artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (11.07ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (6.76ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (7.17ms)
Migrating: 2021_01_09_121009_create_properties_table
Migrated: 2021_01_09_121009_create_properties_table (3.44ms)
4.アクセスする
この時点で、プロジェクトルート/public にアクセスすることで、画面表示することができます。
あとは、ここまで紹介した方法で、URLを最適化してください。
まとめ
とにかくサーバでLaravelを動かしたい人は、ローカルにあるLaravelプロジェクトを丸ごとアップロードするのが一番早いです。
参考
https://www.amelt.net/imc/programming/cakephp/5733/
https://blog.dododori.com/create/program/laravel-coreserver/#jump-6