「インストール - Apache2(Raspberry Pi)」の版間の差分

ナビゲーションに移動 検索に移動
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>


案内メニュー