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 以前に選択したオプションを削除してやり直す場合
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 ↑でダメな場合は実行権限の付加
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"
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 エラー出力をしない
アクセス解析の自動更新
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のインストール
ドメイン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の定期更新を自動化します。
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