" />

スポンサーリンク

PHP デプロイ

PHPをレンタルサーバにデプロイする、動かす

更新日:

 このページでは、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を使ってもいいでしょう。

TeratermでレンタルサーバにSSH接続した状態で、ファイル>SSH SCPを選択
From:にはzip化したLaravelプロジェクトを、Toには $pwd コマンドで取得したサーバ側のパスを記入する。その後「Send」ボタンで送信。

アップロードできたら、後は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".

/publicにアクセスして、このように表示されたら、phpのバージョンが古いということです。レンタルサーバによってPHPのバージョンの指定方法は異なると思います。
coreserverではコントロールパネルの マイドメイン利用>PHP設定からドメインごとに指定できるようになっています。

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の追加・編集から作成できる。

tahkah0124_no6 というデータベースを作成した。
プロジェクトルート直下の.env

.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

スポンサーリンク

-PHP, デプロイ

Copyright© ノリックジオグラフィック for Webエンジニア , 2022 All Rights Reserved Powered by AFFINGER5.