====== 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 を新規作成