Windows開発環境からWinSCPを用いて一般ユーザーのホームディレクトリ(~/)へLaravelプロジェクト(.env.example や .htaccess などの隠しファイルを含む全ファイル)を転送済みの状態からスタート。
1:SSH端末でのファイル移動(mv)と権限設定
現在一般ユーザーのホームディレクトリ(~/laravel-app)に配置されているプロジェクトフォルダを、sudo を使って目的の /var/www 配下へ移動し、Webサーバー(Apache)が書き込みを行えるよう適切な所有権を設定します。
Bash
# 1. ホームディレクトリから /var/www/ 配下へフォルダごと移動
sudo mv ~/laravel-app /var/www/
# 2. プロジェクト全体の所有者を一括でapacheに変更(隠しファイルも自動で含まれます)
sudo chown -R apache:apache /var/www/laravel-app
# 3. ログとキャッシュ領域に適切な書き込み権限(775)を付与
sudo chmod -R 775 /var/www/laravel-app/storage
sudo chmod -R 775 /var/www/laravel-app/bootstrap/cache
📦 ステップ 2:Node.js環境の確認と本番ビルドの実行
Viteによるフロントエンド資産(Bootstrap 5等)のビルドを行う前に、サーバー側に Node.js / npm が導入されているか確認し、未導入の場合のみインストールを行います。
1. Node.js のインストール状態チェック
Bash
node -v
npm -v
👉 バージョン(例: v20.xx.x)が表示された場合: すでに導入済みのため、次の「2. ライブラリ復元と本番ビルド」へ進んでください。 👉 「コマンドが見つかりません」と出た場合: 以下のコマンドを実行してNode.js環境をインストールします。
Bash
# NodesourceからNode.js 20 LTS(長期サポート版)のリポジトリをセットアップ
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
# Node.jsとnpmを一括インストール
sudo dnf install -y nodejs
2. ライブラリ復元と本番ビルドの実行
プロジェクトのルートに移動し、サーバー環境に必要なパッケージ群を生成します。
Bash
cd /var/www/laravel-app
# PHP側の依存ライブラリを本番用に最適化して復元
composer install --no-dev --optimize-autoloader
# フロントエンド資産(CSS/JS)のインストールとコンパイル(Viteビルド)
npm install
npm run build
🗄️ ステップ 3:MariaDBの専用データベース・ユーザー作成
セキュリティを高めるため(最小権限の原則)、管理者である root ユーザーの使い回しを避け、今回のLaravelアプリ専用のデータベースと専用ユーザーをMariaDB内に個別に構築します。
1. MariaDBにログインして作成
Bash
# rootユーザーでログイン(パスワードを入力)
mysql -u root -p
ログイン後、以下のSQLコマンドを順に実行します。
SQL
-- 1. 今回のアプリ専用のデータベースを作成
CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 2. 専用ユーザー「laravel_user」を作成(※パスワードは強力なものを指定してください)
CREATE USER 'laravel_user'@'127.0.0.1' IDENTIFIED BY '任意の強力なパスワード';
-- 3. 作成したユーザーに、laravel_db に対するすべての操作権限を付与
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'127.0.0.1';
-- 4. 設定を即時反映して終了
FLUSH PRIVILEGES;
exit;
⚙️ ステップ 4:環境設定ファイル(.env)の作成とテーブル流し込み
無事に転送されている .env.example から本番用の設定ファイルを作成し、暗号化キーの発行とデータベース構造の流し込みを行います。
Bash
# 1. テンプレートから.envを作成してアプリケーションキーを自動生成
cp .env.example .env
php artisan key:generate
2. .env の本番書き換え
vi .env などでファイルを開き、本番環境のURLと、先ほどステップ3で作成した専用データベース情報に書き換えて保存します。
Ini, TOML
APP_NAME=ProductManagement
APP_ENV=production
APP_DEBUG=false # 本番環境ではエラー詳細を隠すため必ずfalse
# 🌟アクセスさせたいサブドメイン付きのサブディレクトリURLを正確に指定
APP_URL=http://app.softdev-learn.cc/laravel-app
# データベース接続設定(ステップ3で作成した専用ユーザーの情報を指定)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db # 作成したデータベース名
DB_USERNAME=laravel_user # 🌟 rootではなく作成した専用ユーザー
DB_PASSWORD=任意の強力なパスワード # 同パスワード
3. テーブル構造の流し込み(マイグレーション)
Bash
# 本番環境の確認プロンプトをスキップして強制実行(DONEと出れば成功)
php artisan migrate --force
📄 ステップ 5:Apache設定ファイルの更新(既存VirtualHostへの追記)
既存のバーチャルホスト設定ファイル(例:/etc/httpd/conf.d/subdomain.conf など)を開き、app.softdev-learn.cc の <VirtualHost *:80> ブロック内に、今回のLaravel用設定(Alias と <Directory>)を追記してURLを直結させます(タイポ修正済み)。
Apache
# ==========================================
# 1. 既存のWordPress用 (softdev-learn.cc)
# ==========================================
Alias /twitter /var/www/app/TwitterModoki/public
<Directory /var/www/app/TwitterModoki/public>
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerName softdev-learn.cc
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# ==========================================
# 2. ポートフォリオアプリ用 (app.softdev-learn.cc)
# ==========================================
<VirtualHost *:80>
ServerName app.softdev-learn.cc
DocumentRoot /var/www/app
<Directory /var/www/app>
AllowOverride All
# 🌐 Cloudflare Tunnel経由の通信を受け入れるため全員を許可
Require all granted
</Directory>
# 🌟 追記:新しいLaravelアプリ用の設定
# URL「/laravel-app」へのアクセスを、独立した「/var/www/laravel-app/public」へ直結
Alias /laravel-app /var/www/laravel-app/public
<Directory /var/www/laravel-app/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
🔃 Apacheのテストと反映
Bash
# 設定ファイルの文法チェック(Syntax OKが出れば正常)
sudo httpd -t
# Apacheを再起動して設定を本番反映
sudo systemctl restart httpd
📝 ステップ 6:Laravel側 .htaccess の修正(404エラー対策)
すべてのアプリをサブディレクトリ(Alias)で運用する場合、Laravel標準のURL書き換えルールが階層を誤認し、トップページ以外(例:/products)にアクセスした際にApacheの404エラーを吐くケースがあります。これを防止するため、配置された .htaccess にベースURLを明示します。
🛠️ /var/www/laravel-app/public/.htaccess の修正
vi public/.htaccess でファイルを開き、RewriteEngine On と書かれているすぐ下の行に、RewriteBase /laravel-app/ を追記して上書き保存します。
Apache
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# 🌟追記:サブディレクトリ内でルーティング(/productsなど)を正常に行うための設定
RewriteBase /laravel-app/
# Redirect Trailing Slashes If Not A Folder...
RewriteRule ^(.*)/$ /$1 [L,R=301]
📌 デプロイ完了後の動作確認チェックリスト
- 既存アプリの生存確認
や(http://softdev-learn.cc/)初心者のWEB技術習得の軌跡[http://app.softdev-learn.cc/既存のアプリ名](http://app.softdev-learn.cc/既存のアプリ名)(または/twitter)にアクセスし、これまでの既存環境が完全無傷で動いているかを確認。
- 新しいLaravelアプリの疎通確認



コメント