※本記事にはアフィリエイト広告(PR)を含みます。
この記事は、Linuxサーバーの初期設定からWebサーバー(Apache/Nginx)・データベース・PHPの導入までを1本でまとめた完全ガイドです。当ブログに分散していたCentOS時代の個別記事を統合し、現行OS(AlmaLinux / Rocky Linux 9系、Ubuntu 24.04)向けに書き換えました。
【重要】CentOS 7 はサポート終了(EOL)済みです。後継はRHEL互換の AlmaLinux / Rocky Linux、または Ubuntu が定番です。本記事はAlmaLinux/Rocky(
dnf・firewalld・systemctl)を基準に記載し、必要に応じてUbuntu(apt・ufw)の違いに触れます。
STEP1:サーバーの初期設定
作業用ユーザーの作成とsudo権限付与、ホスト名・ロケール・タイムゾーンを設定します。
# 作業ユーザー作成とsudo権限(wheelグループ) sudo useradd -m opuser sudo passwd opuser sudo usermod -aG wheel opuser # ホスト名 / ロケール / タイムゾーン sudo hostnamectl set-hostname web01 sudo localectl set-locale LANG=ja_JP.UTF-8 sudo timedatectl set-timezone Asia/Tokyo
STEP2:ファイアウォール(firewalld)
現行のRHEL系は firewalld が標準です(旧 iptables 直書きは非推奨)。Web/SSHに必要なポートを開けます。
sudo systemctl enable --now firewalld sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
【現行版の注意】Ubuntuでは
ufw(例:sudo ufw allow 80,443,22/tcp)を使います。RHEL系の内部実装はnftablesに移行済みですが、操作はfirewalldコマンドでOKです。
STEP3:Webサーバーを構築する(Apache または Nginx)
Nginxの場合:
sudo dnf install -y nginx sudo systemctl enable --now nginx
Apache(httpd)の場合:
sudo dnf install -y httpd sudo systemctl enable --now httpd
ブラウザで http://サーバーIP/ にアクセスし、初期ページが出れば成功です。
STEP4:データベース(MariaDB / MySQL)
sudo dnf install -y mariadb-server sudo systemctl enable --now mariadb sudo mariadb-secure-installation # 初期セキュリティ設定(旧: mysql_secure_installation)
アプリ用のDBとユーザーを作成します(現行のMySQL8/MariaDBは CREATE USER と GRANT を分けて記述)。
sudo mariadb -u root -p CREATE DATABASE appdb CHARACTER SET utf8mb4; CREATE USER 'appuser'@'localhost' IDENTIFIED BY '任意のパスワード'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;
STEP5:PHPを動かす(Nginx + PHP-FPM)
sudo dnf install -y php php-fpm php-mysqlnd sudo systemctl enable --now php-fpm
Nginxの設定で .php をPHP-FPMのソケットに渡します(fastcgi_pass unix:/run/php-fpm/www.sock; 等)。設定後に sudo systemctl restart nginx php-fpm で再起動します。
【要確認】PHPのバージョン(8.1/8.2/8.3等)やソケットのパスはディストリ・時期で異なります。
php -vと各公式で確認してください。
STEP6:複数ドメインを運用する(バーチャルホスト)
Nginxは /etc/nginx/conf.d/ドメイン.conf、Apacheは /etc/httpd/conf.d/ドメイン.conf にドメインごとの設定を作成し、server_name(ApacheはServerName)とドキュメントルートを指定します。日本語ドメインはPunycode(xn--…)に変換して指定します。
STEP7:SSHを公開鍵認証にする(セキュリティ)
# クライアントで鍵を作成し、公開鍵をサーバーへ ssh-keygen -t ed25519 ssh-copy-id opuser@サーバーIP # サーバー側 /etc/ssh/sshd_config でパスワード認証を無効化 # PasswordAuthentication no sudo systemctl restart sshd
よくあるトラブル・Tips
Basic認証をかけたい:htpasswd でパスワードファイルを作り、Nginxは auth_basic / auth_basic_user_file、Apacheは AuthType Basic で設定します。
NginxでPHPのセッションが維持されない:セッション保存先(session.save_path、例 /var/lib/php/session)の所有者・権限がPHP-FPM実行ユーザーと一致しているか確認します。
digコマンドが無い:sudo dnf install -y bind-utils(Ubuntuは dnsutils)。
CGI/Perlを動かしたい:現在は用途が限られます。必要な場合のみ FastCGI(fcgiwrap等)で対応します。
まとめ
初期設定 → ファイアウォール → Webサーバー → DB → PHP → バーチャルホスト → SSH鍵、までで一般的なWebサーバーの土台が完成します。クラウド上で作るならAWS EC2構築ガイド、公開後はHTTPS化ガイド、CMSを入れるならWordPress構築ガイドもどうぞ。
Linuxサーバーを試すのに使えるVPS
学習・検証には、root権限で自由に使えるVPSが最適です。
- XServer VPS:高性能・コスパ重視。月1,000円台〜。

- さくらのVPS:老舗で安定。OSテンプレートも豊富。

※コマンド・パッケージ名・パスはディストリやバージョンで異なります。各公式ドキュメントで最新をご確認ください。

