Mountain LionからMarvericksにアップグレードするとWordPressが動かなくなった
Mac mini上のMountain Lionで動かしていたWordPressが、Mountain LionからMavericksにアップグレードすると動かなくなった。
とはいっても、これは想定内。
年度末で少し時間ができたので今のうちにアップグレードすることにした。
WordPressは、Apache、PHP、MySQLを使うので、これらの設定状況を確認しながら、修正していった。
Apacheについてやったこと
$ sudo mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf.Mavericks.ORG
$ sudo cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
PHPについてやったこと
$ sudo cp /etc/php.ini-5.2-previous /etc/php.ini
ここまでは設定ApacheとPHPの設定ファイルを元に戻しただけ。
MySQLについてやったこと
MySQLは/usr/localにインストールしてあるので、今回Mavericksにアップグレードしたのとは無関係のはずだが、ログを見ると、/usr/local/mysql-5.6.10-osx10.7-x86 へのシンボリックリンクがないため、/usr/local/mysql/support-files/mysql.serverが見つけられずに起動に失敗している。というわけで、以下もやった。
$ sudo ln -s /usr/local/mysql-5.6.10-osx10.7-x86 /usr/local/mysql
以上で、WordPressが起動した。
まあAppleのサポート外の使い方をしているので仕方ないことだけど、毎回こんなのをするのはちょっと面倒だなぁ。
MySQLメモ
MySQLはLaunchdから起動するような設定にはなっていない。/etc/hostconfigで
MYSQLCOM=-YES-
を指定することでMac OS Xのブート時にMySQLのデーモン(mysqld)が起動する。
Marvericksからlaunchd.plistの仕様が変わったようだ
Mac OS X MavericksでApacheのLaunchdの設定を調べた。
$cat /System/Library/LaunchDaemons/org.apache.httpd.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.apache.httpd</string>
<key>EnvironmentVariables</key>
<dict>
<key>XPC_SERVICES_UNAVAILABLE</key>
<string>1</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
</array>
<key>OnDemand</key>
<false/>
</dict>
</plist>
となっている。
ここで、
<key>Disabled</key>
<true/>
のように、DisableがtrueになっていてもApacheが起動する理由ではまった。
$ man apachectl (の一部)
-w Overrides the Disabled key and sets it to false. In previous versions, this option would modify the configuration file. Now the state of the Disabled key is stored elsewhere on-disk.
となっており、以前のバージョンでは同設定ファイルの有効/無効をDisableキーで制御していたが今ではDisableかどうかの情報はplistファイルには保存されなくなっている。
$man launchd.plist (の一部)
Disabled <boolean>
This optional key is used as a hint to launchctl(1) that it should not submit this job to launchd when loading a job or jobs. The value of this key does NOT reflect the current state of the job on the running system. If you wish to know whether a job is loaded in launchd, reading this key from a configuration file yourself is not a sufficient test. You should query launchd for the presence of the job using the launchctl(1) list subcommand or use the ServiceManagement framework's SMJobCopyDictionary() method.
となっており、loadされているかどうかは
$ sudo launchd list
で調べる必要があるようだ。
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
$ sudo launchctl list | grep httpd
となっており、確かにApacheがloadされていることがわかる。
ちなみに、Mountain Lionまでは/System/Library/LaunchDaemonsディレクトリにplistファイルを置いて、それをlaunchctl load -w することでDisableキーの値を操作する仕組みになっていた。
Windows 7にフリーのX Serverをインストールした。
わざわざMacを起動しなくても、ほぼ常時起動しているWindows 7でXを使えるようにするのが目的。
XmingはPublic Domain版(Xming-6-9-0-31)をインストールすることにした。
まずは、
http://sourceforge.jp/projects/sfnet_xming/releases/ や
のサイトから、
Xming-6-9-0-31-setup.exeと
Xming-fonts-7-5-0-70-setup.exe
をダウンロード。デフォルト設定でインストール。
が、設定がわかりにくいのでイマイチ。
※Xming-6-9-0-31は、最終更新日時が2007年11月。
一方、最新版(Xming-7.5.0.76)は2014年2月。ただし、最新版を使うにはDonation(£10 = 約1400円)が必要。最新版は、
http://www.straightrunning.com/XmingNotes/
からダウンロードできる。
やっぱりMacのXQuartzの方がパフォーマンスもいいし、インストール・設定も簡単なのでXQuartzを使い続けることにした。
MavericksからSMB2.0が優先プロトコルになった。
Macのファイル共有プロトコルとして長い間使われてきたAFPも、Mavericksから優先順位が下がり、SMB2.0が最優先のファイル共有プロトコルとなった。
LinuxでSMBといえばSamba。そのSambaはバージョン3.6からSMB2.0をしゃべることができるとのこと。というわけで、運用中のCentOSとUbuntuのSambaのバージョンを調べて見た。
バージョンを調べるには、以下のコマンドを使う。
$ smbd -V
結果は、
ということでどちらもSMB2.0に対応している。ただし、Sambaの設定をいじらないとSMB2.0はしゃべらない。
Linuxでの設定は、/etc/samba/smb.confの
[global]
max protocol = SMB2
を追加する。
PHPでforkする方法(は結構めんどくさい)
以下のPHPプログラムを作成してプロセスのforkを試してみた。
このPHPプログラム(test.php)をコマンドライン($ php test.php)とApache経由で実行してみた。結果は、
ネットで調べると、pcntl系のライブラリはCGI版PHPで実行しないといけないとのこと。また、PHPのコンパイル時に『--enable-pcntl』オプション付きでコンパイルしないといけないらしい。つまりMacのPHPはこのオプション付きでコンパイルされていないようだ。
<?php phpinfo(); ?>で調べて見ると、Apache経由ではいずれのOSでもモジュール版のPHPが起動していた。一方、コマンドラインから実行するとCGI版が起動する。
だから、CentOSとUbuntuはPHPの設定でCGI版を使うようにすれば、うまくいくはず。
なんだけど、設定が面倒そうだったので、また後日暇なときでもやってみよう。
<?php
echo "start.....\n";
$pid = pcntl_fork();
if ($pid == -1) {
die('fork できません');
} else if ($pid) {
// 親プロセスの場合
pcntl_wait($status); // ゾンビプロセスから守る
echo "parent end\n";
exit;
} else {
// 子プロセスの場合
sleep(4);
echo "child end\n";
$cmd = "pwd";
system($cmd, $arr);
var_dump($arr);
exit;
}
?>
ntpサーバの脆弱性をついたDDoS攻撃が続いている
http://jvn.jp/vu/JVNVU96176042/?utm_source=twitterfeed&utm_medium=twitter
などで注意喚起されているように、今年に入ってNTPの脆弱性をついた攻撃が活発なようだ。
そこでnmapを使って職場のサーバにポートスキャンしてみた。
最初、
$ nmap IPアドレス
を実行したが、ntpサーバは動いてなかったので安心したが、NTPはUDPを使っているので、
$ sudo nmap -sU IPアドレス
のようにしないといけないようだ。(かつ、このようにroot権限での実行が必要。)
で、やってみると、多くのLinuxサーバ(Cent OS)でntpdが動いていた。そもそも何台もntpdを動かす必要はない。止めてしまおう。
というわけで、サーバにログインして、rootで
# chkconfig ntpd off
を実行した。