MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Apache2(Raspberry Pi)のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Apache2(Raspberry Pi)
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Apache HTTP Serverプロジェクトは、UNIXやWindowsを含むOS向けのオープンソースHTTPサーバを開発および保守する取り組みである。<br> このプロジェクトの目標は、現在のHTTP標準に同期したHTTPサービスを提供する、安全で効率的かつ拡張可能なサーバを提供することである。<br> <br> Apache HTTPサーバ (httpd) は1995年に開始され、1996年4月以来、インターネット上で人気のあるWebサーバとなっている。<br> 2020年2月にプロジェクトとして25回目の誕生日を迎えた。<br> <br> Apache HTTP Serverは、Apache Software Foundationのプロジェクトである。<br> <br> その他、Raspberry Piでは、WebサーバとPHP等で作成したWebページを介して、GPIOを制御することも可能である。<br> <br><br> == Apache2のインストール == ==== パッケージ管理システムからインストール ==== まず、Apache2をインストールする。<br> sudo apt install apache2 <br> Raspberry Piでは、Apache2のデフォルトのドキュメントルートディレクトリは、/var/www/htmlディレクトリである。<br> Apache2が正常に動作するかどうかを確認するため、以下に示すようなテストページを作成する。<br> sudo vi /var/www/html/index.html <br> <syntaxhighlight lang="html"> <!-- 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> [[ファイル:Apache2 Raspberry Pi 1.jpg|フレームなし|中央|Apache2_Raspberry_Pi_1.jpg]] <br> Raspberry Piにおいて、CGIファイルのディレクトリのパスは、/usr/lib/cgi-binディレクトリである。<br> (ディレクトリを変更する場合は、Apache2の設定ファイルを編集する必要がある)<br> <br> 動作確認のため、CGIファイルを作成して実行および表示する。<br> また、一般ユーザがCGIファイルを実行できるようにするため、実行権限を付加する。<br> sudo chmod 755 /usr/lib/cgi-bin/test.cgi <br> <syntaxhighlight lang="bash"> # /usr/lib/cgi-bin/test.cgiファイル #!bin/bash echo "Content-type:text/html" echo "Test!!" </syntaxhighlight> <br> CGIファイルを実行するため、Webブラウザに http://localhost/cgi-bin/test.cgi と入力する。<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> == CGIの設定 == まず、Apache2の設定ファイルにおいて、以下に示す赤字の設定を追記する。<br> # "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "/srv/www/cgi-bin"> AllowOverride None Options +ExecCGI -Includes <span style="color:#C00000">AddHandler cgi-script .cgi .pl</span> <IfModule !mod_access_compat.c> Require all granted </IfModule> <IfModule mod_access_compat.c> Order allow,deny Allow from all </IfModule> </Directory> <br> 上記の設定を反映させるため、Apache2を再起動する。<br> sudo systemctl restart apache2 <br> 次に、test1.cgiファイルを作成して表示する。<br> test1.cgiファイルの内容は、以下の通りである。<br> 以下の例では、CGIファイルのディレクトリのパスは、/usr/lib/cgi-bin/である。<br> sudo vi /usr/lib/cgi-bin/test1.cgi <br> <syntaxhighlight lang="bash"> # /usr/lib/cgi-bin/test1.cgiファイル #!/usr/bin/env bash echo "Content-Type: text/html" echo "" echo "<!doctype html>" echo "<html><head><title>Test CGI</title></head>" echo "<body>" echo "CGI Shell Web Site" echo "</body>" echo "</html>" </syntaxhighlight> <br> また、cgiファイルにはPython等も使用できる。<br> 以下の例では、CGIスクリプトにPython3を使用している。<br> <syntaxhighlight lang="python"> # /usr/lib/cgi-bin/test2.cgi #!/usr/bin/env python3 print("Content-type: text/html\n") print("<html><head><title>Test CGI</title></head>\n<body>") print("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">") print("CGI Python3 Web Site") print("</div>") print("</body>\n</html>") </syntaxhighlight> <br> また、一般ユーザでも実行できるようにするため、以下のコマンドを実行する。<br> sudo chmod 755 /srv/www/cgi-bin/test1.cgi sudo chmod 755 /srv/www/cgi-bin/test2.cgi <br> test1.cgiファイルおよびtest2.cgiファイルを実行するため、<br> Webブラウザにそれぞれ http://localhost/cgi-bin/test1.cgi および http://localhost/cgi-bin/test2.cgi と入力する。<br> Webブラウザに"CGI Shell Web Site"および"CGI Python3 Web Site"と表示されることを確認する。<br> <br><br> == Apache2の起動・停止・再起動 == Apache2の起動は、以下のコマンドを実行する。<br> sudo systemctl start httpd <br> Apache2の停止は、以下のコマンドを実行する。<br> sudo systemctl stop httpd <br> Apache2の再起動は、以下のコマンドを実行する。<br> sudo systemctl restart httpd <br><br> == Apache2の自動起動の確認・停止 == Raspbianの起動時にApache2が自動起動の設定を確認する。(デフォルトでは自動起動になっている)<br> Apache2の自動起動を確認するには、以下のコマンドを実行する。<br> ls /etc/rc2.d/ [[ファイル:Apache2 Raspberry Pi 2.jpg|フレームなし|中央]] <br> もし、Apache2の自動起動を停止したい場合は、以下のコマンドを実行する。<br> sudo systemctl disable httpd <br> 最後に、Apache2の自動起動が停止されていることを確認するため、再度、以下のコマンドを実行する。<br> ls /etc/rc2.d/ <br><br> == PHPのインストール == 次に、PHPをインストールする。<br> PHPのインストール手順は、[[インストール - PHP|インストール - PHP]]を参照する。<br> <br> PHPが正常に動作するかどうかを確認するため、/var/www/htmlディレクトリに対して、以下に示すPHPファイルを作成する。<br> sudo vi /var/www/html/index.php <br> <syntaxhighlight lang="php"> # /var/www/html/index.phpファイル <?php phpinfo(); ?> </syntaxhighlight> <br> Webブラウザで http://localhost/index.php と入力する。<br> PHPの情報の一覧が表示されている場合は、PHPが正常に動作している。<br> <br><br> == PHP-FPMを使用する場合 == PHP-FPMを使用する場合、PHP-FPMが動作するユーザ名およびグループ名 (www.confファイルにある<code>user</code>および<code>group</code>) と同名にする必要がある。 (<code>nobody</code>でもよい)<br> この設定を行わない場合、リクエストが来てもテキストファイルのように.phpファイルの内容を返してしまう。<br> <br> Apache2の設定ファイル (httpd.confファイル) において、<code>User</code>および<code>Group</code>を設定する。<br> sudo vi /<Apache2のインストールディレクトリ>/conf/httpd.conf <br> <syntaxhighlight lang="apache"> # /<Apache2のインストールディレクトリ>/conf/httpd.confファイル User <PHP-FPMが動作する同一のユーザ名またはnobody> Group <PHP-FPMが動作する同一のグループ名またはnobody> </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Raspberry_Pi]][[カテゴリ:Web]]
インストール - Apache2(Raspberry Pi)
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse