「インストール - Apache2(SUSE)」の版間の差分
4行目: | 4行目: | ||
== Apache2のインストール == | == Apache2のインストール == | ||
==== パッケージ管理システムからインストール ==== | |||
まず、Apache2をインストールする。<br> | |||
Apacheのサーバルートのディレクトリは、/srv/www/htdocsディレクトリである。<br> | |||
sudo zypper install apache2 | sudo zypper install apache2 | ||
<br> | <br> | ||
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。<br> | |||
sudo vi /srv/www/htdocs/index.html | sudo vi /srv/www/htdocs/index.html | ||
<br> | <br> | ||
23行目: | 24行目: | ||
Webブラウザに、http://localhost と入力する。<br> | Webブラウザに、http://localhost と入力する。<br> | ||
"Welcome to SUSE Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。<br> | "Welcome to SUSE Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。<br> | ||
<br> | |||
==== ソースコードからインストール ==== | |||
Apache2をビルドするために必要なライブラリをインストールする。<br> | |||
sudo zypper install apr-devel apr-util-devel expat-devel libnghttp2-devel zlib-devel libxml2-devel \ | |||
libopenssl-devel libopenssl-1_1-devel lua53-devel pcre-devel pcre2-devel | |||
<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-included-apr \ # srclib内のAPRとAPR-Utilもビルド対象にする | |||
--with-pcre=<PCREのインストールディレクトリ> \ # 例. /usr/local/src/pcre-<バージョン>/pcre-config | |||
--enable-mods-shared=all \ # 動的モジュールをビルド対象にする | |||
--enable-ssl \ # SSLモジュールをビルド対象にする | |||
--with-ssl=<OpenSSLのインストールディレクトリ> \ # 例. /usr/local/ssl | |||
--with-mpms-shared=all \ # worker, prefork, eventをビルド対象にする | |||
--enable-rewrite=shared --enable-speling=shared | |||
make -j $(nproc) | |||
make install | |||
<br> | |||
Apache2サービスを操作するユーザとグループを作成する。<br> | |||
また、デフォルトシェルに/sbin/nologinを指定して、ログインを禁止する。<br> | |||
cd <Apache2のインストールディレクトリ> | |||
sudo groupadd apache | |||
sudo useradd apache -g apache -s /sbin/nologin | |||
sudo chown -R apache:apache . | |||
<br> | |||
Apache2の設定ファイルを以下のように編集する。<br> | |||
sudo vi conf/httpd.conf | |||
<br> | |||
Apache2のデーモンを作成する。<br> | |||
sudo vi /usr/lib/systemd/system/httpd.service | |||
<br> | |||
# /usr/lib/systemd/system/httpd.serviceファイル | |||
[Unit] | |||
Description=The Apache HTTP Server | |||
After=network.target remote-fs.target nss-lookup.target | |||
[Service] | |||
Type=forking | |||
ExecStart=/usr/local/httpd/bin/apachectl start | |||
ExecReload=/usr/local/httpd/bin/apachectl graceful | |||
ExecStop=/usr/local/httpd/bin/apachectl stop | |||
[Install] | |||
WantedBy=multi-user.target | |||
<br> | |||
Apache2のデーモンを有効化する。<br> | |||
sudo systemctl daemon-reload | |||
<br> | |||
HTTP/HTTPS通信用にファイアウォールのポートを開放する。<br> | |||
sudo firewall-cmd --add-service=http --zone=public --permanent | |||
sudo firewall-cmd --add-service=https --zone=public --permanent | |||
sudo firewall-cmd --reload | |||
<br> | |||
Aapche2を開始する。<br> | |||
sudo systemctl start httpd | |||
<br> | |||
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。 | |||
sudo vi /<Apache2のサーバルートディレクトリ>/index.html | |||
<br> | |||
<syntaxhighlight lang="html"> | |||
<!-- index.htmlファイル --> | |||
<html> | |||
<body> | |||
<h1>Welcome to SUSE Web Site</h1> | |||
</body> | |||
</html> | |||
</syntaxhighlight> | |||
<br> | |||
Webブラウザに、http://localhost と入力する。 | |||
"Welcome to SUSE Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。 | |||
<br><br> | <br><br> | ||
2021年12月30日 (木) 10:07時点における版
概要
このページでは、SUSEにおいて、Webサーバを構築する手順を記載する。
Apache2のインストール
パッケージ管理システムからインストール
まず、Apache2をインストールする。
Apacheのサーバルートのディレクトリは、/srv/www/htdocsディレクトリである。
sudo zypper install apache2
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。
sudo vi /srv/www/htdocs/index.html
index.htmlファイル
<html>
<body>
<h1>Welcome to SUSE Web Site</h1>
</body>
</html>
Webブラウザに、http://localhost と入力する。
"Welcome to SUSE Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。
ソースコードからインストール
Apache2をビルドするために必要なライブラリをインストールする。
sudo zypper install apr-devel apr-util-devel expat-devel libnghttp2-devel zlib-devel libxml2-devel \ libopenssl-devel libopenssl-1_1-devel lua53-devel pcre-devel pcre2-devel
Apache2の公式Webサイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf httpd-<バージョン>.tar.bz2 cd httpd-<バージョン>
ビルド用ディレクトリを作成して、Apache2をビルドおよびインストールする。
mkdir build_Apache2 && cd build_Apache2 ../configure --prefix=<Apache2のインストールディレクトリ> \ --with-included-apr \ # srclib内のAPRとAPR-Utilもビルド対象にする --with-pcre=<PCREのインストールディレクトリ> \ # 例. /usr/local/src/pcre-<バージョン>/pcre-config --enable-mods-shared=all \ # 動的モジュールをビルド対象にする --enable-ssl \ # SSLモジュールをビルド対象にする --with-ssl=<OpenSSLのインストールディレクトリ> \ # 例. /usr/local/ssl --with-mpms-shared=all \ # worker, prefork, eventをビルド対象にする --enable-rewrite=shared --enable-speling=shared make -j $(nproc) make install
Apache2サービスを操作するユーザとグループを作成する。
また、デフォルトシェルに/sbin/nologinを指定して、ログインを禁止する。
cd <Apache2のインストールディレクトリ> sudo groupadd apache sudo useradd apache -g apache -s /sbin/nologin sudo chown -R apache:apache .
Apache2の設定ファイルを以下のように編集する。
sudo vi conf/httpd.conf
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 [Service] Type=forking ExecStart=/usr/local/httpd/bin/apachectl start ExecReload=/usr/local/httpd/bin/apachectl graceful ExecStop=/usr/local/httpd/bin/apachectl stop [Install] WantedBy=multi-user.target
Apache2のデーモンを有効化する。
sudo systemctl daemon-reload
HTTP/HTTPS通信用にファイアウォールのポートを開放する。
sudo firewall-cmd --add-service=http --zone=public --permanent sudo firewall-cmd --add-service=https --zone=public --permanent sudo firewall-cmd --reload
Aapche2を開始する。
sudo systemctl start httpd
Apache2が正常に動作しているかどうかを確認するため、以下に示すようなテストページを作成する。
sudo vi /<Apache2のサーバルートディレクトリ>/index.html
<!-- index.htmlファイル -->
<html>
<body>
<h1>Welcome to SUSE Web Site</h1>
</body>
</html>
Webブラウザに、http://localhost と入力する。
"Welcome to SUSE Web Site"と記載されたWebページが表示されれば、Apache2のインストールは完了である。
CGIの設定
まず、/etc/apache2/default-server.confファイルに以下の赤字の設定を追記する。
# "/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
AddHandler cgi-script .cgi .pl
<IfModule !mod_access_compat.c>
Require all granted
</IfModule>
<IfModule mod_access_compat.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
上記の設定を反映させるため、Apache2を再起動する。
sudo systemctl restart apache2
次に、test1.cgiファイルを作成して表示する。
test1.cgiファイルの内容は、以下の通りである。
以下の例では、CGIファイルのディレクトリのパスは、/srv/www/cgi-bin/である。
sudo vi /srv/www/cgi-bin/test1.cgi
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>"
また、cgiファイルにはPython等も使用できる。
以下の例では、CGIスクリプトにPython3を使用している。
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>")
また、一般ユーザでも実行できるようにするため、以下のコマンドを実行する。
sudo chmod 755 /srv/www/cgi-bin/test1.cgi sudo chmod 755 /srv/www/cgi-bin/test2.cgi
test1.cgiファイルおよびtest2.cgiファイルを実行するため、Webブラウザに http://localhost/cgi-bin/test1.cgi と入力する。
Webブラウザに"CGI Shell Web Site"と表示されていれば、正常に動作している。
Apache2の起動・停止・再起動
Apache2の起動は、以下のコマンドを実行する。
sudo systemctl start apache2
Apache2の停止は、以下のコマンドを実行する。
sudo systemctl stop apache2
Apache2の再起動は、以下のコマンドを実行する。
sudo systemctl restart apache2
Apache2の自動起動は、以下のコマンドを実行する。
sudo systemctl enable apache2
仮想ホストの構築
このセクションでは、SUSEにおいて、仮想ホストの構築手順を記載する。
まず、/etc/apache2/vhosts.dディレクトリにアクセスする。
このディレクトリは、仮想ホストの設定ファイル(*.confファイル)を配置するディレクトリである。
cd /etc/apache2/vhosts.d
vhost.templateファイルをコピーして、vhost-sample.confファイルを作成する。
以下に示すように、vhost-sample.confファイルの内容を編集する。
以下の例では、1つ目の仮想ホストのドキュメントルートを/home/<ユーザ名>/htdocsディレクトリ、
2つ目の仮想ホストのドキュメントルートを/srv/www/htdocsディレクトリとしている。
# /etc/apache2/vhosts.d/vhost-localhost.confファイル # 仮想ホスト1 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName localhost # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. DocumentRoot /srv/www/htdocs # if not specified, the global error log is used ErrorLog /var/log/apache2/localhost_error_log CustomLog /var/log/apache2/localhost_access_log combined # don't loose time with IP address lookups HostnameLookups Off # needed for named virtual hosts UseCanonicalName Off # configures the footer on server-generated documents ServerSignature On # Optionally, include *.conf files from /etc/apache2/conf.d/ # # For example, to allow execution of PHP scripts: # # Include /etc/apache2/conf.d/php5.conf # # or, to include all configuration snippets added by packages: # Include /etc/apache2/conf.d/*.conf # ScriptAlias: This controls which directories contain server scripts. # ScriptAliases are essentially the same as Aliases, except that # documents in the realname directory are treated as applications and # run by the server when requested rather than as documents sent to the client. # The same rules about trailing "/" apply to ScriptAlias directives as to # Alias. # ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/" # "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have one, and where ScriptAlias points to. # <Directory "/srv/www/cgi-bin"> AllowOverride None Options +ExecCGI -Includes AddHandler cgi-script .cgi .pl .py <IfModule !mod_access_compat.c> Require all granted </IfModule> <IfModule mod_access_compat.c> Order allow,deny Allow from all </IfModule> </Directory> # UserDir: The name of the directory that is appended onto a user's home # directory if a ~user request is received. # # To disable it, simply remove userdir from the list of modules in APACHE_MODULES # in /etc/sysconfig/apache2. # <IfModule mod_userdir.c> # Note that the name of the user directory ("public_html") cannot simply be # changed here, since it is a compile time setting. The apache package # would have to be rebuilt. You could work around by deleting # /usr/sbin/suexec, but then all scripts from the directories would be # executed with the UID of the webserver. UserDir public_html # The actual configuration of the directory is in # /etc/apache2/mod_userdir.conf. Include /etc/apache2/mod_userdir.conf # You can, however, change the ~ if you find it awkward, by mapping e.g. # http://www.example.com/users/karl-heinz/ --> /home/karl-heinz/public_html/ #AliasMatch ^/users/([a-zA-Z0-9-_.]*)/?(.*) /home/$1/public_html/$2 </IfModule> # # This should be changed to whatever you set DocumentRoot to. # <Directory "/srv/www/htdocs"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # <IfModule !mod_access_compat.c> Require all granted </IfModule> <IfModule mod_access_compat.c> Order allow,deny Allow from all </IfModule> </Directory> </VirtualHost>
# /etc/apache2/vhosts.d/vhost-example.confファイル # 仮想ホスト2 <VirtualHost *:80> ServerAdmin webmaster@<サーバ名> ServerName <サーバ名> # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. DocumentRoot /home/<ユーザ名>/htdocs # if not specified, the global error log is used ErrorLog /home/<ユーザ名>/htdocs/error/error_log CustomLog /home/<ユーザ名>/htdocs/error/custom_log combined # don't loose time with IP address lookups HostnameLookups Off # needed for named virtual hosts UseCanonicalName Off # configures the footer on server-generated documents ServerSignature On # Optionally, include *.conf files from /etc/apache2/conf.d/ # # For example, to allow execution of PHP scripts: # # Include /etc/apache2/conf.d/php5.conf # # or, to include all configuration snippets added by packages: # Include /etc/apache2/conf.d/*.conf # ScriptAlias: This controls which directories contain server scripts. # ScriptAliases are essentially the same as Aliases, except that # documents in the realname directory are treated as applications and # run by the server when requested rather than as documents sent to the client. # The same rules about trailing "/" apply to ScriptAlias directives as to # Alias. # ScriptAlias /cgi-bin/ "/home/<ユーザ名>/htdocs/cgi-bin/" # "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have one, and where ScriptAlias points to. # <Directory "/home/<ユーザ名>/htdocs/cgi-bin"> AllowOverride None Options +ExecCGI -Includes AddHandler cgi-script .cgi .pl .py <IfModule !mod_access_compat.c> Require all granted </IfModule> <IfModule mod_access_compat.c> Order allow,deny Allow from all </IfModule> </Directory> # UserDir: The name of the directory that is appended onto a user's home # directory if a ~user request is received. # # To disable it, simply remove userdir from the list of modules in APACHE_MODULES # in /etc/sysconfig/apache2. # <IfModule mod_userdir.c> # Note that the name of the user directory ("public_html") cannot simply be # changed here, since it is a compile time setting. The apache package # would have to be rebuilt. You could work around by deleting # /usr/sbin/suexec, but then all scripts from the directories would be # executed with the UID of the webserver. UserDir public_html # The actual configuration of the directory is in # /etc/apache2/mod_userdir.conf. Include /etc/apache2/mod_userdir.conf # You can, however, change the ~ if you find it awkward, by mapping e.g. # http://www.example.com/users/karl-heinz/ --> /home/karl-heinz/public_html/ #AliasMatch ^/users/([a-zA-Z0-9-_.]*)/?(.*) /home/$1/public_html/$2 </IfModule> # # This should be changed to whatever you set DocumentRoot to. # <Directory "/home/suse/htdocs"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # <IfModule !mod_access_compat.c> Require all granted </IfModule> <IfModule mod_access_compat.c> Order allow,deny Allow from all </IfModule> </Directory> </VirtualHost>
次に、IPアドレスと仮想ホストのサーバ名の名前解決を行うため、/etc/hostsファイルを編集する。
sudo vi /etc/hosts
/etc/hostsファイル
...略...
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#
127.0.0.1 localhost
127.0.0.1 <仮想ホストのサーバ名>
...略...
仮想ホストの設定ファイル(*.confファイル)を反映させるため、Apache2を再起動する。
sudo systemctl restart apache2
PHPのインストール
次に、PHPをインストールする。
PHPのインストール手順においては、インストール - PHP7を参照すること。
PHPが正常に動作するか確認するため、/srv/www/htdocsディレクトリに、以下のようなPHPファイルを作成する。
以下のコマンドでテスト用のPHPファイルを作成して表示する。
PHPファイルの内容は下記の通りである。
sudo vi /srv/www/htdocs/test.php
test.phpファイル
<?php
phpinfo();
?>
Webブラウザを起動して、http://localhost/test.php と入力する。
インストール済みのPHPの情報が表示されていれば、Apache2が正しく動作している。