自宅サーバ構築MY HOME SERVER
ウエブサーバ(Apache) 外部からアクセステスト アクセス制限 ウエブページ暗号化(SSL) SSL証明書の作成 IEで動作確認 |
- ウエブサーバ(Apache) -
ウエブページを外部に公開するためにApacheをインストールして、設定していきます。iptablesが有効の場合、ポート80番を開放します。外部公開する場合、ルータも同じポートを
開放する必要があります。ポート開放の詳細はルータポート開放についてをご覧ください。
ローカルのクライアントPCから、サーバのIPアドレスでウエブページにアクセスできるように設定します。
bindをインストール・設定済みであれば、ドメイン名でウエブページにアクセスできます。
[root@hoge123 ~]# vi /usr/local/etc/pkgtools.conf 赤文字の部分を追記します。 MAKE_ARGS = { 'www/apache22' => 'WITH_SUEXEC=yes SUEXEC_DOCROOT=/home', }[root@hoge123 ~]# cd /usr/ports/www/apache22 [root@hoge123 /apache22]# make BATCH=yes WITH_SUEXEC=yes SUEXEC_DOCROOT=/home WITHOUT_IPV6=yes install clean ← 1行で記入します。 [root@hoge123 /apache22]# cd |
httpd.confの編集・保存します。
[root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf ServerAdmin you@example.com ↓ 変更します。 ServerAdmin hogehoge@hoge123.dip.jp #ServerName www.example.com:80 ↓ 先頭の#を削除して、変更します。 ServerName hoge123.dip.jp:80 <Directory "/usr/local/www/apache22/data"> #Options Indexes FollowSymLinks ↓ 先頭の#を削除して、変更します。 Options Includes ExecCGI FollowSymLinks #AllowOverride None ↓ 先頭の#を削除して、変更します。 AllowOverride All </Directory> <IfModule dir_module> DirectoryIndex index.html ↓ 追記します。 DirectoryIndex index.html index.htm index.cgi index.php </IfModule> <IfModule log_config_module> CustomLog "/var/log/httpd-access.log" combined ↓ 変更します。 CustomLog "/var/log/httpd/access.log" combined env=!nolog ↓ CustomLogの下に追記します。 SetEnvIf Request_URI "default\.ida" nolog SetEnvIf Request_URI "cmd\.exe" nolog SetEnvIf Request_URI "root\.exe" nolog SetEnvIf Request_URI "Admin\.dll" nolog SetEnvIf Request_URI "NULL\.IDA" nolog SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" nolog </IfModule> <IfModule mime_module> #AddHandler cgi-script .cgi ↓ 先頭の#を削除して、.plを追記します。 AddHandler cgi-script .cgi .pl </IfModule> <IfModule mime_module> AddType application/x-httpd-php .php ← 追記します。 </IfModule> #Include etc/apache22/extra/httpd-languages.conf ↓ 先頭の#を削除します。 Include etc/apache22/extra/httpd-languages.conf #Include etc/apache22/extra/httpd-userdir.conf ↓ 先頭の#を削除します。 Include etc/apache22/extra/httpd-userdir.conf #Include etc/apache22/extra/httpd-default.conf ↓ 先頭の#を削除します。 Include etc/apache22/extra/httpd-default.conf |
httpd-languages.conf、httpd-userdir.conf、httpd-default.conf、mod_deflateの編集をします。
[root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-languages.conf AddLanguage ja .ja ←この行を最上位に移動します。 LanguagePriority ja ← jaを先頭に移動します。 [root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-userdir.conf <Directory "/home/*/public_html"> AllowOverride FileInfo AuthConfig Limit Indexes ↓ 変更します。 AllowOverride All FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ↓ 変更します。 Options Includes ExecCGI FollowSymLinks </Directory> [root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-default.conf ServerTokens Full ↓ 変更します。 ServerTokens Prod ServerSignature On ↓ 変更します。 ServerSignature Off [root@hoge123~]# vi /usr/local/etc/apache22/Includes/deflate.conf ↓ 新規作成します。以下内容を貼り付け・保存します。\.(?:gif|jpe?g|png|ico|z|taz|t?gz|t?bz2?|zip|lzh|sit|rar|pdf|mp3|ogg|wma|rm|wmv|mov|mpe?g)$ \ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary |
ウエブ公開ディレクトリの所有権変更、logディレクトリ作成、Apache2の起動をします。
[root@hoge123~]# chown -R hogehoge /usr/local/www/apache22/data [root@hoge123~]# mkdir /var/log/httpd [root@hoge123~]# chown www: /var/log/httpd [root@hoge123~]# vi /etc/rc.conf apache22_enable="YES" ← 最終行に追記します。 [root@hoge123~]# /usr/local/etc/rc.d/apache22 start [root@hoge123~]# vi /usr/local/etc/logrotate.d/apache22 新規作成です。下記内容を貼り付けます。 /var/log/httpd/*log { daily rotate 4 create nocompress missingok sharedscripts postrotate /usr/local/sbin/apachectl -k graceful endscript } |
IEで表示されるか確認します。 IEを開き、アドレスバーに192.168.0.10か、hoge123.dip.jp と入力します。 下図のように表示されます。
cgiが正常動作するか、test.cgiを作成してIEで表示されるか確認します。
[root@hoge123 ~]# vi /usr/local/www/apache22/data/test.cgi 以下の内容を貼り付け・保存します #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n<body>\n"; print "<div style=\"width: 100%; font-size: 50px; font-weight: bold; text-align: center;\">\n"; print "<p><font color=\"#FF0000\">Hogehoge CGI Test </p>"; print "\n</div>\n"; print "</body>\n</html>\n"; - 貼り付け範囲は、この上までです。 - [root@hoge123 ~]# chmod 755 /usr/local/www/apache22/data/test.cgi |
192.168.0.10/test.cgiまたは、hoge123.dip.jp/test.cgi と入力します。下図のように表示されます。
PHP5をインストールします。
[root@hoge123 ~]# vi /usr/local/etc/pkgtools.conf MAKE_ARGS = { 'lang/php5' => 'WITH_APACHE=yes', ← 追記します。 'lang/php5-extensions' => 'WITH_GD=yes WITH_MBSTRING=yes', ← 追記します。 } [root@hoge123 ~]# cd /usr/ports/lang/php5 [root@hoge123 /php5]# make BATCH=yes WITH_APACHE=yes WITHOUT_IPV6=yes install clean [root@hoge123 /php5]# cd /usr/ports/lang/php5-extensions[root@hoge123 /php5-extensions]# make BATCH=yes WITH_GD=yes WITH_MBSTRING=yes install clean [root@hoge123 /php5-extensions]# cd [root@hoge123 ~]# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini [root@hoge123 ~]# chmod 640 /usr/local/etc/php.ini [root@hoge123 ~]# vi /usr/local/etc/php.ini short_open_tag = Off ↓ 変更します。 short_open_tag = On expose_php = On ↓ 変更します。 expose_php = Off max_execution_time = 30 ↓ 変更します。 max_execution_time = 300 ;default_charset = "iso-8859-1" ↓ 変更します。 default_charset = "UTF-8" upload_max_filesize = 2M ↓ 変更します。 upload_max_filesize = 20M ;date.timezone = ↓ 先頭の;を削除して、変更します。 date.timezone = Asia/Tokyo ;mbstring.language = Japanese ↓ 先頭の;を削除して、変更します。 mbstring.language = Japanese ;mbstring.internal_encoding = EUC-JP ↓ 先頭の;を削除して、変更します。 mbstring.internal_encoding = UTF-8 ;mbstring.http_input = auto ↓ 先頭の;を削除します。 mbstring.http_input = auto ;mbstring.http_output = SJIS ↓ 先頭の;を削除して、変更します。 mbstring.http_output = pass ;mbstring.encoding_translation = Off ↓ 先頭の;を削除して、変更します。 mbstring.encoding_translation = On ;mbstring.detect_order = auto ↓ 先頭の;を削除します。 mbstring.detect_order = auto ;mbstring.substitute_character = none; ↓ 先頭の;を削除します。 mbstring.substitute_character = none; [root@hoge123 ~]# /usr/local/etc/rc.d/apache22 restart |
PHPが動作するか、test.phpを作成してIEで表示されるか確認します。
[root@hoge123 ~]# echo "<?php phpinfo(); ?>" > /usr/local/www/apache22/data/test.php |
192.168.0.10/test.phpまたは、hoge123.dip.jp/test.php と入力します。下図のように表示されます。
これでCGIやPHPプログラムをウエブ上で動作させることが出来る様になりました。PHPベースの掲示板やブログなど 、簡単にカスタマイズするだけで使用できるフリー素材がウエブ上にはたくさんあります。是非、試してみてください。
- 外部からアクセステスト -
ローカルドメインからウエブページにアクセスが出来ても、外部公開している場合、外部からアクセスできるか確認する必要があります。近くにインターネット カフェでもあれば確認できるかもしれませんが、わざわざ行くのも大変です。そこで、 Free Web Surfingを使い、外部プロクシサーバからアクセスしてみます。 こちらをクリックしてください。
Anonymouse をクリックします。English を選択します。
ドメイン名を入力して、Surf Anonymousely をクリックします。
ウエブページが表示されれば、外部に一般公開されている状態です。尚、このサイトはhttpsから始まるアドレスには対応してません。
- アクセス制限 -
ウエブページにアクセス制限をかけて、特定のユーザだけが閲覧できる設定をします。制限をかけるフォルダを作成します。 そのフォルダ内に、認証が成功すれば表示されるウエブページを作成します。
[root@hoge123 ~]# mkdir /usr/local/www/apache22/data/testfolder [root@hoge123 ~]# vi /usr/local/www/apache22/data/testfolder/test.html 下記内容を貼り付けます。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> ACCESS TEST </body> </html> |
アクセス制限を許可するユーザ、パスワードを作成します。任意のユーザ名hogehogeを作成し、 任意のパスワードを設定します。パスワードは一度、入力後、確認入力が必要です。
[root@hoge123 ~]# mkdir /usr/password [root@hoge123 ~]# htpasswd -c /usr/password/.htpasswd hogehoge New password: Re-type new password: Adding password for user hogehoge [root@hoge123 ~]# |
Apacheの設定をします。
[root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf 一番下に下記内容を追記・保存します <Directory "/usr/local/www/apache22/data/testfolder"> AuthType Basic AuthName "My Test Page" AuthUserFile /usr/password/.htpasswd Require valid-user </Directory> |
設定内容の変更を反映させるため、Apacheを再起動します。
[root@hoge123 ~]# /usr/local/etc/rc.d/apache22 start |
ウエブページにhttp://hoge123.dip.jp/testfolder/test.htmlと入力します。「ユーザ名」にhogehoge、 「パスワード」に先ほど作成したパスワードを入力します。
認証に成功すると、ページが表示されます。
- ウエブページ暗号化(SSL) -
ウエブページを単純に閲覧目的で使用する分には、あまり必要ありませんが、パスワードやクレジットカード情報等を入力してウエブ上で送信する場合
、暗号化が必須です。暗号化されてない情報は平文で流れるため、第3者に読み取られる可能性があります。
そこで暗号化通信を可能にするため、mod SSLをApacheに組み込みます。暗号化通信が可能になると、URLを https//hoge123.dip.jp にして使用することが
出来ます。暗号化通信に使用するポート番号443 はiptables及びルータともに開放ずみであることが前提条件です。既に
ルータポート開放についての
設定をしていれば、443番は開放されています。
- SSL証明書の作成 -
ここでは独自の証明書を作成します。
[root@hoge123 ~]# cd /etc/ssl [root@hoge123 /ssl]# openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus ..........................++++++ .......................................................++++++ e is 65537 (0x10001) Enter pass phrase for server.key: ← 任意のパスフレーズを入力します。 Verifying - Enter pass phrase for server.key: ← 再入力します。 [root@hoge123 ssl]# openssl rsa -in server.key -out server.key Enter pass phrase for server.key: ← 先ほど設定したパスフレーズを入力します。 writing RSA key [root@hoge123 ssl]# openssl req -new -days 3650 -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:TOKYO Locality Name (eg, city) []:SHIBUYAKU Organization Name (eg, company) [Internet Widgits Pty Ltd]:HOGEHOGE Organizational Unit Name (eg, section) []:HOGE Common Name (e.g. server FQDN or YOUR name) []:hoge123.dip.jp Email Address []:hogehoge@hoge123.dip.jp Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← 何も入力せず、Enterキーを押します。 An optional company name []: ← 何も入力せず、Enterキーを押します。[root@hoge123 ssl]# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 ← 実際には1行で入力します。 Signature ok subject=/C=JP/ST=TOKYO/L=SHIBUYAKU/O=HOGEHOGE/OU=HOGE/CN=hoge123.dip.jp /emailAddress=hogehoge@hoge123.dip.jp Getting Private key [root@hoge123 /ssl]# chmod 400 server.*[root@hoge123 /ssl]# openssl x509 -in server.crt -out /usr/local/www/apache22/data/server.der -outform DER ← 実際には1行で入力します。 [root@hoge123 /ssl]# cd [root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf #Include etc/apache22/extra/httpd-ssl.conf ↓ 先頭の#を削除します。 Include etc/apache22/extra/httpd-ssl.conf |
httpd-sslの設定をします。
[root@hoge123 ~]# vi vi /usr/local/etc/apache22/extra/httpd-ssl.conf ServerName www.example.com:443 ↓ 変更します。 ServerName hoge123.dip.jp:443 ServerAdmin you@example.com ↓ 変更します。 ServerAdmin hogehoge@hoge123.dip.jp ErrorLog "/var/log/httpd-error.log" ↓ 変更します。 ErrorLog "/var/log/httpd/ssl_error.log" TransferLog "/var/log/httpd-access.log" ↓ 変更します。 TransferLog "/var/log/httpd/ssl_access.log" SSLCertificateFile "/usr/local/etc/apache22/server.crt" ↓ 変更します。 SSLCertificateFile "/etc/ssl/server.crt" SSLCertificateKeyFile "/usr/local/etc/apache22/server.key" ↓ 変更します。 SSLCertificateKeyFile "/etc/ssl/server.key" CustomLog "/var/log/httpd-ssl_request.log" ↓ 変更します。 CustomLog "/var/log/httpd/ssl_request.log" [root@hoge123 ~]# /usr/local/etc/rc.d/apache22 restart |
- IEで動作確認 -
IEを開いたら、URL に https://hoge123.dip.jp と入力します。自己証明書のため、どうしても証明書エラー 表示が出ます。認証機関から発行された証明書を使用していれば このようなエラー表示は出ません。
「このサイトの閲覧を続行する」を選択します。セキュリティ警告は「はい」をクリックします。
hogehogeのトップページが表示されました。毎回、証明書エラー表示が出るのを解消するには、証明書を インストールします。証明書をインストールしたパソコンだけ、エラー表示が出ません。ただし、上記の セキュリティー警告は出ます。
「証明書のエラー」をクリックします。
「証明書の表示」をクリックします。
「証明書のインストール」をクリックします。
「次へ」をクリックします。
「証明書をすべて次のストアに配置する」を選択して、「参照」ボタンをクリックします。
「信頼されたルート証明機関」を選択して、「OK」ボタンをクリックします。
「次へ」をクリックします。
「完了」をクリックします。
セキュリティ警告は「はい」を選択します。
「OK」ボタンをクリックします。