1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

③【DNSレコード後】ConoHa VPSでLaravel + Apache + phpMyAdminを公開する手順(2025年版)

Last updated at Posted at 2025-07-18

⭐️ はじめに

これらの続きです。

⭐️ 前提条件

OS: AlmaLinux 9.5

LaravelアプリはGitHubにある

rootログイン済み

ドメイン or グローバルIPでアクセス予定

Webサーバー: Apache (httpd)

手順

✅ 1:Apache (ウェブサーバ) インストール

# Apache(httpd)をサーバーに「インストール」
dnf install httpd -y

# サーバー起動時に Apache を「自動起動」する設定
systemctl enable httpd

# Apache サーバーを「今すぐ起動」
systemctl start httpd

Apache がうまく動いているか確認(ステータス確認)

systemctl status httpd

以下ならOK:

active (running)

✅ 2:ファイアウォール設定

# ブラウザなどからのWebアクセス(http://)を受け付けられるようにする(ポート80)
firewall-cmd --permanent --add-service=http

# SSL(https://)での通信を許可する(ポート443)
firewall-cmd --permanent --add-service=https

# ファイアウォール設定を再読み込みして、変更を反映
firewall-cmd --reload

確認コマンド

firewall-cmd --list-all

以下が表示されていればOK:

services: http https

✅ 3:「PHP 8.2 & モジュール」インストール

# AlmaLinux や CentOS/RHEL では標準にない便利な追加パッケージ群を使えるようにする
dnf install epel-release -y

# Remiリポジトリを導入:Remiリポジトリは PHP の最新版(例:PHP 8.2)を提供する信頼性の高い外部リポジトリ
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

# 既存のPHPモジュール設定を初期化:AlmaLinux 9 では「モジュール」という仕組みでバージョン管理されていて、一度リセットしないと Remi版が有効にならない。
dnf module reset php -y

# Remi版のPHP 8.2を有効化
dnf module enable php:remi-8.2 -y

# Laravelに必要なPHP本体+モジュールをまとめてインストール
dnf install php php-cli php-mbstring php-xml php-bcmath php-curl php-common php-zip php-mysqlnd php-gd php-opcache unzip -y

この5行で「PHP 8.2 を使って Laravel アプリが正常動作する最低限の環境」が整います。

🔹 phpのバージョン確認

php -v

以下のような表示ならOK:

PHP 8.2.29

✅ 4:Composer インストール

# PHPで https://getcomposer.org/installer からインストーラーファイルをダウンロードして、composer-setup.php という名前で保存する。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# ダウンロードしたインストーラー (composer-setup.php) を使って Composer本体(composer.phar) をインストールする。
php composer-setup.php

# インストールされた composer.phar をシステム全体で使えるように、/usr/local/bin/composer に移動して、名前を composer に変更する。
# これでどのディレクトリからでも composer コマンドで実行可能になる。
mv composer.phar /usr/local/bin/composer

# Composerが正しくインストールされたか確認するために、バージョンを確認する。
composer --version

✅ 5:Git のインストール(AlmaLinux / RHEL系)

dnf install git -y

✅ 6:Laravelアプリ clone

# Webサイトのファイルを配置する場所(/var/www)に移動
cd /var/www
git clone https://github.com/yourname/your-laravel-repo.git your-app-name
cd your-app-name

# `Apache`でも`root`でも`composer install`よりも`sudo -u apache composer install`の方がbetter
sudo -u apache composer install --no-dev --optimize-autoloader

なぜここに移動する?(cd /var/www)
Apache(Webサーバ)は、デフォルトで /var/www 以下にあるファイルを公開対象とするため。

✅ 7:env と APP_KEY の設定(Laravelの基本動作に必要)

cp .env.example .env
php artisan key:generate

✅ 8:Laravelの初期コマンド(リンク作成・キャッシュクリア)

php artisan storage:link
php artisan optimize:clear

✅ 9:パーミッション設定(Apache が Laravel を正常に動かすために必要な権限付与)

chmod -R 755 storage bootstrap/cache # Laravelが「ログを書いたり」「キャッシュを保存したり」できるように
chown -R apache:apache /var/www/easy_doc_maker # Apache(ウェブサーバー)ユーザーがファイルを操作できるように

✅ 10:MariaDB (データベース)

🔹 10-1:MariaDB (データベース) 作成

# dnf コマンドで MariaDB のサーバー(RDBMS本体)をインストールする。
dnf install mariadb-server -y

# MariaDBを「サーバー起動時に自動で起動」するよう設定。
systemctl enable mariadb

# 今すぐ MariaDB サーバーを起動する。
systemctl start mariadb

# MariaDBをセキュリティ強化するための初期設定スクリプトを実行。
# 補足あり
mysql_secure_installation

🔸 'mysql_secure_installation'の質問回答

1問目:現在の root パスワードを入力してください(未設定なら Enter)
[root@honaki-server easy_doc_maker]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 


MariaDB をインストールしたばかりで root パスワードをまだ設定していないなら、何も入力せずに Enter を押してください。

2問目以降
項目 推奨回答 補足説明
1 unix_socket認証に切り替えるか n phpMyAdminからrootログインするため「n」にする
2 rootパスワードを設定するか Y セキュリティ強化のため必ず設定
3 匿名ユーザーを削除するか Y 不要な匿名アクセスを防ぐ
4 リモートからのrootログインを禁止するか Y セキュリティ強化のため有効
5 testデータベースを削除するか Y 不要なDBを削除してセキュリティ向上
6 権限テーブルをリロードするか Y 上記の変更をすぐに反映させるため

🔹 10-2:MariaDB:新しいユーザー作成&権限付与の手順

🔸 10-2-1:MariaDB に root ユーザーでログイン

mysql -u root -p

→ パスワードを聞かれるので、先ほど設定した root のパスワード を入力。

🔸 10-2-2:データベースを作成

CREATE DATABASE 任意のデータベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

🔸 10-2-3:ユーザーを作成

CREATE USER '任意のユーザー名'@'localhost' IDENTIFIED BY '任意のパスワード';

※ localhost の部分は、phpMyAdmin からログインする場合も基本 localhost のままでOK。

🔸 10-2-4:作成したDBに対して権限を付与

GRANT ALL PRIVILEGES ON *.* TO '任意のユーザー名'@'localhost' WITH GRANT OPTION;

🔸 10-2-5:権限の即時反映

FLUSH PRIVILEGES;

🔸 10-2-6:ユーザー確認

SELECT User, Host FROM mysql.user WHERE User = '任意のユーザー名';

→ このユーザーは phpMyAdmin のログインに使えます。

🔹 10-3:.env の DB設定を修正

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=任意のデータベース名
DB_USERNAME=任意のユーザー名
DB_PASSWORD=任意のパスワード

🔹 10-4:hpMyAdmin インストール & 外部アクセス許可手順

🔸 10-4-1:phpMyAdmin をインストール

dnf install phpMyAdmin -y

🔸 10-4-2:設定ファイルを開く

vi /etc/httpd/conf.d/phpMyAdmin.conf

🔸 10-4-3:外部アクセスを許可するように変更(例)

以下のようなブロックがあるので:

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <RequireAny>
     Require ip 127.0.0.1
     Require ip ::1
   </RequireAny>
</Directory>

この Require ip の部分を 自分のグローバルIP に変更します

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

     <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
        Require ip 自分のグローバルIP
    </RequireAny>
</Directory>
自分のグローバルIPの調べ方

🔸 10-4-4:Apache を再起動して反映

systemctl restart httpd

🔸 10-4-5:ブラウザでアクセス確認

http://ドメイン/phpMyAdmin

✅ 11:VirtualHost(HTTP用)作成

※ これを「事前に書くこと」が「12」で行う Certbot 成功のカギ

vi /etc/httpd/conf.d/your-app.conf

以下を追記

# vi /etc/httpd/conf.d/your-app.conf

<VirtualHost *:80>
    ServerName ドメイン
    DocumentRoot /var/www/アプリ名/public

    <Directory /var/www/アプリ名/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/httpd/アプリ名-error.log
    CustomLog /var/log/httpd/アプリ名-access.log combined
</VirtualHost>

構文チェック & 更新:

# 構文チェック
apachectl configtest
# => Syntax OK であれば OK

# 更新
systemctl restart httpd

✅ 12:Let's EncryptでSSL化

🔹 12-1:certbot インストール(EPEL経由)

# EPEL(Extra Packages for Enterprise Linux)という追加のパッケージリポジトリをインストール
dnf install epel-release -y

# certbot(Let's Encrypt 公式のSSL証明書取得ツール)と、Apache連携プラグインをインストール
dnf install certbot python3-certbot-apache -y

🔹 12-2:certbot 実行(Apache設定を自動でSSL化)

certbot --apache


いくつか質問に回答してく
・メールアドレスを入力
・利用規約に同意
・HTTP → HTTPSリダイレクトも聞かれるので「2(リダイレクトを設定)」を選択

🔹 12-3:Apache 再起動

systemctl restart httpd

→ 成功すると /etc/httpd/conf.d/your-app-le-ssl.conf が自動生成されます
その中に、以下のような記述が自動で追加されます:

<VirtualHost *:443>
    ServerName your-domain.com
    DocumentRoot /var/www/your-app-name/public
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
    ...
</VirtualHost>

✅ 13:SSL証明書の自動更新(cron)

# 1. certbot のパスを確認(多くは /usr/bin/certbot)
which certbot

# 2. 重複がないか確認
grep certbot /etc/crontab

上記の重複がなければ、以下を実行
証明書は90日間有効なので、自動更新をセットします:

echo "0 4 * * * /usr/bin/certbot renew --quiet" >> /etc/crontab

または systemd 経由でもOK(certbotが自動登録済):

systemctl list-timers | grep certbot

🔹 確認すること

https://your-domain.com でアクセスしてSSL有効になっているか確認

・Chromeなら 🔒 が出ていればOK

・http:// からリダイレクトも効いていれば設定成功

✅ 14:パーミッション

# `your-app-name`ディレクトリとその中身すべてを、`Apache`が読み書きできるようにするために、所有者を `apache`に変えている。
chown -R apache:apache /var/www/your-app-name

# `Laravel`がログやキャッシュなどを保存する`storage`や`bootstrap/cache`に対して、`Apache`が書き込みできるようにパーミッションを変更している。
chmod -R 775 /var/www/your-app-name/storage /var/www/your-app-name/bootstrap/cache

✅ 15:Node.js (Puppeteer API用)

# `Node.js v20`をインストールできるようにするための「準備スクリプト」を実行
curl -sL https://rpm.nodesource.com/setup_20.x | bash -
dnf install nodejs -y
node -v
npm -v

✅ 16:npm 系コマンド

cd /var/www/your-app-name

# Puppeteer(Browsershot)を使う場合のみ必要!
# Apacheユーザーがキャッシュを使えるようにディレクトリ作成+権限設定
mkdir -p /var/www/.cache/puppeteer
chown -R apache:apache /var/www/.cache

sudo -u apache npm install # (推奨はこちら)BrowsershotなどのApacheを動かす場合など
# npm install # rootで動かす場合

npm run build

⭐️ Browsershotについてはこちら

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?