【完全ガイド】Linuxサーバー構築の手順|初期設定からWebサーバー・DB・PHPまで

Linuxサーバーを一から構築する完全ガイドのアイキャッチ画像 Linux
Linuxサーバー構築 完全ガイド

※本記事にはアフィリエイト広告(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(dnffirewalldsystemctl)を基準に記載し、必要に応じてUbuntu(aptufw)の違いに触れます。

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 USERGRANT を分けて記述)。

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テンプレートも豊富。

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

タイトルとURLをコピーしました