Laravel製のシンプルなランディングページをHostingerへデプロイし、メールをMySQLに保存する

前回の投稿では、ランディングページの作成プロセスと、それを Render.com にデプロイする方法を共有しました。これでメインのコーディング作業は完了しており、以下の公開リポジトリでソースコードを確認できます:

https://github.com/EdgarGGamartgo/landing-page

今回の投稿を理解しやすくするためにも、前回の投稿を先に読んでおくのがおすすめです。興味があれば、こちらをチェックしてみてください:

https://edgargmartinez.wordpress.com/2025/07/08/building-a-simple-landing-page-that-saves-emails-into-a-database-using-laravel-and-render/

さて、今回のチャレンジは、作成したランディングページを別のホスティングサービスで動かすことです。今回は Hostinger を試します:

https://www.hostinger.com/

まず気づいたのは、Hostinger には Render のような無料プランがないということです。テストが目的なので、使わないリソースを買う必要はなく、一番安いプランを検討しました。自分にとってちょうど良さそうだったのは、Hostinger の「Premium Web Hosting」です。ただし、Postgres のサポートがすぐには利用できないようなので、今回は MySQL を使うことにします。

まず、ローカルでランディングページが動くか確認するために、MySQL をインストールする必要があります。Mac の場合は以下のコマンドを実行します:

brew install mysql

次に、MySQL サーバーを起動します:

brew services start mysql

その後、以下のコマンドで MySQL に接続します:

mysql -u root

そしてローカルのデータベースを作成します:

CREATE DATABASE landing_db;

無事に作成できたら、あとはお気に入りの GUI を使ってデータベースを操作できます。今回は DBeaver を使う予定です。接続は問題なく成功しました。

.env ファイルには、次の設定を記述します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=landing_db
DB_USERNAME=root
DB_PASSWORD=

そして、以下のコマンドでマイグレーションを実行します:

php artisan migrate

これでローカルのデータベースにテーブルが作成されます。

ローカル環境でプロジェクトを実行し、前回の Postgres バージョンのように、ローカルのデータベースとやり取りしてメールを保存できるはずです。実行するには以下のコマンドを使います:

php artisan serve

ローカルで問題なく動作することを確認したら、Hostinger のアカウントにログインし、新しく MySQL データベースを作成する必要があります。これでメールをオンライン上に保存できるようになります。作成画面は次のような感じです:

次に、Hostinger の実際のデータベース情報を .env ファイルに反映させる必要があります。例:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=$your_db_from_hostinger
DB_USERNAME=$your_db_user_from_hostinger
DB_PASSWORD=$your_db_password_from_hostinger

vendor ディレクトリを除外して ZIP 化します。

zip -r my_project.zip . -x "vendor/*"

次に、その ZIP ファイルを Hostinger アカウントの Files → File Manager → public_html にアップロードします。

その後、プロジェクトの public フォルダ内のファイルをコピーし、Hostinger の File Manager 内の public_html に保存します。

public フォルダ内のすべてのファイルをコピーして、public_html に追加します。そして、index.php ファイルには次のコードを使用します。

<?php

use Illuminate\Foundation\Application;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

// Check for maintenance mode
if (file_exists(__DIR__.'/storage/framework/maintenance.php')) {
    require __DIR__.'/storage/framework/maintenance.php';
}

// Composer autoload
require __DIR__.'/vendor/autoload.php';

// Bootstrap Laravel and handle request
$app = require_once __DIR__.'/bootstrap/app.php';

$app->handleRequest(Request::capture());

.env ファイルも含める必要があり、そこにはデータベースの認証情報や APP_URL など、本番環境用の実際の値を設定しておきます。

さらに、public_html 内に新しく .htaccess ファイルを作成し、以下の内容を記述します。

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Block sensitive files
    <FilesMatch "^\.env">
        Require all denied
    </FilesMatch>
    <Files composer.json>
        Require all denied
    </Files>
    <Files composer.lock>
        Require all denied
    </Files>
    <Files .gitignore>
        Require all denied
    </Files>

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Send everything to index.php if not file/folder
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

次に、SSHアクセスが必要です。プロジェクトの依存パッケージをインストールし、マイグレーションを実行します。

私の場合、Hostinger で公開用にアクセスするための URL は以下の通りです:

https://darkred-stork-321443.hostingersite.com

無事に新しいメールレコードを作成できました。

Hostinger のダッシュボードから phpMyAdmin を使って、レコードを確認することができます。

次回の投稿では、新しいプロバイダーでアプリケーションをデプロイするテストを行う予定です。DigitalOcean に興味があり、Render や Hostinger と比較してみたいと思っています。

Hostinger 用の最終的なコードは、以下の新しいブランチで公開しています:

https://github.com/EdgarGGamartgo/landing-page/tree/mysql-hostinger-deployment

最後まで読んでいただき、ありがとうございました!


Discover more from EDGAR MARTINEZ

Subscribe to get the latest posts sent to your email.

By:


Leave a comment

Discover more from EDGAR MARTINEZ

Subscribe now to keep reading and get access to the full archive.

Continue reading