topics.tpc_001
R e i - D r e a m
for Laravel
Topics > さくらVPSでPHP(Laravel)の環境を作成した話 ①
Guest
login

最終投稿日:2026年06月21日

【検証環境】- さくらVPS - Rocky Linux Ver.8
さくらVPSでPHP(Laravel)の環境を作成した話 ①
はじめに
今思えばサイト運営を始めて。ん~、25年くらいかな。
もちろん常に運営してた訳ではありませんが、[ヘテムル] > [サクラインターネット] > [さくらVPS]と渡り歩てきました。
ジャンルは自身がITエンジニアという事もあり、日々獲得した技術等をまとめた備忘録的なものとなります。
そして気が付けば、サーバ内には以下サイトが乱立するお祭り状態となっていました。
『CakePHP2』『CakePHP3』『Python』『Laravel』『jsf(jakaruta)』その他携帯用家計簿など..
まぁ全てクローズドなサイトだったので、誰の目にも触れず何の問題も無かったんですけどね.
その影響もあり放置状態。最終更新日から数年が経過した去年の春ごろ。
不思議とこういう事は、ふと思いませんか?
    何かオープンなサイト作りたいなぁ.
そう、この瞬間から新生『ReiDream』のプロジェクトが立ち上がりました。
そしてプロジェクトの最初のゴールは以下と設定しました。
① 当然サイトのリリース
② サーバを一掃しサイトを一本化する
前置きが長くなりましたが、本トピックはゴール②のサーバ再構築のお話となります。
強力なアシスタント2名と共に格闘と苦悩の一部始終をご覧ください。
● アシスタント
○ Copilot
○ Gemini
OSのインストール
○ ポチっとな
さくらVPSは、OSのインストールは超簡単!
会員画面からコントロールパネルに移動し「OS再インストール」を押下するだけ。
『さて、CentOS 7はどこかな~』と思っていたら、何かOSの種類が多くなってる。
不思議に思いアシスタントに質問。すると.
Copilot

centos7はまだ現役?
  024/6/30 に完全 EOL(サポート終了)している。

代わりになるさくらVPSのOSは?
  AlmaLinux 9(最有力)
    CentOS の後継として最も安定
  Rocky Linux 9(同等)
    CentOS 創設者が作った後継

ふむふむ.なるほど。
軽く『創設者が作った後継』の文言が気に入り【Rocky Linux】に決定! それでは気を取り直して、
「OS再インストール」ポチっ!
「標準OS」ポチっ!
「Rocky Linux」ポチっ!
最後にサーバの管理ユーザー情報を設定したら、後はデフォルト設定のまま「内容確認」ポチっ!
「インストール」ポチっ!!
さよなら。今までのWebページたち.
OSの再インストール後にやる事
○ ターミナル(TeraTerm等)でサーバに接続します
【注意】ユーザーは「root」ではなく内容確認で表示された「rocky」です
○ ログイン出来たら、まずはroot権限になります。以下コマンドを叩きます
$ sudo -i
  ※ プロンプトが「$」から「#」になります(以降このマークでユーザーを判断して下さい)
○ OSアップデート
新しいPCを買った時と同様、まずはOSのアップデートをします
  # dnf update
ポイント

OS Rocky Linuxは「yum」から「dnf」に命令形が完全移行しています。
互換用として[yum]も使えますが、今後のためにも[dnf]を使いましょう。
  さよならユミちゃん

コマンドを叩くと途中対話形式になりますが「y」で進めましょう
○ 一般ユーザーを作成する
[rocky]ユーザーでも良いかもしれませんが、自身のユーザーも作りたいですよね?
以下を叩きます
① ユーザー名
② パスワード
③ sudo権限付与
TeraTerm

# adduser 自身で決めたユーザー名

# passwd 自身で決めたユーザー名

# usermod -aG wheel 自身で決めたユーザー名

ユーザーを設定出来たら、一旦ターミナルをログアウトして終了します。
終了後、再度ターミナルを立ち上げ、今度は作成したユーザーでログインします。
ログイン出来たら以下のコマンドでrootになれるか確認
    sudo -i
○ SSHのポート番号を変更する
デフォルトのポート『22』は某国などから非常に攻撃対象になりやすいです。
そこでポートを変更してディフェンスします。
手順は以下となります。
① cd /etc/ssh/sshd_config
※[ssh_config]という紛らわしいファイルがあるので注意!
変更するポートは自由ですが、[10022][1022][2222]等が無難かと.
《編集方法》
root権限(sudo -i)の状態で以下を叩きます
    # vi /etc/ssh/sshd_config
① #Port 22                       <- #を削除する(#にカーソル合わして[x]押下)
② Portxx22追加            <- 削除した行で[o]押下、でテンキーを使わずに記述する
③ [Esc] ⇒ :wq               <- これで保存できます。また破棄したい場合[:q!]です
② さくらのコントロールパネル
[サービス一覧] > [コントロールパネルを開く]押下
画面中央のリンク「パケットフィルター設定」クリック
次に「パケットフィルターを設定」押下
「ポート番号を追加する」押下
ここに[xx22]を記入して「設定を保存する」押下します。
○ ログインテスト
ターミナルをポート[xx22]でログインしてみましょう。
ログインに成功したら、さくらのパケットフィルターで「SSH=22」を削除しましょう
Port22でログインが出来なければ成功です。
○ 文字コードの設定
以下を叩く(root権限です)
TeraTerm

# localectl
    System Locale: LANG=en_US.UTF-8
    VC Keymap: jp
   X11 Layout: jp

何かアメリカっぽいです。
言語パックに何があるか以下コマンドで確認します。
    # rpm -qa | grep glibc-langpack
ここで[glibc-langpack-ja]が無ければ日本語パックは入っていません。
以下コマンドでインストールします。(最初2行は依存関係のクリアです)
    # dnf clean all
    # dnf makecache
    # dnf install glibc-langpack-ja -y
確認すると[glibc-langpack-ja]が追加されているハズです
それではロケールを日本語にします     # localectl set-locale LANG=ja_JP.UTF-8
確認してみましょう
TeraTerm

# localectl
    System Locale: LANG=ja_JP.UTF-8
    VC Keymap: jp
   X11 Layout: jp

以下コマンドでOSの再起動をします
    # reboot
強制的にターミナルがシャットダウンしますが、少し時間をおいて再度ログインしてください。
Apacheのインストール
○ 利用できるApacheのバージョンを確認します
TeraTerm

# dnf info httpd
    メタデータの期限切れの最終確認: 0:15:07 前の 2026年06月11日 20時40分03秒 に実施しました。
    利用可能なパッケージ
    名前                       : httpd
    バージョン            : 2.4.37
    リリース                : 65.module+el8.10.0+40197+0231e209.8
    Arch                       : x86_64
    サイズ                   : 1.4 M
    ソース                   : httpd-2.4.37-65.module+el8.10.0+40197+0231e209.8.src.rpm
    リポジトリー        : appstream
    概要                      : Apache HTTP Server
    URL                      : https://httpd.apache.org/
    ライセンス           : ASL 2.0
    説明                     : The Apache HTTP Server is a powerful, efficient, and extensible
                                : web server.

○ バージョン「2.4.37」が使えそうなのでインストールします
以下コマンドを叩き、インストールが完了したら確認しましょう
TeraTerm

# dnf -y install httpd

# httpd -version
    Server version: Apache/2.4.37 (Rocky Linux)
    Server built:    Jun 4 2026 08:12:21

無事にバージョン「2.4.37」が入りました
○ 起動と停止
    # systemctl start httpd         <- スタート
    # systemctl enable httpd     <- 常時スタート
    # systemctl stop httpd         <- ストップ
    # systemctl status httpd      <- 現在の状態確認
上記コマンドを3番目のストップコマンド以外を順に叩きます。
最後の[status]で現在の状態を確認していますが、こんな感じだと思います。
TeraTerm

# systemctl status httpd
     httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
    Active: active (running) since Thu 2026-06-11 21:09:10 JST; 6s ago
    Docs: man:httpd.service(8)
    Main PID: 1459 (httpd)
    Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 5928)
    Memory: 25.6M
    CGroup: /system.slice/httpd.service
tq1459 /usr/sbin/httpd -DFOREGROUND
tq1460 /usr/sbin/httpd -DFOREGROUND
tq1461 /usr/sbin/httpd -DFOREGROUND
tq1462 /usr/sbin/httpd -DFOREGROUND
mq1463 /usr/sbin/httpd -DFOREGROUND

この表示された2行目にある「service; enabled」と言う文字。
これはApacheが【常時起動】する事を意味します。
    ※ vendorのdisabledは無視してください(service側が重要)
Apacheの設定
サーバが建ちましたのでWebページ公開の準備をします。
○ WebRootの変更
ご自身でお好みの場所にディレクトリを作成しましょう。
○ Apacheの設定ファイルの修正
今回のOSは「Rocky Linux」ですので、設定ファイルは以下にあります
    cd /etc/httpd/conf
作業しやすい様にWinSCP辺りのアプリを使い「httpd.conf」をローカルへコピーしましょう
  ※ 念のためコピーファイル「httpd_BAK.conf」を作成するのをお勧めします
それではお好みに合わせて修正します(自身の環境に合わせた修正をしてください)
・DocumentRoot
WebRootを変更したら当然ここを編集します。
    DocumentRoot "/var/www/html"
    <Directory "/var/www/html">
・AllowOverride None
AllowOverride ALL としました([.htaccess]設置のため)
一通り修正したら、上書きします。
    ※権限で上書きできない場合は、「WinCSP問題」を参照
以下コマンドでApacheを再起動しよう     # systemctl restart httpd
確認のためwebrootに置いた「index.html」が表示されれば成功です。
WinCSP問題

自身のアプリ内のディレクトリ等ならオーナーを自身にしWinSCPでファイル転送が可能ですが、「etc」等システムが触るディレクトリのオーナーを変えたり、パーミッションを変更するのはセキュリティ上危険です。

そこで以下設定により、WinSCPから特定のユーザーでログインした場合のみパスワード入力なしの「root」権限を付与する方法を設定します。
① Teratermからroot権限で以下を実行
    # visudo
エディタが開くので一番下の行に下記を追加します
    あなたのユーザー名 ALL=(root) NOPASSWD: /usr/libexec/openssh/sftp-server
② WinSCP起動
[編集]押下し、[設定]押下する。
設定画面がPOPするので、「SFTP」を選択
SFTPサーバ(V)の欄に以下を入力します。
    sudo /usr/libexec/openssh/sftp-server

ファイアーウォールの設定
以下を叩いてファイアーウォールの状態を確認します
TeraTerm

# systemctl status firewalld
    ○ firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
        Docs: man:firewalld(1)

白い○で、しかも「service; disabled」の文字が確認できます。
完全に起動していません。
以下コマンドを叩いてファイアウォールを叩き起こしましょう。
    # systemctl start firewalld
すると、ターミナルが強制シャットダウンして、二度とログインできなくなります。
    へ?
慌てないでください。
まずはさくらのコントロールパネルに入ります。
画面中央にある「コンソール」>「VNCコンソール」を選択します。
するとさくらのコンソールが立ち上がるので、先ほどまでターミナルでログインした方法で入ります。
次に以下を叩きます。
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=https --zone=public --permanent
どちらも「SUCCESS」となれば成功です。(コピペ出来ないので慎重に)
次に念のためSSHを許可するため以下を叩きます。
    $ sudo firewall-cmd --add-service=ssh --permanent
      ※ ここで[Warning: ALREADY_ENABLED: ssh]と表示されれば次のコマンドは不要です
    $ sudo firewall-cmd --reload
ポイント

ポート番号を変更した場合は、変更した番号ではTeraTermからログインできません
以下のコマンドを叩いてファイアウォール的にもポートを有効にしましょう
    $ sudo firewall-cmd --add-port=変更したポート番号/tcp --permanent
    $ sudo firewall-cmd --reload
どちらも「SUCCESS」となれば成功です

確認としてブラウザであなたのURLを叩いてみましょう
何か画面にでれば成功です(これでTeraTermに入れます)
最後にファイアウォールもApacheと同様に以下コマンドから自動起動にしましょう
TeraTerm

$ sudo -i
# systemctl enable firewalld
# systemctl status firewalld
     firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
    Active: active (running) since Thu 2026-06-11 21:49:07 JST; 20min ago
    Docs: man:firewalld(1)
    Main PID: 1929 (firewalld)
    Tasks: 3 (limit: 5928)
    Memory: 37.6M
    CGroup: /system.slice/firewalld.service
mq1929 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

念のためステータス確認してますが「service; enabled」となっていますね。
HTTPS化
と、言いたいところでしたが、Topicが長くなりそうなのでこの続きは次回とさせて下さい。
《次回》
     アシスタント大活躍!!
     睡眠と引き換えに手に入れた【HTTPS】orz
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる