0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者によるApacheのインストール~サイト公開備忘録

0
Last updated at Posted at 2026-03-17

はじめに

完全趣味でWebやプログラミングに手を出した文系高校生によるただの備忘録です。
ほとんど他の方の記事の受け売りです。
あくまでも参考程度にお願いします。

ドメイン取得、DNS設定、htmlやcssファイル等の用意は完了しているものとします。

0. 環境等

サーバー: Xサーバー 無料VPS 3コア/4GB/50GB (SSH接続有効)
OS: Ubuntu 26.04
Apache: 2.4.67
APR: 1.7.6
APR-util: 1.6.3
ドメイン管理: Xサーバードメイン
DNS: Cloudflare
SSL: Let's encrypt + Cloudflare
ファイル操作: Filezilla 3.69.6

(すべて2026/6/4時点での最新バージョン)

1. 事前準備

必要となるパッケージはaptでダウンロード1

bash
sudo apt update
sudo apt install build-essential libexpat1-dev libpcre2-dev zlib1g zlib1g-dev libcrypt-dev libssl-dev libnghttp2-dev

build-esseatial: gcc(C/C++コンパイラ)やmake(オートビルドツール)などのメタパッケージ
libexpat1-dev: XMLをデータ変換するライブラリ(XMLパーサー)
libpcre2: 正規表現ライブラリ
zlib1g: データ圧縮展開ライブラリ
libcrypt-dev: C言語における文字列をハッシュ化するcrypt関数を追加するライブラリ
libssl: OpenSSLのSSL用パッケージ(必要なら)
libnghttp2-dev: C言語版のHTTP/2ライブラリ(必要なら)

bash
gcc --version
make --version
openssl version

でインストールが成功したか確認

2. ソースコードのダウンロードと検証、展開

bash
wget https://dlcdn.apache.org/httpd/httpd-2.4.67.tar.gz
httpd-2.4.67.tar.gz

.tar.bz2版もあるが今回は.tar.gz版を使用

bash
wget https://dlcdn.apache.org/httpd/httpd-2.4.67.tar.gz.sha256
sha256sum -c httpd-2.4.67.tar.gz.sha256

これで改ざんがないか検証しOKと表示されるか確認

bash
tar -xvzf httpd-2.4.67.tar.gz
cd ~/httpd-2.4.67

tarで展開→移動

3. APR, APR-utilのダウンロード

bash
cd srclib
wget https://downloads.apache.org/apr/apr-1.7.6.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
tar -xvzf apr-1.7.6.tar.gz
tar -xvzf apr-util-1.6.3.tar.gz
mv apr-1.7.6 apr
mv apr-util-1.6.3 apr-util
cd ../

APR: OS間でのポータビリティ向上のための補助ライブラリ
APR-util: よりパフォーマンスを向上させるための関数群

APR等を配置するsrclibディレクトリへ移動→ダウンロード→展開→適切なディレクトリに移動→親ディレクトリへ

4. configreの設定

bash
ls . | grep configure
# もしconfigureがなければ
sudo apt install autoconf
./buildconf

configure: インストールに問題ないか確認しオートビルドmakeを実行するためのmakefileを生成するスクリプト
autoconf(./buildconf): configureを自動生成するスクリプト

まずconfigureファイルがあるか確認→なければautoconfをインストール→confを生成する

bash
./configure --prefix=/usr/local/apache2 \
--enable-so \
--enable-ssl \
--enable-rewrite \
--enable-http2 \
--with-included-apr \
--enable-mods-shared=all

--prefix=/usr/local/apache2: デフォルトのディレクトリを設定
--enable-so: 動的モジュールの有効化(モジュール追加を可能にする)
--enable-ssl: SSL/TLSの有効化
--enable-rewrite: URLのリダイレクトなどを有効化する
--enable-http2: HTTP/2の有効化
--with-included-apr: 先程ダウンロードしたaprらを使用する
--enable-mods-shared=all: 全モジュールを動的にダウンロードする

様々なApacheのオプションを設定する2

bash
echo $?
ls . | grep Makefile

実行後0が返される/Makefileが確認できれば成功

5. コンパイルとインストール

bash
make V=1 2>&1 | tee build.log
sudo make install
/usr/local/apache2/bin/httpd -v

一応バグが起きたとき用にログを取っておく
make実行後にechoを実行し0が返されエラーが起きていないかどうか確認する

bash
Server version: Apache/2.4.67 (Unix)
Server built:   20xx-x-xx

最後の httpd -v でこんな表示が出たら成功

6. 起動と最低限の設定

bash
sudo /usr/local/apache2/bin/apachectl

とりあえずコマンドはフルパスを使う

bash
sudo /usr/local/apache2/bin/apachectl start

起動したらパケットフィルターが80ポートをフィルタしていないか確認しブラウザでサーバーのIPアドレスに接続、接続後 It works! と出たら動作確認は終了

httpd.conf
#122行目あたり <Directory "/usr/local/apache2/htdocs">
<Directory "/usr/local/apache2/htdocs/*">

#記述位置はどこでも良い おすすめは一番下
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot "/usr/local/apache2/htdocs/example-com"
</VirtualHost>

Directory: 指定したディレクトリの扱いを設定する3
VirtualHost: 一つのサーバーで複数のドメインを扱う際に使われる4

~/apache2/conf/httpd.confが設定ファイルになり、初期設定のファイルに上記のように書き足し保存

7. SSL証明書の取得とダウンロード、インストール

XserverSSLから取得した証明書等を自分のパソコンにダウンロード後、以下の手順でサーバーに配置
1, VPSパネルでパケットフィルター設定でポート22等が開いているか確認、開いていなかったら「パケットフィルター設定を追加」からSSHを選択(初心者推奨)or自分でSSH接続に使うポートを選択し開放
2, Filezillaでctrl+sでサイトマネージャーを開き次のように設定し接続
プロトコル:SFTP ホスト:VPSのIPアドレス ポート:7-1で設定したポート(前者なら22) ログオンタイプ:鍵ファイル ユーザー名:root キーファイル:~/Downloads/dns.pemなどサーバー作成時に設定した秘密鍵のパス
3, 接続後右の画面にサーバーのファイルやディレクトリが表示されるので、そこからetcディレクトリに以下のディレクトリを作成し証明書等を配置
~/letsencrypt/live/example.com/
4, 証明書と中間証明書を合わせたfullchain.pemを作る

bash
cat letsencrypt12345678.crt letsencrypt12345678Int.crt > fullchain.pem
# ファイル名は適宜自身のものに書き換えてください

5, httpd.confでSSL対応のドメイン設定を書く

httpd.conf
<VirtualHost *:443>
 DocumentRoot "/usr/local/apache2/htdocs/example-com"
 ServerName example.com
 ServerAlias www.example.com
 SSLEngine on
#以下のファイル名は先程配置したファイル名に変更する
 SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.crt
 SSLCertificateKeyFile /etc/letsencrypt/live/example.com/letsencrypt12345678.key
</VirtualHost>

SSLEngine: SSLのシステムの実行を決める
SSLCertificateFile, KeyFile: それぞれSSL証明書/秘密鍵のパスを伝える

8. httpsの有効化とセキュリティ設定、サイト公開

EngineをONにするだけでは動かないので、SSL関連のモジュールを有効化する

httpd.conf
#81行目前後 #LoadModule ssl_module modules/mod_ssl.so コメントアウトを外すor以下を書き加える
LoadModule ssl_module modules/mod_ssl.so
#27行目前後 #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so コメントアウトを外すor以下を書き加える
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

httpd.confにSSLのセキュリティ設定を書き込んでも良いが、分量が多くなり見にくくなるためhttpd-ssl.confというSSL専用のconfファイルに書き込む
~conf/extraにあるはずだが、なければ作成する

httpd-ssl.conf
#一例
Listen 443
SSLCipherSuite HIGH:!MEDIUM:!MD4:!MD5:!RC2:!RC4:!3DES
SSLProxyCipherSuite HIGH:!MEDIUM:!MD5:!MD4:!RC2:!RC4:!3DES
SSLHonorCipherOrder on 
SSLProtocol -all +TLSv1.3
SSLProxyProtocol -all +TLSv1.3
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/logs/access_log"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog "/usr/local/apache2/logs/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"                           

詳細は省略
強めに設定しているため環境が古かったりすると接続できない場合がある

そしてこれをサーバーに適応させる

httpd.conf
#182行目前後 <IfModule ssl_module>内に記述
Include conf/extra/httpd-ssl.conf

これでサーバー側でのSSLの対応は完了したので、Cloudflareを介したユーザープロキシ間とプロキシサーバー間のSSLを有効化する
1, cloudflareのパネルに接続
2, exxample.comのSSL/TLSの概要に入る
3, SSL/TLS 暗号化 から カスタム SSL/TLS の フル(厳密) にチェックをつける
これでブラウザからサーバーまで完全にSSLを有効化ができた

bash
sudo /usr/local/apache2/bin/apachectl restart

これでhttps有効化しサイトが公開できたはずなのであとはドメインに接続し配置したファイルの内容が表示されれば成功

9. あとがき補足

一部変えると良いもの
1, 証明書と秘密鍵の所有権とパーティション: 640 root(daemon):daemon
他にあったら書き足します。

  1. Apacheコンパイラに必要なパッケージのみの説明

  2. 上記は自分が使うもののみ載せているので、参考にされている方はこの通りにせず必要な物を追加したり削除したりしてください。その都度パッケージもインストールしてください。

  3. ここではhtdocsの子ディレクトリから回帰的に設定するように指定した
    これがないと以下のVirtualHostを使う際に小ディレクトリをドメインごとに読み込ませるということができなくなる→複数ドメインが使えなくなる

  4. ここではとりあえずSSLなしでexample.comでサイトを公開できるようにし、www.example.comに接続した時にexample.comにリダイレクトするようにした
    htmlなどのファイルは~/example-comに配置されたものを読み込むためこの時点で配置しておく

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?