12,925
回編集
45行目: | 45行目: | ||
CGIファイルを実行するため、Webブラウザに http://localhost/cgi-bin/test.cgi と入力する。<br> | CGIファイルを実行するため、Webブラウザに http://localhost/cgi-bin/test.cgi と入力する。<br> | ||
Webブラウザに"Test!!"という文字が表示されることを確認する。<br> | Webブラウザに"Test!!"という文字が表示されることを確認する。<br> | ||
<br> | |||
==== ソースコードからインストール ==== | |||
Apache2をビルドするために必要なライブラリをインストールする。<br> | |||
sudo apt install libcurl4-openssl-dev libexpat1-dev libnghttp2-dev zlib1g-dev libxml2-dev libjansson-dev \ | |||
libssl-dev libssl1.0-dev libpcre2-dev libsystemd-dev liblua5.4-dev | |||
valgrind valgrind-dbg # Valgrindを有効にする場合 | |||
<br> | |||
まず、APR(Apache Portable Runtime)をソースコードからインストールする。<br> | |||
[http://apr.apache.org/download.cgi APRの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf apr-<バージョン>.tar.gz | |||
cd apr-<バージョン> | |||
<br> | |||
APRをビルドおよびインストールする。<br> | |||
mkdir builddir && cd builddir | |||
../configure --prefix=<APRのインストールディレクトリ> --enable-threads | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
次に、APR-Utilをソースコードからインストールする。<br> | |||
[http://apr.apache.org/download.cgi APR-Utilの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf apr-util-<バージョン>.tar.gz | |||
cd apr-util-<バージョン> | |||
<br> | |||
APR-Utilをビルドおよびインストールする。<br> | |||
mkdir apr-util-build && cd apr-util-build | |||
../configure --prefix=<APRのインストールディレクトリ> --enable-threads --with-valgrind | |||
<br> | |||
最後に、[https://httpd.apache.org/download.cgi Apache2の公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf httpd-<バージョン>.tar.bz2 | |||
cd httpd-<バージョン> | |||
<br> | |||
ビルド用ディレクトリを作成して、Apache2をビルドおよびインストールする。<br> | |||
mkdir build_Apache2 && cd build_Apache2 | |||
../configure --prefix=<Apache2のインストールディレクトリ> \ | |||
--with-apr=<APRのインストールディレクトリ> \ | |||
--with-apr-util=<APR-Utilのインストールディレクトリ> \ | |||
--with-included-apr=/<APRのインストールディレクトリ>/include/apr-1 \ # srclib内のAPRとAPR-Utilもビルド対象にする | |||
--with-mpms-shared=all \ # worker, prefork, eventをビルド対象にする | |||
--with-pcre=<PCREのインストールディレクトリ> \ # 例. /usr/local/src/pcre-<バージョン>/pcre-config | |||
--with-ssl=<OpenSSLのインストールディレクトリ> \ # 例. /usr/local/src/ssl | |||
--enable-dav --enable-dav-fs \ | |||
--enable-deflate \ | |||
--enable-headers \ | |||
--enable-mods-shared=reallyall \ # 動的モジュールをビルド対象にする | |||
--enable-proxy --enable-proxy-ajp \ | |||
--enable-rewrite=shared \ | |||
--enable-ssl \ # SSLモジュールをビルド対象にする | |||
--enable-so \ | |||
--enable-speling=shared \ | |||
--enable-systemd | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
Apache2サービスを操作するユーザとグループを作成する。<br> | |||
また、デフォルトシェルに/sbin/nologinを指定して、当ユーザでのログインを禁止する。<br> | |||
cd <Apache2のインストールディレクトリ> | |||
sudo groupadd www | |||
sudo useradd www -g www -s /sbin/nologin | |||
sudo chown -R www:www . | |||
<br> | |||
PHPを使用する場合、リクエストされたphpファイルを実行できるようにする。<br> | |||
この設定が無い場合、リクエストが来てもテキストファイルのように.phpファイルの内容を返してしまう。<br> | |||
Apache2の設定ファイルを以下のように編集する。<br> | |||
sudo vi /<Apache2のインストールディレクトリ>/conf/httpd.conf | |||
<br> | |||
# /<Apache2のインストールディレクトリ>/conf/httpd.confファイル | |||
LoadModule php_module modules/libphp.so | |||
<FilesMatch "\.php$"> | |||
SetHandler application/x-httpd-php | |||
</FilesMatch> | |||
<IfModule php_module> | |||
DirectoryIndex index.html default.php index.php | |||
AddHandler application/x-httpd-php .php | |||
</IfModule> | |||
<br> | |||
Apache2のサービスファイルを作成する。<br> | |||
sudo vi /usr/lib/systemd/system/httpd.service | |||
<br> | |||
<syntaxhighlight lang="ini"> | |||
# /usr/lib/systemd/system/httpd.serviceファイル | |||
[Unit] | |||
Description=The Apache HTTP Server | |||
After=network.target remote-fs.target nss-lookup.target | |||
Documentation=man:httpd(8) | |||
Documentation=man:apachectl(8) | |||
[Service] | |||
Type=forking | |||
#Type=notify | |||
#EnvironmentFile=/<Apache2の設定ファイルがあるディレクトリ>/conf/httpd.conf | |||
#Environment=LD_LIBRARY_PATH=/usr/local/ssl/lib:/usr/local/lib:/usr/local/lib64:/usr/lib | |||
ExecStart=/<Apache2のインストールディレクトリ>/bin/apachectl -k start | |||
ExecReload=/<Apache2のインストールディレクトリ>/bin/apachectl -k graceful | |||
ExecStop=/<Apache2のインストールディレクトリ>/bin/apachectl -k stop | |||
#ExecStart=/<Apache2のインストールディレクトリ>/bin/httpd \$OPTIONS -DFOREGROUND | |||
#ExecReload=/<Apache2のインストールディレクトリ>/bin/httpd \$OPTIONS -k graceful | |||
#ExecStop=/bin/kill -WINCH \${MAINPID} | |||
# We want systemd to give httpd some time to finish gracefully, but still want it to kill httpd after TimeoutStopSec if something went wrong during the graceful stop. | |||
# Normally, Systemd sends SIGTERM signal right after the ExecStop, which would kill httpd. We are sending useless SIGCONT here to give httpd time to finish. | |||
#KillSignal=SIGCONT | |||
PrivateTmp=true | |||
[Install] | |||
WantedBy=multi-user.target | |||
</syntaxhighlight> | |||
<br> | |||
Apache2のサービスファイルを有効にする。<br> | |||
sudo systemctl daemon-reload | |||
<br> | |||
以下のようなエラーが出力される場合がある。<br> | |||
# エラー内容 | |||
httpd: Could not reliably determine the server's fully qualified domain name | |||
httpd: apr_sockaddr_info_get() failed | |||
<br> | |||
この時、/<Apache2のインストールディレクトリ>/conf/httpd.confファイルの<code>ServerName</code>に、ドメイン名またはIPアドレスを設定する。<br> | |||
# /<Apache2のインストールディレクトリ>/conf/httpd.confファイル | |||
ServerName <ドメイン名またはIPアドレス>:<ポート番号> # 例. 192.168.1.100:80 | |||
<br> | |||
HTTP/HTTPS通信用にファイアウォールのポートを開放する。<br> | |||
sudo firewall-cmd --zone=public --permanent --add-service=http | |||
sudo firewall-cmd --zone=public --permanent --add-service=https | |||
sudo firewall-cmd --reload | |||
<br> | |||
Aapche2を開始する。<br> | |||
sudo systemctl start httpd | |||
<br> | |||
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。<br> | |||
<u>初期状態では、Apache2のサーバルートディレクトリは、/<Apache2のインストールディレクトリ>/htdocsディレクトリである。</u><br> | |||
vi /<Apache2のサーバルートディレクトリ>/index.html | |||
# または | |||
sudo vi /<Apache2のサーバルートディレクトリ>/index.html | |||
<br> | |||
<syntaxhighlight lang="html"> | |||
<!-- /<Apache2のサーバルートディレクトリ>/index.htmlファイル --> | |||
<html> | |||
<body> | |||
<h1>Welcome to Raspberry Pi Web Site</h1> | |||
</body> | |||
</html> | |||
</syntaxhighlight> | |||
<br> | |||
Webブラウザに、http://localhost と入力する。<br> | |||
"Welcome to Raspberry Pi Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。<br> | |||
<br><br> | <br><br> | ||