Mountain LionからMarvericksにアップグレードするとWordPressが動かなくなった

Mac mini上のMountain Lionで動かしていたWordPressが、Mountain LionからMavericksにアップグレードすると動かなくなった。

とはいっても、これは想定内。
年度末で少し時間ができたので今のうちにアップグレードすることにした。

 

WordPressは、ApachePHPMySQLを使うので、これらの設定状況を確認しながら、修正していった。

 

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

 

ここまでは設定ApachePHPの設定ファイルを元に戻しただけ。 

 

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

445-0x7fb950d262a0.anonymous.httpd

444-org.apache.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をしゃべることができるとのこと。というわけで、運用中のCentOSUbuntuSambaのバージョンを調べて見た。

バージョンを調べるには、以下のコマンドを使う。

$ smbd  -V

結果は、

CentOS 6.5         ...  3.6.9-167.el6_5

Ubuntu 12.04 LTS ...  3.6.3

ということでどちらもSMB2.0に対応している。ただし、Sambaの設定をいじらないとSMB2.0はしゃべらない。

Linuxでの設定は、/etc/samba/smb.confの

[global]

 max  protocol = SMB2

を追加する。

MacPortsのアップグレードコマンド

最近はHomebrewを使ってますが、一台だけMacPortsを使っているのがあります。時々MacPortsをアップデート&アップグレードしてやりますが、時々しかしないのでコマンドをよく忘れる。

メンテナンスは基本的に以下の3つのコマンドを実行すればよい。

sudo port selfupdate:MacPort本体のアップデート

sudo port outdated:MacPortのリスト更新

sudo port upgrade installed:MacPortでインストしたアプリのアップデート

PHPでforkする方法(は結構めんどくさい)

以下のPHPプログラムを作成してプロセスのforkを試してみた。

このPHPプログラム(test.php)をコマンドライン($ php  test.php)とApache経由で実行してみた。結果は、

                                                         コマンドライン                     Apache経由

CentOS 6.5           成功          失敗

Ubuntu 12.04 LTS        失敗          失敗

Mac OS X Mountain Lion     失敗          失敗

 

ネットで調べると、pcntl系のライブラリはCGIPHPで実行しないといけないとのこと。また、PHPコンパイル時に『--enable-pcntl』オプション付きでコンパイルしないといけないらしい。つまりMacPHPはこのオプション付きでコンパイルされていないようだ。

<?php  phpinfo(); ?>で調べて見ると、Apache経由ではいずれのOSでもモジュール版のPHPが起動していた。一方、コマンドラインから実行するとCGI版が起動する。

だから、CentOSUbuntuPHPの設定で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

を実行した。