FreeBSD

FreeBSD7.1にWordpressをインストール


FreeBSD7.1でウェブサーバーを構築してWordPressをインストールするまで

apacheのインストール


# cd /usr/ports/www/apache22
# make config install clean  

httpd.confの設定
/usr/local/etc/apache22/httpd.conf
DocumentRoot "/home/user/public_html" ←ユーザーディレクトリに設定してるがデフォルトでもOK
DirectoryIndex index.html   
AddHandler cgi-script .cgi

<Directory />
Options ExecCGI FollowSymLinks Includes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

ServerName hogehoge.ddo.jp:80 ←コメントを外す場合はアドレスがDNS解決できてないとエラーとなる
[/var/log/httpd-error.log]
hostname nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of "hogehoge.ddo.jp"

[/etc/hosts]
192.168.1.* hogehoge.ddo.jp  ←追加する

[etc/rc.conf]
apache22_enable="YES"

/usr/local/sbin/apachectl configtest     構文チェック
/usr/local/sbin/apachectl start        apacheを起動

起動時に警告が出る場合
[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

[httpd.conf] 以下を追加
AcceptFilter http none
AcceptFilter https none

PHP5のインストール


# cd /usr/ports/lang/php5
# make config   APATCH, CGI, MULTIBYTE
# make install clean
phph5-extensions
# cd /usr/ports/lang/php5-extensions
# make config
デフォルトに下記を追加
FTP          MYSQLi
GD          OPENSSL 
MBSTRING     ZIP
MCRYPT       ZLIB
MYSQL         ※PCREは5.3以降?本体に統合されたので表示なし(デフォルトで有効) 
# make install clean
option for php5-gd
JIS
# make rmconfig    以前に選択したオプションを削除してやり直す場合         

php.iniを作成
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
                      ↑
            無い場合はdevelopment もしくは production
php.iniを編集
http://www.kishiro.com/FreeBSD/php5.htmlを参照させて頂きました
[/usr/local/etc/php.ini]
default_charset = UTF-8
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
date.timezone = Asia/Tokyo   5.3以降はdata.timezonを設定しないとエラーでます
[/usr/local/etc/apache22/httpd.conf]
LoadModuleの一番下に1行が追加されていることを確認
LoadModule php5_module   libexec/apache2/libphp5.so

<IfModule dir_module>
DirectoryIndex index.html index.htm  index.php index.pl index.cgi ←環境に合わせて追加
</IfModule>

<IfModule mime_module>↓2行を追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
↓このあたりもコメント外しておく
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
/usr/local/sbin/apachectl configtest    構文チェック
/usr/local/sbin/apachectl restart      apacheを再起動

phpの稼動テスト
[test.php]を作成して設置
<?
php phpinfo();
?>
ブラウザでtest.phpにアクセスしてロゴと設定情報が表示されればOK

※モジュール画面で mysql, mysqli, zlib の項目があることを確認(wordpressに必須)

MySQLのインストール


FreeBSD6.0以上では mysql50-client がすでに標準でインストール済みなので
古いバージョンはアンインストールする (7.1 Releaseではインストールされてない)
# cd /usr/ports/databases/mysql51-server
# make config-recursive
# make WITH_CHARSET=binary WITH_XCHARSET=all install clean

# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf  mycnfを作成
# chmod 644 /usr/local/etc/my.cnf

my.cnfを編集
[mysqld] 文字コードをUTF-8にセット
character-set-server = utf-8
[client]
default-character-set = utf-8
[mysqldump] 
default-character-set = utf-8
[mysql]
default-character-set = utf-8
federated = 1 有効にしないとmysql Plugin 'FEDERATED' is disabled エラーを吐く
etc/rc.conf
mysql_enable="YES"
パスワードの設定
# /usr/local/bin/mysql_install_db          データベース初期化
# chown -R mysql:mysql /var/db/mysql      所有権限の設定
# chmod -R 755も必要?

# /usr/local/etc/rc.d/mysql-server start     mysql-serverを起動

rootパスワードを設定する
# mysqladmin -u root -h localhost password 'XXXXX'
設定後は -u root ではログインできない( -u root -p のみ)

mysqlにログインして設定する
# mysql -u root                   クライアントからrootでログイン
mysql > use mysql;
mysql > set password for root@localhost=password('XXXXX'); rootパスワードの設定
mysql> flush privileges;
mysql > exit;

パスワード設定と -u root -p ログインがうまくいかない場合(たぶん多いはず)
初回起動でrootパスワードがうまく設定できずにログアウトすると非常に面倒です。
その他、パスワードを忘れてしまったり、入力ミスのまま設定してしまった場合など
下記の方法でrootパスワードをリセットできます(これが一番簡単&確実な方法)

# mysqld_safe --skip-grant-tables &
# mysql -u root mysql
mysql > UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
mysql > flush privileges;
mysql > exit;
# mysql -u root -p       設定したパスワードでのログインとそれ以外でログインできない事を確認

データベースの作成


# mysql -u root -p
mysql> create database wordpress;      wordpress用のデータベースを作成
mysql> flush privileges;               権限テーブルの再読み込み
mysql> show databases;              データベースを表示
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| test                | 
| wordpress       |           ←作成したデータベースが反映されている
+--------------------+
4 rows in set (0.00 sec)

mysql> drop database test;      test用データベースを削除
mysql> show databases;       

+--------------------+
| Database           |
+--------------------+
| information_schema |         削除されてる事を確認
| mysql              |   
| wordpress       | 
+--------------------+
3 rows in set (0.00 sec)

mysql> delete from user where user='';    初期アカウントの匿名ユーザを削除
mysql> exit
Bye

通常の設定はここまで

その他のコマンド
mysql> delete from mysql.user where user!='root' OR host!='localhost';
root@localhost 以外のすべてのユーザを削除

mysql> grant all on wordpress.* to user@localhost identified by 'XXXXX';
"wordpress"に全権限のある"user"を作成

mysql> grant all privileges on *.* to user@localhost identified by 'XXXXX' with grant option;
全権限および付与も可能な (初期状態のrootと同じ) ユーザー "user"を作成

mysql> grant all privileges on *.* to user@localhost identified by 'XXXXX';
全権限のあるユーザー"user"を作成

mysql> revoke all privileges on wordpress.* from user@localhost;
userのwordpressに関する全権限を削除

mysql> revoke all privileges on *.* from user@localhost;
userのすべての全権限を削除

mysql> drop user user@localhost;
ユーザー"user"を削除

perl用DBモジュールの導入
mysql コマンドだけでは面倒な場合の作業スクリプト用のDBモジュール
# portinstall databases/p5-DBD-mysql51
※Perlがインストールされてない場合は先にインストールしておく

phpMyAdminのインストール(コンソールから設定するなら不要)


#cd
/usr/ports/databases/phpmyadmin
#make
config     MySQL関連を含めて Su~以外はすべて入れる
#make
install clean

config.defaul.phpの作成
# cp /usr/local/www/phpMyAdmin/libraries/config.default.php /usr/local/www/phpMyAdmin/config.inc.php
# cd /usr/local/www/phpMyAdmin
# chmod 644 config.inc.php

config.inc.phpを編集
$cfg['PmaAbsoluteUri'] = 'http://192.168.**/phpmyadmin/'; IPアドレスの変更
$cfg['PmaNoRelation_DisableWarning'] = false; → true;に変更
$cfg['blowfish_secret'] = '********';    MySQLのパスワード
$cfg['Servers'][$i]['auth_type'] = 'cookie';
 //$cfg['Servers'][$i]['user'] = 'root';    コメントアウト
 //$cfg['Servers'][$i]['password'] = '';   コメントアウト
$cfg['DefaultLang'] = 'ja'; 1929行
$cfg['DefaultCharset'] = 'euc-jp';

apacheのドキュメントルートに phpMyAdminディレクトリのsymlinkを作成
# ln -s /usr/local/www/phpMyAdmin /home/user/public_html/phpmyadmin
# chown -R www:www /usr/local/www/phpMyAdmin       所有権限の付加
# chmod 777 /usr/local/www/phpMyAdmin ↑でダメな場合は実行権限の付加

http://192.168.**/phpmyadmin/ にブラウザでアクセス
ログイン画面が表示されたらrootでログインする

mcryptが無効の警告が出る場合
[php.ini] 685行目
;extensions=php_mcrypt.dll  コメントアウトを外す
↑項目がない場合はphp5-extensionsをmcryptオプションを付加して再インストール

リンクテーブル処理の追加機能が無効の警告が出る場合
[config.inc.php] 48行目
$cfg['PmaNoRelation_DisableWarning'] = false; → true;

sambaのインストール


# cd /usr/ports/japanese/samba3/
# make config
LDAP           QUOTAS
ADS            UTMP
CUPS           PAM_SMBPASS
WINBIND         POPT
ACL_SUPPORT
# make install clean
# rehash

/etc/rc.conf
samba_enable="YES"

cp /usr/local/etc/smb.conf.sample /usr/local/etc/smb.conf  smb.confを作成
smb.confを編集

ユーザー・ホームのみ共有の場合(通常はこれでOK)
[global]
workgroup = Mshome       ワークグループ名
server string = Samba      サーバーネーム
hosts allow = 192.168.1.     許可するアドレス
display charset = UTF-8    日本語文字コード
unix charset = UTF-8      日本語文字コード
dos charset = CP932       Windows日本語文字コード

# smbpasswd -a user        ユーザー "user"(FreeBSDのユーザー名)を作成
New SMB password:         パスワードを入力
Retype new SMB password:    もう一度入力
unable to open passdb database. 初回ユーザー作成時は表示される(2度目以降は表示なし)
Added user user

# /usr/local/etc/rc.d/samba start   Sambaを起動

Windowsからログオンしてディレクトリを確認する

パスワードを変更する場合
変えたいユーザーでログインして smbpasswd を -a 引数なしで実行
もしくはrootで
# smbpasswd ユーザー名

Windows側からファイルのフルアクセスをする場合
"user"ディレクトリにapacheのドキュメントルートのsymlinkを作成
(ドキュメントルートをユーザーディレクトリに変更してる場合は不要)
# ln -s /usr/local/www/apache22/data /usr/home/user/httpdroot
# chmod -R 777 /usr/local/www/apache22/data   フルアクセスを許可

webminのインストール(ブラウザから設定しなければ不要)


インストールの準備
OpenSSL, P5-Net-SSLey, syslog-ng をインストールしておく
# cd /usr/ports/security/openssl
# make config     i386 optimized
# rehash
# cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf ←設定しなくても可
# cd /usr/ports/security/p5-Net-SSLeay
# make install clean
# rehash
# cd /usr/ports/sysutils/syslog-ng
# make install clean  オプションなし
# rehash

webminインストール
# cd /usr/ports/sysutils/webmin
# make install clean  オプションなし
# rehash
# /usr/local/lib/webmin/setup.sh     セットアップ・シェルを起動
ユーザー:admin パスワード:******   パスワード以外はデフォルトでエンター
Use SSL:YES

/etc/rc.confに追加
webmin_enable="YES"

https://localhost:10000/   再起動後ブラウザでadminでログオンできることを確認

SSLの設定はwebminから変更可
webminにログイン 「Webmin」→「Webmin設定」→「SSL暗号化」にチェックする
一度ログアウトすれば、次回から https://localhost:10000/ でログイン可能

webalizerのインストール(アクセス解析しなければ不要)


# cd /usr/ports/japanese/webalizer
# make config  オプションなし
# make install clean

設定ファイルの作成
# cp /usr/local/etc/ja-webalizer.conf-dist /usr/local/etc/ja-webalizer.conf

[ja-webalizer.conf]
LogFile /var/log/httpd-access.log          apacheのログのパス(httpd.confに記載)
OutputDir  /usr/home/user/public_html/log   アクセス・ログの出力先(DocumentRoot/log)
Incremental yes                      ログの分割を許可
HostName www.example.ddo.jp             ホストネーム
HTMLExtension html                   出力するHTMLの拡張子
VisitTimeout 1800                     30分以内の再アクセスは1アクセスにカウント
MangleAgents 0                      ユーザーエージェントの詳細表示
ReallyQuiet yes                      エラー出力をしない

# /usr/local/bin/ja-webalizer             webalizerを起動してログを出力
http://localhost/log                   ブラウザでアクセスすれば解析結果を閲覧できる

アクセス解析の自動更新
cronにwebalizerを設定する場合
/etc/crontab
0 * * * * root /usr/local/bin/ja-webalizer     毎時0分にwebalizerを実行

シェルスクリプトを使う場合
[webalizer.auto.sh] ←適当なファイル名
#!/bin/sh
/usr/local/bin/ja-webalizer

出力ディレクトリ以外に設置する (ログ削除時に誤って一緒に削除しないため)
/usr/home/user/public_html/webalizer.auto.sh

cronにスクリプト処理を設定
/etc/crontab
0 * * * * root /usr/home/user/public_html/webalizer.auto.sh   毎時0分にwebalizer.auto.shを実行

FTPの設定


標準のftpdの場合
/etc/rc.conf
inetd_enable="YES"

/etc/inetd.conf    
ftp stream tcp nowait root /usr/libexec/ftpd  ftpd -l  1行目のコメントを外す
shutdown -r now      再起動後にFTPが有効

WordPressのインストール


公式サイトからzipアーカイブをダウンロード解凍して
wordpressフォルダごとをFTPかsambaでサーバー(例)192.168.1.2にアップロード
ブラウザで http://192.168.1.2/wordpress/wp-admin/install.php にアクセスすると
新規ブログのインストール画面が表示されるので順序にしたがって作成する

ドメインURLの設定


通常 WordPressを自宅サーバに設置した場合のデフォルトURLは
http://192.168.1.2/wordpress/のようにローカルIPで設定されます。
これではローカル以外の外部ネットワークからはアクセスできません。
固定ドメインやDDNSサービスで取得したドメイン名に変更します。


これでインターネットからのアクセスが可能になります。

ローカルエリアからもIPアドレスでなくドメイン名でアクセスしたい場合は
ブラウザでプロクシ経由でアクセスするか、もしくはクライアント側PCの
hosts:Windowsの場合(C:\WINDOWS\system32\drivers\etc\hosts)に
以下の1行を追加します
192.168.1.2 www.hogehoge.ddo.jp ←(例)ローカルIPアドレスが192.168.1.2でドメイン名がwww.hogehoge.ddo.jpの場合
hostsを書き換えたPCを再起動すればドメイン名でアクセスできます

※事前にサーバー側のローカルIPアドレスは固定しておくこと

DDNSの自動更新


DDNSで運用する場合は定期的に変更するグローバルIPアドレスを
サービス側のサーバーにログインして更新しなければなりません。
Perlスクリプトを使ってIPの定期更新を自動化します。

ddo.jpのIPアドレス自動更新スクリプト
http://vine-linux.ddo.jp/linux/ddns/ipupdate2.php

wgetを使用するので事前にインストールしておきます
# cd /usr/ports/ftp/wget
# make config
# make install clean

[ipchk.pl]
#!/usr/bin/perl
#
$CRT_IPF = '/usr/local/www/ddns/CRT_IP.dat';
$NEW_IPF = '/usr/local/www/ddns/NEW_IP.dat';
$LOG = '/var/log/ddns.log';

open INPUT,"$CRT_IPF";
$CRT_IP=<INPUT>;
close INPUT;

system("/usr/local/bin/wget -q -O $NEW_IPF http://info.ddo.jp/remote_addr.php");
open(INPUT,$NEW_IPF);
$c = <INPUT>;
$stp = index($c,"REMOTE_ADDR:")+12;
$edp = length($c);
$NEW_IP = substr($c,$stp,($edp-$stp));
close(INPUT); 

if ($NEW_IP ne "" and $CRT_IP ne $NEW_IP) {
open (OUTPUT ,">$CRT_IPF");
print OUTPUT $NEW_IP;
close OUTPUT;

print "IP Address update: $CRT_IP to $NEW_IP\n";
system("/usr/local/bin/wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=ユーザID&pw=パスワード'");  

$now_string = localtime;
open (OUTPUT ,">>$LOG");
print OUTPUT "$now_string DDNS IP Address Updated. $CRT_IP to $NEW_IP\n";
close OUTPUT;
}
ディレクトリを作成して関連ファイルを設置します(datは空ファイルでOK)
/usr/local/www/ddns/ipchk.pl
                CRT_IP.dat
                NEW_IP.dat

crontabに以下の2項目を設定
/etc/crontab

 */10 * * * * root perl /usr/local/www/ddns/ipchk.pl
 10分ごとにipchk.pl を実行する

 00 5 * * 0 root rm -f /usr/local/www/ddns/CRT_IP.dat
 毎週・日曜日の午前5時に CRT_IP.dat をいったん削除して
 次回 ipchk.pl 実行時に必ずIPアドレスを更新するようにする

自動アップデートとFTPによるテーマ変更/削除を有効にする


FTPがインストール・設定されていることを確認
wp-config.phpにFTPパスを追加  ※フルパスではなくFTPにログインしたディレクトリからのパス

define('FTP_BASE','/public_html/wordpress/');
define('FTP_CONTENT_DIR','/public_html/wordpress/wp-content/');
define('FTP_PLUGIN_DIR','/public_html/wordpress/wp-content/plugins/');

アップロードディレクトリ /wp-content/uploads を作成する
ディレクトリのパーミッションを 757 または 777 に設定

管理ページ [設定] > [その他の設定]
「アップロードするファイルの保存場所」を wp-content/uploads に設定
「アップロードしたファイルを年月ベースのフォルダに整理」のチェックを外す
[変更を保存]をクリックして保存

「ディレクトリの作成に失敗しました」のエラーが出る場合
設置ディレクトリのオーナー権とパーミッションを変更
chown -R www:www /usr/home/user/public_html/wordpress
chmod -R 777 /usr/home/user/public_html/wordpress

Missing zlib extensions エラー出る場合
zlibインストールとapache/php情報画面でzlibの設定を確認する
もしインストールされてない場合はzlibのオプションを付加して
php5-extensionsを再インストールする

これであなたのWordPressブログが完成しました!おつかれさまでした

最終更新:2016年05月07日 00:09