====== prisoner web設定 ======
prisonerのwebをWEBサーバにする。
===== 事前設定 =====
jailerから各設定ファイルを直接編集する。各設定ファイルのプレフィックスは/usr/jail/webとなる。
* etc/syslog.confでconsole出力をコメント化する。
# *.err;kern.warning;auth.notice;mail.crit /dev/console
* etc/crontabで不要なcronをコメント化する。
# 1,31 0-5 * * * root adjkerntz -a
* etc/pw.confを新規作成する。prisoner内のuid, gidとjailerのuid, gidが同じになるとセキュリティ上の問題が発生するため、uid, gidの範囲を設定する。
minuid 2101
maxuid 2200
mingid 2101
maxgid 2200
* etc/fstabをtouchで作成する。
* etc/resolv.confを作成する。
domain "ドメイン名"
nameserver "さくらのVPS指定 1"
nameserver "さくらのVPS指定 2"
* etc/hostsにweb自身と内側のホスト(jailer, prisoner)を登録する。
127.0.0.1 localhost localhost.example.com
192.168.100.254 gw gw.example.com
192.168.100.1 web web.example.com
192.168.100.1 web.example.com.
192.168.100.2 desktop desktop.example.com
192.168.100.253 vps vps.example.com
* etc/rc.confを新規作成する。
hostname="web.example.com"
ifconfig_epair2b="inet 192.168.100.1 netmask 255.255.255.0"
defaultrouter="192.168.100.254"
firewall_enable="YES"
firewall_type="open"
* ifcofig_epair2b\\ jailerで作成したepair2の一端。jailerからprisonerであるfwに割り当てる。
===== OS設定 =====
prisoner webを起動後、以下の設定を行う。
* prisoner:webへ移動
# jexec web /bin/sh
* newaliasesの実行
# newaliases
/etc/mail/aliases: 27 aliases, longest 10byte, 275 bytes total
* bsdconfigでそれぞれ設定。
* Root Password
* User Management
* Time Zone
===== ソフトウェア導入 =====
==== pkg ====
pkgにて、以下を導入。
pkg -j web install
* apache24
* php56
* mod_php56
* dokuwiki
* インストール後、/usr/local/www/dokuwikiの所有権を変更する。
# cd /usr/local/www
# chown -R www:www dokuwiki
* py27-certbot
==== pkg以外 ====
個別に導入。
* C-BOARD Moyuku
* FreeBSD 11 では perlのパスが /usr/bin/perl から /usr/local/bin/perl になっていた為、Internal Server Errorが出た。\\ c-board.cgi の1行目を編集して回避。
* 新規に展開する場合は改行コードの置換(CRLF(^M)の削除)を行う。
# cd
# find . -name "*.pl" | xargs perl -i.bak -pe "s/^M//"
# find . -name "*.cgi" | xargs perl -i.bak -pe "s/^M//"
# find . -name "*.bak" | xargs rm
* ^M は Ctrl+v, Ctrl+mで入力
* brd ディレクトリを旧環境から展開で移行
* アクセス権設定
===== PHP設定 =====
/usr/local/etc/php.ini-developmentを/usr/local/etc/php.iniコピーする。\\ コピー後、php.iniを編集する。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
always_populate_raw_post_data = -1
* always_populate_raw_post_data
* -1 にしないとアップロードできない。
===== Let's Encrypt設定 =====
[[https://letsencrypt.jp/|Let's Encrypt 総合ポータル]]を参考に設定を行う。
* 事前に apache を停止(起動済みの場合)
# service apache24 stop
* certbot 実行
# certbot certonly --standalone -d <ドメイン名> -d <サブドメインを含めたFQDN>
* メールアドレスを入力
* [Please read the Terms of Service at ...]と出るので、[Agree]を押下。
* /usr/local/etc/letscncrypt/live/<ドメイン名>に以下のファイルが作成される
* cert.pem
* chain.pem
* fullchain.pem
* privkey.pem
===== Apache HTTP Server設定 =====
==== 自動起動設定 ====
/etc/rc.confに追記する。
apache24_enable="YES"
==== httpd.conf設定 ====
/usr/local/etc/apache24/httpd.confを編集する。
* AuthDigest有効化
LoadModule auth_digest_module libexec/apache24/mod_auth_digest.so
* SSL/TLS有効化
LoadModule ssl_module libexec/apache24/mod_ssl.so
* shmcb有効化
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
* rewrite有効化
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
* CGI有効化
LoadModule cgi_module libexec/apache24/mod_cgi.so
* ServerAdmin無効化
#ServerAdmin you@example.com
* ServerNameの変更
#ServerName www.example.com:80
ServerName 192.168.100.1:80
* DocumentRootの変更
#DocumentRoot "/usr/local/www/apache24/data"
DocumentRoot "/usr/local/www"
* ブロックの無効化
#
#
# 無効化
#
#
* DirectoryIndexの追加
DirectoryIndex index.html index.php
* alias_moduleの無効化
# ScriptAlias /cgi-bin/ "/usr/local/www/apache24/cgi-bin/"
* CGI directoryの無効化
#
#
# 無効化
#
#
* PHP と cgi設定
AddType application/x-httpd-php .php
AddHandler cgi-script .cgi
* TLS有効化
Include etc/apache24/extra/httpd-ssl.conf
* rewrite設定(([[http://qiita.com/sue71/items/100004b704b9ff129b09|apacheでhttpへのアクセスをhttpsへ自動リダイレクトする]]))
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
==== httpd-ssl.conf ====
/usr/local/etc/apache24/extra/httpd-ssl.confを編集する。
DocumentRoot "/usr/local/www/dokuwiki"
ServerName www.example.com:443
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/<ドメイン名>/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/<ドメイン名>/privkey.pem"
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
dwongrade-1.0 force-response-1.0
# Aliasとして、/c-boardへのアクセスを/usr/local/www/c-boardへマップ
Alias /c-board /usr/local/www/c-board
Options FollowSymLinks ExecCGI
AllowOverride all
Order allow,deny
Allow from all
Require all granted
Options FollowSymLinks ExecCGI
AllowOverride all
Order allow,deny
Allow from all
AuthType Digest
AuthName HOGE
AuthDigestDomain /usr/local/www/c-board
AuthDigestProvider file
AuthUserFile /usr/local/etc/apache24/.htdigest
Require valid-user
CustomLog "/var/log/httpd-ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
==== Digest認証設定 ====
* .htdigestを作成する。
# cd /usr/local/etc/apache24
# htdigest -c .htdigest 'AuthNmaeで設定した値' 認証するユーザ名
==== コンフィグ確認 ====
* コンフィグ確認を行う
# apachectl configtest
===== ログローテーション設定 =====
prisoner web の /etc/newsyslog.confに対象ファイルを追加する。
/var/log/httpd-access.log 600 30 * @T02 J /var/run/httpd.pid 30
/var/log/httpd-error.log 600 30 * @T02 J /var/run/httpd.pid 30
/var/log/httpd-ssl_request.log 600 30 * @T02 J /var/run/httpd.pid 30
===== DokuWiki =====
* ブラウザにてinstall.phpにアクセスする。
* DokuWiki installer実行後、install.phpを削除する。
* [管理] -> [テンプレートのスタイル設定] -> [サイトの全体幅] を 100%
* タイムゾーン設定のため、conf/conf/local.protected.php を新規作成