Contents
apache2( httpd-2.4.39 )のインストールとバーチャルホスト設定
1.apache2インストール
①httpd-2.4.39 をダウンロード
1 2 |
# cd /usr/local/src # wget http://archive.apache.org/dist/httpd/httpd-2.4.39.tar.gz |
➁Apache のtar ファイルの展開
1 |
# tar zxvf httpd-2.4.39.tar.gz |
➂apr、apr-util のダウンロードと展開
1 2 3 4 5 6 |
# wget https://archive.apache.org/dist/apr/apr-1.6.3.tar.gz # wget https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz # tar zxvf apr-1.6.3.tar.gz # tar zxvf apr-util-1.6.1.tar.gz # mv apr-1.6.3 httpd-2.4.39/srclib/apr # mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util |
④ expat-devel のインストール
1 2 3 4 5 6 |
# wget https://github.com/libexpat/libexpat/releases/download/R_2_2_7/expat-2.2.7.tar.gz # tar xvfz expat-2.2.7.tar.gz # cd expat-2.2.7 # ./configure --prefix=/usr/local/expat/2_2_7 # make # make install |
⑤expatシンボリックリンクを作成
インストールされたライブラリを"/usr/local"配下にシンボリックリンクで作成します
インストールされたライブラリを"/usr/local"配下にシンボリックリンクで作成します
※ /usr/local/bin
1 |
# ln -s /usr/local/expat/2_2_7/bin/xmlwf /usr/local/bin/ |
※ /usr/local/include
1 2 3 |
# ln -s /usr/local/expat/2_2_7/include/expat.h /usr/local/include/ ln -s /usr/local/expat/2_2_7/include/expat_config.h /usr/local/include/ ln -s /usr/local/expat/2_2_7/include/expat_external.h /usr/local/include/ |
※ /usr/local/lib
1 2 3 4 5 |
# ln -s /usr/local/expat/2_2_7/lib/libexpat.a /usr/local/lib/ ln -s /usr/local/expat/2_2_7/lib/libexpat.la /usr/local/lib/ ln -s /usr/local/expat/2_2_7/lib/libexpat.so /usr/local/lib/ ln -s /usr/local/expat/2_2_7/lib/libexpat.so.1 /usr/local/lib/ ln -s /usr/local/expat/2_2_7/lib/libexpat.so.1.6.9 /usr/local/lib/ |
⑥PCREのインストール
1 2 3 4 5 6 7 |
# cd /usr/local/src # wget https://ja.osdn.net/projects/sfnet_pcre/downloads/pcre/8.45/pcre-8.45.tar.gz # tar xvfz pcre-8.45.tar.gz # cd pcre-8.45 # ./configure --prefix=/usr/local/pcre/8_45 --enable-jit # make # make install |
⑦シンボリックリンクを作成
インストールされたライブラリを"/usr/local"配下にシンボリックリンクで作成します
インストールされたライブラリを"/usr/local"配下にシンボリックリンクで作成します
※ /usr/local/bin
1 2 3 |
# ln -s /usr/local/pcre/8_45/bin/pcre-config /usr/local/bin/ ln -s /usr/local/pcre/8_45/bin/pcregrep /usr/local/bin/ ln -s /usr/local/pcre/8_45/bin/pcretest /usr/local/bin/ |
※ /usr/local/include
1 2 3 4 5 6 |
# ln -s /usr/local/pcre/8_45/include/pcre.h /usr/local/include/ ln -s /usr/local/pcre/8_45/include/pcre_scanner.h /usr/local/include/ ln -s /usr/local/pcre/8_45/include/pcre_stringpiece.h /usr/local/include/ ln -s /usr/local/pcre/8_45/include/pcrecpp.h /usr/local/include/ ln -s /usr/local/pcre/8_45/include/pcrecpparg.h /usr/local/include/ ln -s /usr/local/pcre/8_45/include/pcreposix.h /usr/local/include/ |
※ /usr/local/lib
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ln -s /usr/local/pcre/8_45/lib/libpcre.a /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcre.la /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcre.so /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcre.so.1 /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcre.so.1.2.11 /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcrecpp.a /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcrecpp.la /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcrecpp.so /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcrecpp.so.0 /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcrecpp.so.0.0.1 /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcreposix.a /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcreposix.la /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcreposix.so /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcreposix.so.0 /usr/local/lib/ ln -s /usr/local/pcre/8_45/lib/libpcreposix.so.0.0.6 /usr/local/lib/ |
⑧configure 、コンパイル、インストールを実行
1 |
# cd ../httpd-2.4.39 |
1 2 3 4 5 6 7 8 9 10 |
# ./configure \ --with-layout=Apache \ --enable-module=auth_db \ --enable-module=so \ --enable-module=most \ --enable-mods-shared=reallyall \ --enable-rewrite \ --enable-auth_digest # make # make install |
2.Apache の設定
①httpd.conf ファイルを編集
1 |
# cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf_bak |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# vi /usr/local/apache2/conf/httpd.conf ●83 行目あたり digest 認証を有効にします 「LoadModule auth_digest_module modules/mod_auth_digest.so」の行頭にある「#」を削除 ●170 行目あたり CGI モジュールを有効化 「LoadModule cgid_module modules/mod_cgid.so」の行頭にある「#」を削除 ●228 行目あたり ServerName の変更 「#ServerName www.example.com:80」の下に「ServerName ホスト名」を追加 ●251 行目あたり ドキュメントルートの変更 「DocumentRoot "/usr/local/apache2/htdocs"」の行頭に「#」を入力してコメントアウト ●279 行目あたりに下記追加 <VirtualHost *:80> ServerAdmin <管理者メールアドレス> DocumentRoot /var/www/html/くFQDN>/ ServerName <FQDN> ErrorLog "| /usr/local/apache2/bin/rotatelogs /var/log/httpd/<FQDN>_error_log_%Y%m%d 86400 540" CustomLog "| /usr/local/apache2/bin/rotatelogs /var/log/httpd/<FQDN>_access_log_%Y%m%d 86400 540" combined ErrorDocument 404 / </VirtualHost> <Directory "/var/www/html/<FQDN>"> Options Indexes Includes FollowSymLinks MultiViews ExecCGI Require all granted Allow from all AddHandler server-parsed .html </Directory> ●298 行目あたり index ファイルの追加 「index.htm index.php」を追加する <IfModule dir_module> DirectoryIndex index.html index.htm index.php </IfModule> ●316 行目あたり error_log 出力ディレクトリの変更 「ErrorLog "logs/error_log"」の行頭に「#」を追加し、その下に「ErrorLog "/var/log/httpd/error_log"」を追加します #ErrorLog "logs/error_log" ErrorLog "/var/log/httpd/error_log" ●345 行目あたり ログ設定をコメントアウト #CustomLog "logs/access_log" common ●445 行目あたり 「AddHandler cgi-script .cgi」の先頭にある「#」を削除 ●532 行目あたり httpd-default.conf を有効 「Include conf/extra/httpd-default.conf」の行頭にある「#」を削除 |
②httpd-default.conf ファイル編集
1 2 3 |
# vi /usr/local/apache2/conf/extra/httpd-default.conf ●10 行目あたり タイムアウト時間を変更 Timeout 300 |
③必要なディレクトリを作成
1 2 |
# mkdir -p /var/www/html/<FQDN>/ # mkdir /var/log/httpd |
④Web サイトを表示させるディレクトリ所有者、権限
1 2 |
# chown -R <ユーザー名>:<ユーザー名> /var/www/ # chmod 755 /var/www/html/<FQDN>/ |
⑤Apache の自動起動設定
1 2 |
# cd /lib/systemd/system/ # vi httpd.service |
httpd.serviceの内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type = forking ExecStart=/usr/local/apache2/bin/apachectl start ExecStop=/usr/local/apache2/bin/apachectl stop # 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 |
⑥Apache の自動起動設定と起動
1 2 |
# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi -user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. |
1 |
# systemctl start httpd.service |
⑦Apache の動作確認
firewallでポート開放
firewallでポート開放
1 2 3 |
# firewall-cmd --permanent --add-service=http # firewall-cmd --permanent --add-service=https # firewall-cmd --reload |
ブラウザでhttp://<ドメイン名>にアクセスすると
Index of / と表示されればOK
Index of / と表示されればOK
PHP( PHP-7.3.6 )のインストールと設定
1.事前準備
PHP のインストールに必要なソフトウェアをインストール
1 2 3 4 5 |
# dnf -y install xz-devel libxml2-devel # dnf -y install libjpeg-turbo-devel # dnf -y install libpng-devel # dnf -y install freetype freetype-devel # dnf -y install libcurl-devel |
2.PHPインストール
①インストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# cd /usr/local/src # wget https://www.php.net/distributions/php-7.3.6.tar.gz (# wget --no-check-certificate https://www.php.net/distributions/php-7.3.6.tar.gz) # tar zxvf php-7.3.6.tar.gz # cd php-7.3.6 # ./configure \ --prefix=/usr/local/php7 \ --with-config-file-path=/usr/local/php7/etc \ --with-apxs2=/usr/local/apache2/bin/apxs \ --enable-mbstring \ --enable-mbregex \ --with-gd \ --enable-gd-jis-conv \ --with-freetype-dir=/usr \ --with-png-dir=/usr \ --with-zlib \ --with-jpeg-dir=/usr \ --with-mysqli=mysqlnd \ --with-mysql-sock=/var/lib/mysql/mysql.sock \ --with-curl # make # make install |
②Apache の設定ファイル編集
1 2 3 4 |
# vi /usr/local/apache2/conf/httpd.conf ●188 行目あたり 「LoadModule php7_module modules/libphp7.so」の下の行に 「AddType application/x-httpd-php .php」を追加 |
③PHP の設定ファイルを編集
1 |
# cp php.ini-development /usr/local/php7/etc/php.ini |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# vi /usr/local/php7/etc/php.ini ●401 行目あたり 「memory_limit = 128M」をmemory_limit = 512Mに変更 ●474 行目あたり 「display_errors = On」を「display_errors = Off」に変更 ●686 行目あたり 「post_max_size = 8M」を「post_max_size = 128M」に変更 ●838 行目あたり 「upload_max_filesize = 2M」を「upload_max_filesize = 2000M」に変更 ●940 行目あたり 「extension=curl.so」と「extension=openssl.so」を追加 ;extension=xsl extension=curl.so extension=openssl.so ●954 行目あたり 「date.timezone = Asia/Tokyo」を追加 ;date.timezone = date.timezone = Asia/Tokyo |
④ curl.so ファイルの生成
1 2 3 4 5 6 7 8 9 |
# cd /usr/local/src/php-7.3.6/ext/curl/ # /usr/local/php7/bin/phpize # ./configure --with-curl -with-php-config=/usr/local/php7/bin/php-config # make # make install # ls -l /usr/local/php7/lib/php/extensions/no-debug-zts-20180731/ 合計3356 -rwxr-xr-x 1 root root 517720 Feb 3 19:49 curl.so -rwxr-xr-x 1 root root 2913912 Feb 3 19:42 opcache.so |
⑤PHP の動作確認
下記のファイルを作成
下記のファイルを作成
1 2 |
# vi /var/www/html/<FQDN>/test.php <?php phpinfo(); ?> |
Apache を再起動
1 |
# systemctl restart httpd.service |
Apache2でDigest認証を行う
http の認証認定方式として有名なBasic 認証は認証情報を平文で送信するので、パケット盗聴されるとID とパスワードが漏洩する危険があります。
一方、Digest 認証は認証情報を暗号化して送信するので、情報漏えいの心配がほとんどありません。Digest 認証はBasic 認証を強化した認証認定方式と言えます。
4.1 Digest認証のパスワードファイルを作成
realmと呼ばれる認証領域を指定する。このrealmが同じディレクトリは認証済みとしてアクセスできるようにするためのものです。
今回は例として、realmは"DigestAuth"で、"secretuser"と言うユーザー及びパスワードファイル".digestauth"を作成する。下記のコマンドを実行すると"secretuser"のパスワードを求められるので入力する。
1 |
# /usr/bin/htdigest -c /etc/httpd/.digestauth "DigestAuth" secretuser |
確認する
1 2 |
# cat /etc/httpd/.digestauth secretuser:DigestAuth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
上記の通り、secretuserと暗号化されたパスワードが作成されています
4.2 Apacheの設定ファイル編集
Digest認証をかけるディレクトリを指定する。(今回はsecretディレクトリーを指定する)
1 |
# vi /etc/httpd/conf/httpd.conf |
最後尾に下記追加
1 2 3 4 5 6 7 |
<Directory "/var/www/html/[FQDN]/secret"> AuthType Digest AuthName "DigestAuth" AuthDigestDomain /[FQDN]/secret/ AuthUserFile "/etc/httpd/.digestauth" Require valid-user </Directory> |
Digest認証をかけるディレクトリを作成する
1 |
# mkdir /var/www/html/[FQDN]/secret |
Digest認証を有効にして再起動する
1 |
# systemctl restart httpd.service |
ブラウザでhttp://[FQDN]/secret にアクセスすると「ユーザー名」「パスワード」求める画面が出る