「インストール - Apache2(Raspberry Pi)」の版間の差分
7行目: | 7行目: | ||
==== パッケージ管理システムからインストール ==== | ==== パッケージ管理システムからインストール ==== | ||
まず、Apache2をインストールする。<br> | まず、Apache2をインストールする。<br> | ||
sudo apt install apache2 | sudo apt install apache2 | ||
<br> | <br> | ||
Raspberry Piでは、Apache2のデフォルトのドキュメントルートディレクトリは、/var/www/htmlディレクトリである。<br> | |||
Apache2が正常に動作するかどうかを確認するため、以下に示すようなテストページを作成する。<br> | |||
sudo vi /var/www/html/index.html | sudo vi /var/www/html/index.html | ||
<br> | <br> | ||
46行目: | 46行目: | ||
Webブラウザに"Test!!"という文字が表示されることを確認する。<br> | Webブラウザに"Test!!"という文字が表示されることを確認する。<br> | ||
<br> | <br> | ||
==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
Apache2をビルドするために必要なライブラリをインストールする。<br> | Apache2をビルドするために必要なライブラリをインストールする。<br> |
2024年1月19日 (金) 20:42時点における版
概要
Raspberry Pi 3でWebサーバを構築する。
Webサーバを構築して、PHP等で作成したWebページを介してGPIOを制御するところまで記載する。
Apache2のインストール
パッケージ管理システムからインストール
まず、Apache2をインストールする。
sudo apt install apache2
Raspberry Piでは、Apache2のデフォルトのドキュメントルートディレクトリは、/var/www/htmlディレクトリである。
Apache2が正常に動作するかどうかを確認するため、以下に示すようなテストページを作成する。
sudo vi /var/www/html/index.html
<!-- index.htmlファイル -->
<html>
<body>
<h1>Welcome to Raspberry Pi Web Site</h1>
</body>
</html>
Webブラウザに、http://localhost と入力する。
"Welcome to Raspberry Pi Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。
Raspberry Piにおいて、CGIファイルのディレクトリのパスは、/usr/lib/cgi-binディレクトリである。
(ディレクトリを変更する場合は、Apache2の設定ファイルを編集する必要がある)
動作確認のため、CGIファイルを作成して実行および表示する。
また、一般ユーザがCGIファイルを実行できるようにするため、実行権限を付加する。
sudo chmod 755 /usr/lib/cgi-bin/test.cgi
# /usr/lib/cgi-bin/test.cgiファイル
#!bin/bash
echo "Content-type:text/html"
echo "Test!!"
CGIファイルを実行するため、Webブラウザに http://localhost/cgi-bin/test.cgi と入力する。
Webブラウザに"Test!!"という文字が表示されることを確認する。
ソースコードからインストール
Apache2をビルドするために必要なライブラリをインストールする。
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を有効にする場合
まず、APR(Apache Portable Runtime)をソースコードからインストールする。
APRの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf apr-<バージョン>.tar.gz cd apr-<バージョン>
APRをビルドおよびインストールする。
mkdir builddir && cd builddir ../configure --prefix=<APRのインストールディレクトリ> --enable-threads make -j $(nproc) make install
次に、APR-Utilをソースコードからインストールする。
APR-Utilの公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf apr-util-<バージョン>.tar.gz cd apr-util-<バージョン>
APR-Utilをビルドおよびインストールする。
mkdir apr-util-build && cd apr-util-build ../configure --prefix=<APRのインストールディレクトリ> --enable-threads --with-valgrind
最後に、Apache2の公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf httpd-<バージョン>.tar.bz2 cd httpd-<バージョン>
ビルド用ディレクトリを作成して、Apache2をビルドおよびインストールする。
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
Apache2サービスを操作するユーザとグループを作成する。
また、デフォルトシェルに/sbin/nologinを指定して、当ユーザでのログインを禁止する。
cd <Apache2のインストールディレクトリ> sudo groupadd www sudo useradd www -g www -s /sbin/nologin sudo chown -R www:www .
PHPを使用する場合、リクエストされたphpファイルを実行できるようにする。
この設定が無い場合、リクエストが来てもテキストファイルのように.phpファイルの内容を返してしまう。
Apache2の設定ファイルを以下のように編集する。
sudo vi /<Apache2のインストールディレクトリ>/conf/httpd.conf
# /<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>
Apache2のサービスファイルを作成する。
sudo vi /usr/lib/systemd/system/httpd.service
# /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
Apache2のサービスファイルを有効にする。
sudo systemctl daemon-reload
以下のようなエラーが出力される場合がある。
# エラー内容 httpd: Could not reliably determine the server's fully qualified domain name httpd: apr_sockaddr_info_get() failed
この時、/<Apache2のインストールディレクトリ>/conf/httpd.confファイルのServerName
に、ドメイン名またはIPアドレスを設定する。
# /<Apache2のインストールディレクトリ>/conf/httpd.confファイル ServerName <ドメイン名またはIPアドレス>:<ポート番号> # 例. 192.168.1.100:80
HTTP/HTTPS通信用にファイアウォールのポートを開放する。
sudo firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --zone=public --permanent --add-service=https sudo firewall-cmd --reload
Aapche2を開始する。
sudo systemctl start httpd
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。
初期状態では、Apache2のサーバルートディレクトリは、/<Apache2のインストールディレクトリ>/htdocsディレクトリである。
vi /<Apache2のサーバルートディレクトリ>/index.html # または sudo vi /<Apache2のサーバルートディレクトリ>/index.html
<!-- /<Apache2のサーバルートディレクトリ>/index.htmlファイル -->
<html>
<body>
<h1>Welcome to Raspberry Pi Web Site</h1>
</body>
</html>
Webブラウザに、http://localhost と入力する。
"Welcome to Raspberry Pi Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。
PHPのインストール
次に、PHPをインストールする。
PHPのインストール手順は、インストール - PHPを参照する。
PHPが正常に動作するかどうかを確認するため、/var/www/htmlディレクトリに対して、以下に示すPHPファイルを作成する。
sudo vi /var/www/html/index.php
# /var/www/html/index.phpファイル
<?php
phpinfo();
?>
Webブラウザで http://localhost と入力する。
PHPの情報の一覧が表示されている場合は、PHPが正常に動作している。
Apache2の起動・停止・再起動
Apache2の起動は、以下のコマンドを実行する。
sudo systemctl start httpd
Apache2の停止は、以下のコマンドを実行する。
sudo systemctl stop httpd
Apache2の再起動は、以下のコマンドを実行する。
sudo systemctl restart httpd
Apache2の自動起動の確認・停止
Raspbianの起動時にApache2が自動起動の設定を確認する。(デフォルトでは自動起動になっている)
Apache2の自動起動を確認するには、以下のコマンドを実行する。
ls /etc/rc2.d/
もし、Apache2の自動起動を停止したい場合は、以下のコマンドを実行する。
sudo systemctl disable httpd
最後に、Apache2の自動起動が停止されていることを確認するため、再度、以下のコマンドを実行する。
ls /etc/rc2.d/