さて、大体容れ物が出来たんで古い掲示板のログをぽつぽつと手作業でコピペしてますが、何となく時計が変。というか何時間か遅れている。調べたら、ntpdが動いてない。
 そりゃ時計は狂うわなあ、ということで、ntpd自動起動に設定。

/etc/ntpd.confに、

restrict default ignore
restrict -6 default ignore
restrict 127.0.0.1
restrict ntp1.sakura.ad.jp kod nomodify notrap nopeer noquery
server ntp1.sakura.ad.jp

と書いて、/etc/rc.confに

ntpd_enable=”YES”
ntpd_config=”/etc/ntp.conf”

これで、リブートすれば自動起動のはず。

しかし作業中なのでリブートはしたくないから、
ntpdate -b -v ntp1.sakura.ad.jp
とやって時計あわせ。
hwclock –systohc
の後、
/etc/rc.d/ntpd start
で一応走ってくれた。後は様子見ですね。さくらのntpサーバがこけるようなら他を見に行くようにするだけだし。



 htmlのページについては、ちまちまと手作業でコピペすれば何とかなりそうな状態になったので、次は掲示板をどうするか考えなければなりません。
 元々、PHPの掲示板とイラスト掲示板を設置していたのですが、PHP5.5.3に上げたところ、動かなくなるものが出てきました。個人の方が作って配付しておられたものだけではなく、メジャーなのもダメです。XoopsはPHP5.4以上でエラーが出てインストールできず。今週やってみたところ、Joolma!も、ウェブインストーラが最初の画面から先に進まないという状態でした。スクリプト混在はいろいろと大変なので、できればメジャーなものを使いたいと思ったのですが、フォーラム系の機能で最有力候補とあてにしていたXoopsの対応が遅れまくっているという……。Ploneは、大量の情報発信を大人数でやるにはいいのですが、とことんBBSには不向きなんですね。フォーラム系のアドオンは無いに等しい上、qPloneCommentという凶悪なのがありました。Plone3でスレッド式のBBSが作れる数少ないアドオンだったんですが、こいつを使ってしまうとPlone4に上げた時のデータマイグレーションができず、海外でも途方に暮れてる人続出で対策の目処立たず、という。木に竹を接ぐようなことはするもんじゃない、とガクブルでした(汗)。
 探し回った結果、このブログと同じWordPressでできるんじゃないか、とという情報がひっかかりました。WordPressのサポートフォーラムのシステムのbbPressが良いらしい、と。バージョン1は独立のアプリだったのですが2からはWPのプラグインて提供されてます。入れてみたところ、一応コメントの書き込みはできますが、いわゆるフォーラムの外見にするのが大変。テーマは無料のがいろいろあるのですが、どれを持って来てもテーマが壊れています、と出て動かない。さらに調べると、最新版はWPと完全統合で、WPのウィジェットを配置することでフォーラムのレイアウトができるというしくみでした。使えそうなプラグインも拾ってきて、画像投稿もできるところまで確認しましたが、やはりレイアウトの壁が。
 他にも無いのかと探した結果、SimplePressというのがあって設置が比較的簡単そうだという結論になりました。本体はWPのプラグインで、最初からそこそこフォーラムっぽいテーマが提供されています。無料でダウンロードできる本体とテーマだけで最低限のことはできますが、プラグインとサポートフォーラムへの参加、ユーザーズガイドが有料です。開発元の有料コンテンツへのアクセス2ヶ月分が$49。根性を入れて調べれば何もなしで何とかなるかもしれませんが、時間が無駄な上、画像投稿のプラグインはどのみち有料でないと手に入りません。ということで、思い切って2ヶ月分の料金を払ってみました。アメリカの会社なのでマニュアルは全部英語、メールでのサポートは受け付けておらずサポートフォーラムのみですがそちらも英語ですが、対応はいい感じです。トラブルの報告を英語でやりとりするつもりなら、有料なだけに逆に安心かも。海外製なので潜在的なユーザーの数が違いますし。一旦設置してしまえば、次に問題が起きたときにまた2ヶ月有効のサポート料を払って質問しに行けばいいので、まあ納得できる課金モデルかな、と。

 ということで、フォーラムを作るためのWordPress用のデータベースをphpMyAdminで作ります。日本語版WordPressをダウンロードしてきて展開、出来たディレクトリをbbsと名前を変えます。wp-config-sample.phpをwp-config.phpに名前を変えて、データベースの名前とデータベースの使用者とそのパスワードを設定し、認証用キーを(設定ファイルに書いてあるURLにアクセスして出た結果で)上書き。
 ここで、問題になるのがファイルのパーミッションです。PHPをcgiモードにしないで動かした場合、httpdを走らせているユーザーの書き込み権限が無いと、プラグインやらテーマやらが全くインストールできません。かといってcgiモードにも脆弱性が指摘されていたりします。仕方がないのでインストールディレクトリ以下の所有者をnobodyにするという解決に。これをやらなければ、今度はディレクトリのパーミッションを777にする羽目になってそれはそれでどうよ、という状態ですから。
 編集後、wp-content/pluginsの下にsimple-press本体を入れてしまいます。インストール後、ブラウザでブログを見るのと同じようにアクセスすれば、インストーラが立ち上がります。あらかじめ決めておいた管理者名とパスワードを入れて終了。
 WPにログインできるようになったので、ログインして、WPのプラグインのakismetと日本語のプラグインを有効にし、jQuery UpdaterとJQuery UI WIdgetsをインストールして有効に。このあと、SimplePressを有効化→Installと進みますが、ボタンをクリックするだけで終了。
 SPのプラグインやテーマはWP本体とは別なので、アップロードはSPのコントロールパネルからしないといけません。どれを有効にするかの切り替えもSPのコントロールパネルから行います。
 とりあえずテーマはいろいろ試したかったので全部、といっても3種類ですが、もらってきました。
 プラグインは
ban○
 投稿規制をするためのもの。
captcha
 イメージをdrag&dropするもの。ガラケーだと操作自体ができなさそう……。
pupload○
 画像添付を可能にする。
policy-doc○
 フォーラムポリシーを表示
post-as○
 別のユーザの名前で投稿する。ただ、ゲストユーザーではなく登録ユーザーでなければならない。
post-preview
 投稿前にプレビューする機能をつける。
spam-registrations
 スパム目的で投稿したユーザーを削除する。
tinymce-richtext
 編集をtinymceにする。
upload-viewer
 アップロードした画像を見るためのもの。
をとりあえず入れました。荒らし対策&過去ログ収納作業に使えそうなものを優先的に、です。

 運用のしくみは、まずユーザーグループを作り、そのグループに対してフォーラムを作る、という形です。グループごとにフォーラムを管理するということが想定されています。今回、メンバーにならなくても投稿できるようにしたいので、BBSとイラスト掲示板を作ったら、アクセス制御は、Guest: LImited, Member:Standard, Moderator:Moderatorにします。
 その後、メニューから設定。

Optionsメニュー
General Display Settingsで
Remove page title completely ON

Member Settingsで
Disallow members not logged in to post as guests OFF ゲスト投稿を許可。

Componentsメニュー
File Uploadで、
Maximum size of thumbnailsを300に。
画像ファイルサイズを5MBに。

Permissions
Manage Permission Sets
Limited AccessのCreatingセクションで、Can use smileys in posts をON。
Standard AccessのCreatingセクションで、Can use smileys in posts をON。
さらにUploadを全て許可。

WordPressの方の設定

一般設定で誰でもユーザー登録ができるようにする。ただし購読者。
表示設定で固定ページをForumに。
外観はTwenty Twelveを選ぶ。
メインサイドバーは空に。

 これで、トップにアクセスしたらフォーラムが見えるようにできました。

 ただ、投稿してからの投稿日付変更ができないこと、許可されていれば別名での投稿ができるが使える別名はユーザー登録されていなければならないという条件付なので、一旦、ハンドル名のユーザーを登録してその名前で過去ログを突っ込んだ後、ユーザーを削除する(後で本人が投稿しに来た時にできるようにするため)という作業が必要になります。bbPressだと1つ1つの投稿はWPの投稿機能を使っていたので、WPの記事編集メニューから投稿日付の変更ができたのですが……。まあ、掲示板の過去ログはそんなに多くないし……と思ったら、多くないのは移行に手間がかかるイラスト掲示板の方で、BBSはなんだかんだで1000越えてるがなorz。一応、途中でスパムを消したりはしたので少しは減ってるでしょうが。ナンテコッタイ。



 Ploneのインストールができて、Diazoテーマを3つほどもらってきたのだけど、Schools Themeが良さそうなのでこいつを編集して元サイトに近いイメージになるように作ってみます。

 トップ画像のサイズは993*107px。トップイメージ、ロゴバックグラウンド、ploneロゴ、の順に重ねて表示されている。まず、トップイメージのロゴを 993*107pxになるように編集。bg-header.jpgという名前で、Themingメニューの使用中のthemeのimagesの下にアップ。bg-logo.pngをbg-logo.org.pngとリネーム。ロゴの非表示の方法がわからなかったので1×1ピクセルのみの透明画像を制作、logo.pngとして保存
ZMIの、/FrontierLine/portal_skins/customに移動。プルダウンメニューからimageを選ぶ。IDをlogo.png、タイトル無し、ファイルを選択。logo.png自体を消すとエラーになるので苦肉の策。

 しかし、http://133.242.169.139:8080/FrontierLine/@@manage-viewletsでビユーレットの表示非表示がある程度コントロールでき、ロゴを出すかどうかもこれで制御できたのだった。
 気を取り直してフッタ部分をいじる。
 まず、manage-viewletsでViewlet: plone.colophon (1)を隠す。
 ZMIの/FrontierLine/portal_view_customizationsに移動。zope.interface.Interfaceの下の、plone-footerを選んで編集。


<div i18n:domain="plone"
     id="portal-footer">
          <p>
Ryo Hirokawa Presents. All Right Reserved. Powerd by Plone & python.
          </p>
</div>

にする。

 トップ画像に重なっているスローガンの変更。画像との位置関係から、スローガンは無い方がいいので出さないようにする。
Site Setup -> Theming -> Advanced Settings tab. パラメータ式の中の、
slogan = string:Free Theme for Plone
を変更。日本語を使うなら、
slogan = python:path(‘context/slogan|string:’).decode(‘utf-8’, ‘ignore’
)
とした上で、Site Setup -> Zope Management Interface settings -> Properties tab add a new property slogan, type string, value your slogan and save.
今回はトップ画像のレイアウト上、スローガンは邪魔なので空欄に。つまりslogan = string:の後に何も入れないでおく。

 トップページについては、インストール時に書き込まれたページを削除し、新たにご案内のページを作ったら、表示→表示形式で、デフォルト表示アイテムを選択、でどれを出すか決める。

 左右のポートレットにメニューが出るのはいいのだが、トップ画像のすぐ下にグローバルナビが何行にもわたって出るのは見苦しい。
 ZMIで/FrontierLine/portal_view_customizations/zope.interface.interface-plone.global_sections
を編集。


  <ul id="portal-globalnav"
        tal:define="selected_tab python:view.selected_portal_tab"
        ><tal:tabs tal:repeat="tab portal_tabs"
        >&;t;li tal:define="tid tab/id"
             tal:attributes="id string:portaltab-${tid};
                            class python:selected_tab==tid and 'selected' or 'plain'"
            ><a href=""
               tal:content="tab/name"
               tal:attributes="href tab/url;
                               title tab/description|nothing;">
            Tab Name
            </a></li></tal:tabs></ul>

を削除するとグローバルナビが消える。

 元のhtmlファイルで使っていたCSSは、themingで選んだスタイルのstyles.cssに追加すると反映されるようになる。



 さて、apacheとPHPとMySQLが入ったので、これで日記帳とかはいつでも引っ越せます。次は、htmlで作っていたページの移行です。無料のCMSはいくつかありますが、ploneが良さそうなので使ってみることにします。
 ploneを走らせる場合、sudoコマンドでrootでないユーザーで実行するのですが、FreeBSDにsudoは入っていません。なので先に入れます。
cd /usr/ports/security/sudo
make install

オプションはデフォルトのまま。AUDITのみ選択。
設定はvisudoで行うが、何もしなくてもインストールはできるし使えます。

 plone最新版は4.3.1r1ですが、
libxml2 must be version 2.7.8 or greater; libxslt must be 1.1.26 or greater.
が条件です。最新版のportsを確認してもこれよりバージョン番号は小さいです。ということで、ソースから入れることになります。
 ソースをもらってきましょう。
ftp xmlsoft.org
get libxml2-2.9.1.tar.gz
get libxslt-1.1.28.tar.gz

 libxmlの前にiconvを入れないとダメです。もらってきましょう。
ftp ftp.gnu.org
cd /gnu/libiconv
get libiconv-1.9.2.tar.gz

tar zxvf libiconv-1.9.2.tar.gz
cd libiconv-1.9.2
./configure
make check
make install

tar zxvf libxml2-2.9.1.tar.gz
cd libxml2-2.9.1
./configure
make install

tar zxvf libxslt-1.1.28.tar.gz
cd libxslt-1.1.28
./configure
make install

 準備ができたのでploneを入れます。plone.orgからソースをもらってきます。
tar zxvf Plone-4.3.1r1-UnifiedInstaller.tgz
cd Plone-4.3.1r1-UnifiedInstaller
./install.sh –build-python –password=******* –target=/usr/local/Plone standalone

 ******には初期パスワードを入れます。–passwordを指定しなければインストーラが勝手にパスワードを設定してくれます。

 なぜか1回目は、
Python build has failed.
Installation has failed
になりました。インストールログを見ると、最後の方に、
pybuilddir.txt: No such file or directory
と出ています。
 もう一回同じオプションで./install.shを実行すると、今度は問題なくインストールが終了しました。
 起動します。このバージョンから、ploneではなくplone_daemonが実行ユーザになりました。
sudo -u plone_daemon /usr/local/Plone/zinstance/bin/plonectl start
ps auxして動いていることを確認したら、
http://133.242.169.139:8080/
にアクセス。新しいサイトをつくるかきいてくるので、
サイト名 FrontierLine
説明 Frontier Line
言語 日本語
を選びます。これで、
http://133.242.169.139:8080/FrontierLine
で、サイトを見ることができます。初期パスワードでploneに入った後、ユーザーを作って管理権限を与えてサイト管理者にします。
 停止は、
sudo -u plone_daemon /usr/local/Plone/zinstance/bin/plonectl stop
です。

 自動起動の設定ファイルは、ソースを展開したディレクトリPlone-4.3.1r1-UnifiedInstaller/init_scripts/FreeBSDの下にあります。README.txtの通りに、standaloneの場合は、
cp zope2_10 /usr/local/etc/rc.d
chmod 555 /usr/local/etc/rc.d/zope2_10

 /etc/rc.confに、
zope2_10_enable=”YES”
zope2_10_instances=”/opt/Plone-3.0/zinstance”
を追加します。



 PHPmyadminを入れます。
インストールに先立って、mcryptを入れます。

cd /usr/ports/security/php5-mcrypt
make install

 phpの設定ファイル /usr/local/lib/php/php.iniを変更。

session.save_path = “/tmp”
mcrypt.algorithms_dir=”/usr/local/lib/libmcrypt”
mcrypt.modes_dir=”/usr/local/lib/libmcrypt”

 phpを再インストールします。./configureでmcryptを追加しました。
./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql –enable-mbstring –enable-mbregex –with-libmbfl –enable-pcntl –with-zlib -with-openssl –with-gd –with-freetype-dir=/usr/local –with-curl=/usr/local –with-mcrypt=/usr/local
make install

いよいよPHPmyadminのインストールです。
phpMyAdmin-4.0.6-all-languages.zipを入手、 /home/WWWに置く。
su webadmin
cd /home/WWW
unzip phpMyAdmin-4.0.6-all-languages.zip
mv phpMyAdmin-4.0.6-all-languages phpMyAdmin

 この例ではインストール後のディレクトリをphpMyAdminにしましたが、実際には別の名前にしています。外部に見せる意味はありませんので。
 設定ファイルを作ります。

cd /home/WWW/phpMyAdmin
cp config.sample.inc.php conrig.inc.php

 最初に変更するのは、
$cfg[‘blowfish_secret’] = ‘******’ パスフレーズは適当に決めた。
$cfg[‘DefaultLang’] = ‘ja-utf-8’; ←追加(デフォルト言語)
$cfg[‘Lang’] = ‘ja-utf-8’; ←追加(言語)
$cfg[‘DefaultCharset’] = ‘utf-8’;

$cfg[‘PropertiesIconic’] = TRUE; TRUE又はbothにする。

です。これができたら、http://mydomain/phpMyAdminをブラウザでアクセスし、MySQLのインストール時にコマンドラインで設定したパスワードを使ってログインします。
 まず、パスワードのないユーザとユーザー名が空欄の匿名ユーザーを削除。
 高度な機能の設定をしろといってくるので、examples/create_tables.sqlをパソコンにダウンロード。crreate_tables.sqlをphpMyAdminの画面からインポートします。
 一旦ログアウトし、conrig.inc.phpを編集。

/* Storage database and tables */ 高度な設定のため。
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma__bookmark’;
$cfg[‘Servers’][$i][‘relation’] = ‘pma__relation’;
$cfg[‘Servers’][$i][‘table_info’] = ‘pma__table_info’;
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma__table_coords’;
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma__pdf_pages’;
$cfg[‘Servers’][$i][‘column_info’] = ‘pma__column_info’;
$cfg[‘Servers’][$i][‘history’] = ‘pma__history’;
$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma__table_uiprefs’;
$cfg[‘Servers’][$i][‘tracking’] = ‘pma__tracking’;
$cfg[‘Servers’][$i][‘designer_coords’] = ‘pma__designer_coords’;
$cfg[‘Servers’][$i][‘userconfig’] = ‘pma__userconfig’;
$cfg[‘Servers’][$i][‘recent’] = ‘pma__recent’;
/* Contrib / Swekey authentication */
$cfg[‘Servers’][$i][‘auth_swekey_config’] = ‘/etc/swekey-pma.conf’;

 編集したら保存して再びログインすると、設定が有効になります。

 Safari5.1.9とphpMyAdmin-4.0.6の組み合わせでは、アイコンやロゴが全く出ません。Safariの開発メニューを表示させてエラーコンソールを確認すると、
refuse to load image……because of Content-Security-Policy
というエラーで、画像ファイルが拒否されています。
 libraries/Header.class.phpを開き、public function sendHttpHeaders() の中を、


                header(
                    "X-WebKit-CSP: allow 'self' "
                    . $GLOBALS['cfg']['CSPAllow'] . ';'
                    . "options inline-script eval-script;"
//                    . "img-src 'self' data: "
//                    . $GLOBALS['cfg']['CSPAllow']
//                    . ($https ? "" : $mapTilesUrls)
//                    . ";"

のようにコメントアウトします。これで、safariでアイコンが出るようになります。



 PHPをインストールします。
 PHPの機能をいろいろ使おうとすると、前もって入れておかなければならない定番のライブラリがいくつかあります。順番としては、
libpng
jpeg
freetype
libgd
curl
php
だとうまくいきます。ひたすら、/usr/local/srcにダウンロードしてはインストール、という繰り返しです。一旦手元のパソコンに持って来てしまったものは、ftpでサーバーに突っ込んだ後、root権限で移動させて/usr/local/srcにまとめておきます。

http://sourceforge.net/projects/libpng/files/libpng16/1.6.3/
より。
tar zxvf libpng-1.6.3.tar.gz
cd libpng-1.6.3
./configure –enable-shared –prefix=/usr/local
make install

http://www.ijg.org/ よりjpegsrc.v9.tar.gz
tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
./configure –enable-shared –with-png=/usr/local
make install

http://www.freetype.org/ より
freetype-2.5.0.tar.gz
tar zxvf freetype-2.5.0.tar.gz
cd freetype-2.5.0
env GNUMAKE=”/usr/local/bin/gmake” ./configure –enable-shared
gmake intall

 freetypeはインストールの途中でエラーを起こすと、cleanしてもうまくいかないことがある。展開したのを消して、tar.gzを開くところからやり直せばうまくいく。

http://libgd.bitbucket.org/ から、https://bitbucket.org/libgd/gd-libgd/downloads 経由。
libgd-2.1.0.tar.gz
tar zxvf libgd-2.1.0.tar.gz
cd libgd-2.1.0
./configure –enable-shared –with-png=/usr/local

 gdがpngとjpegを要求するので、gdの前にこの2つを入れています。

http://curl.haxx.se/download.htmlより入手
tar zxvf curl-7.32.0.tar.gz
cd curl-7.32.0
./configure
make
make install

 これで、やっとPHPのインストールに入れます。
tar zxvf php-5.5.3.tar.gz
cd php-5.5.3
./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql –enable-mbstring –enable-mbregex –with-libmbfl –enable-pcntl –with-zlib -with-openssl –with-gd –with-freetype-dir=/usr/local –with-curl=/usr/local
make install

 待たされるのでお茶でも飲みましょう。

 終わったら、/usr/local/apache2/conf/httpd.confに、
LoadModule php5_module modules/libphp5.so
があることを確認。無ければエディタで追加します。変更したら/usr/local/apache2/bin/apachectl restartを忘れずに。

 設定ファイルは、テンプレートをコピーしてきます。
cp /usr/local/src/php-5.5.3/php.ini-production /usr/local/lib/php/php.ini
/usr/local/lib/php/php.iniが設定ファイルになります。
変更箇所は次の通り。

short_open_tag = On
expose_php = Off
error_log = /var/log/php_errors.log

max_execution_time = 30
max_input_time = 3000
memory_limit = 1700M
post_max_size = 1600M

doc_root =”/home/WWW”
upload_tmp_dir = /tmp
upload_max_filesize = 1500M

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off

 変更したら、/usr/local/apache2/bin/apachectl restartしておく。転送ファイルのサイズがやたら大きいのは、アップローダを運用しているから。

<?php
phpinfo();
?>
なるファイルを作ってtest.phpとして保存,ブラウザでアクセスする。設定一覧が表示されたら、apacheもphpも動いている。



 WordPressその他を使うためにMySQLを入れます。これを先にいれておかないと、MySQL対応でPHPをインストールしようとするとコケます。
 portsの最新版はバージョン5.6ですが、5.6から設定ファイルがテンプレートのみになってて、どこで詳細設定をしているのかがさっぱりわかりません。本家サイトも見に行ったのですが、設定例が見つかりません。ですから、5.5を入れることにします。

cd /usr/ports/databases/mysql55-server
make install

 途中のオプションは、SSLのみを指定します。サーバを入れるとクライアントも一緒に入れてくれます。

 自動起動のため、/etc/rc.confに
mysql_enable=”YES”
を追加。一度リブートして、mysqが動いていることを確認。

 設定は、/usr/local/etc/my.cnfで行います。まず、設定ファイルをコピーします。
cd /usr/local/share/mysql
cp my-medium.cnf /usr/local/etc/my.cnf

 コピーしたら次を追加。

[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
character-set-server=utf8

datadir=/var/db/mysql

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

 my.cnfを変更したら、
/usr/local/etc/rc.d/mysql-server restart
で再起動。

 次に、rootユーザーを作ります。
mysqladmin -u root password ******
としてパスワードを設定。******にはパスワードを入れます。

mysql -u root -p
Enter password:
でログインできることを確認。sqlのコマンドラインが出ます。
show variables like ‘char%’;
とやると、文字コードがutf-8になっているかどうか確認できます。
helpとかexitのあとにかならず;入力が必要。SQLなので。
 ここでパスワードのないユーザーの削除とかをやってもいいのですが、すぐにPHPmyadminを入れるので、そっちでやる方が楽なので何もせず抜けます。

 なお、このインストールで、/usr/localの下の各ディレクトリに関連ファイルが突っ込まれます。PostgreSQLのように1カ所にまとまっていません。また、何もしなくてもデフォルトのデータディレクトリは/var/db/mysqlです。
 動かない時のログファイルは、
/usr/local/mysql/data
にあります。

 手動での起動と停止は、
/usr/local/etc/rc.d/mysql-server start
/usr/local/etc/rc.d/mysql-server stop
でできます。



 ファイルは自由出し入れできるようになりましたが、突っ込んだhtmlファイルを表示するには、apache httpd serverを入れなければなりません。また、この日記帳を引っ越すには、MySQLとPHPが必要です。PHPのファイルにアクセスがあった場合、実行結果を返すのもapacheの仕事です。一方、PHPのインストール時には利用するデータベースを指定する必要があります。
 ということで、インストールの順番は、apache→MySQL→PHP→PHPmyadmin(MySQLの管理ツール)となります。

apache

 apache2の最新版を使うことにします。portsではなくソースからのインストールになるので、/usr/local/srcディレクトリを作って、もらってきたソースをまとめることにしました。

ftp ftp.apache.org
cd /pub/apache/httpd
ls 最新版を確認
get httpd-2.4.6.tar.gz

これ以外に、
apache/apr/apr-1.4.8.tar.gz
apache/apr/apr-util-1.5.2.tar.gz
もgetしてきます。httpdのあったディレクトリのサブディレクトリaprの下にあります。

 apacheの前に、libxml2とexpatを入れておく必要があります。こちらはportsから入れてしまいましょう。実は、後でlibxmlをソースから入れる羽目になるのですがそれはそれとして。
cd /usr/ports/textproc/libxml2
make install
/usr/ports/textproc/expat2
make install
で2つともインストール完了。

 apacheのインストール。
cd /usr/local/src
tar zxvf httpd-2.4.6.tar.gz
apache本体を展開したら、aprの関連ファイルをsrclibディレクトリで展開。
cp apr-1.4.8.tar.gz httpd-2.4.6/srclib
cp apr-util-1.5.2.tar.gz httpd-2.4.6/srclib
cd httpd-2.4.6/srclib
tar zxvf apr-1.4.8.tar.gz
tar zxvf apr-util-1.5.2.tar.gz
mv apr-1.4.8 apr
mv apr-util-1.5.2 apr-util
cd ..
/configure –prefix=/usr/local/apache2 –enable-so –enable-mods-shared=all –enable-rewrite=shared
make
make install

 コンパイルが終わるまで暫く待つ。インストールディレクトリは/usr/local/apache2。

 自動起動の準備は、/usr/local/etc/rc.d/apache.shという名前で次の内容のファイルを作り実行許可ビットを立てておく。


#! /bin/sh
#
#  rc file for Apache
#
apachectl=/usr/local/apache2/bin/apachectl

case "$1" in
start)
        if [ -x $apachectl ]; then
                $apachectl start && echo -n ' httpd(apache)'
        fi
        ;;
stop)
        if [ -x $apachectl ]; then
                $apachectl stop && echo -n ' httpd(apache)'
        fi
        ;;
*)
        echo "usage: $0 {start|stop}" 1>&2
        exit 1
        ;;
esac

 設定は、/usr/local/apache2/conf/httpd.conf、変更箇所とか活きているモジュールとかはこんな感じ。

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule xml2enc_module modules/mod_xml2enc.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.soLoad
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

User nobody
Group nobody

ServerAdmin r.hirokawa@frontier-line.org

DocumentRoot “/home/WWW”
<Directory “/home/WWW”>
Options FollowSymLinks MultiViews ExecCGI
AllowOverride All
Require all granted
</Directory>

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

<FilesMatch “\.inc$”>
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch “\.conf$”>
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch “\.func”>
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch “\.php$”>
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch “\.phps$”>
SetHandler application/x-httpd-php-source
</FilesMatch>

ErrorLog “logs/error_log”
CustomLog “logs/access_log” combined

ScriptAlias /cgi-bin/ “/home/WWW/cgi-bin/”

Addtype application/x-httpd-php .php  ←<IfModule mime_module>のところに追加。

<fModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

ServerTokens Prod
ServerSignature Off

AcceptFilter http none
AcceptFilter https none

 最後の2行は、
[core:warn] [pid 1112:tid 34389128192] (2)No such file or directory: AH00075: Failed to enable the ‘httpready’ Accept Filter
というメッセージが毎回出るのを避けるためのもの。http://www.skymerica.com/blog/yotsumoto/arch/2007/06/11/000799.htmlに情報がある。FreeBSDのカーネルにaccf_http.koをロードすれば良いのだが、VPSだとカーネルを触れないので、設定で強制的にAcceptFilterを無効にする。ちょっともったいない気もするけど暇なサーバーだからまあいいかねえ。

起動
/usr/local/apache2/bin/apachectl start
停止
/usr/local/apache2/bin/apachectl stop
設定変えたとき
/usr/local/apache2/bin/apachectl reload
*.confの文法チェック
/usr/local/apache2/bin/apachectl -t

 文法チェックかけて、手動で起動後、ps auxしてhttpdが走っていることを確認。一旦停止させてリブート後、ps auxしてhttpdが居れば成功。