自分へのアクセスができない

「定期的な処理」といえばcronだ。共用のレンタルサーバだと使えないところがほとんどだが、これは便利な機能だ。この機能を使いたいがゆえに、使おうとするサーバは、一応きっちり調査する。ちなみに今、割と使っているのは海外サーバのここ。

3iX

cPanelという管理画面が提供されていて、その中でcronの設定ができる。日本ではあまりメジャーではないが割と使える管理画面だ。あとは、今回の本題PLESKでも使える。

さて定期的に動作させたいプログラムだが、PHPしかできない人にとってはやっぱりPHPで書きたいところ。PHPではコマンドライン版があるので、PHPで完結できるところもありがたい。しかしウェブ用の設定とコマンドライン版の設定が異なることもあったりするし、コマンドライン版そのものが使えないところもあるから厄介。そういうときは、通常通りウェブ用にプログラムを書いておいて、wgetやlynxなどのコマンドラインから使えるブラウザでアクセスするよう設定してやると、定期的な処理ができるようになる。ちなみにwgetなどのブラウザが使えない場合は・・・普通はCGIが使えることが多いので、CGI版PHPで簡単なブラウザを書いてしまう。
だったらCGI版PHPで処理書けば・・・という話になるのだが、これもやはり設定がモジュール版と違うことがあるから・・・。

で、本題。上記の処理を入れたのだが、うまくアクセスしてくれない。PLESKサーバに設置したのだが、なぜか自分へのアクセスで失敗する。
しばらく悩んだ末、自ドメインの名前解決ができていないのでは?、と考えた。で、nslookup・・・。なんと自ドメインのAアドレスが127.0.0.1と返されてしまった。これじゃぁダメだよね(というか、これで動作するように設定してあれば別なんだけど)。仕方ないので/etc/hostsの該当箇所の記述を削除した。これで問題解決。

他のところに影響が出なければいいのだけれど。

メーリングリストを設定する

PLESKはその管理画面からメーリングリストも作ることができる。
ドメインを選択し、メールの管理画面からメーリングリストのタブをクリックしてそこで管理することができる。
まずこの機能、mailmanを使っているのだが、PLESKから管理できるのはメーリングリストの作成削除、ユーザの追加削除だけ。その他の設定はmailmanの専用管理画面から設定しなくてはいけない(ML作成後リスト画面右端のアイコン)。しかもその画面のデフォルトは英語だ。まずこれを日本語にするほうがわかりやすいだろう。変更方法は上段メニューの「Language options」でJapaneseにチェックしいったんSubmit。次にプルダウンから「Japanese」を選択してSubmitすると、見事日本語になる。

初めてメーリングリスト機能を使ったとき、実は動かなかった。ユーザをいくつか作っても、メーリングリストを作り直しても、何をしてもだめ。実は結局mailmanそのものが動いていなかった。メーリングリストの機能が実在するのだからデフォルトで起動していてもよさそうなものなのだが。
仕方がないのでSSHでログインし、以下のコマンドをうった。

/etc/rc.d/init.d/mailman start

これで無事完了。本来ならPLESKのサービス管理の画面で操作できればいいはずなのだが・・・。SSHでログインしないといけないってのはややナンセンスな感がある。
それでも、まぁなんとかこれでいろいろできるようになる。あとはmailmanの設定をしてやるだけだ(これがまた難解なのだが)。

Pleskサーバで発生したPHPの問題

とある案件で、mojaviで構築したシステムをPleskを使った共用サーバへ移行できるかどうか調査をおこなった。開発環境はmojavi + QuickForm + Smarty。

まず第一の問題。PEARのインストールができない。これはおそらくsafe_modeの設定がされているためで、外部のファイルを読み取ることができない、というようなエラーだった。PEARを利用するときは基本的に、http://go-pear.orgからその環境専用のPEARをインストールしているのだが、これができないことが判明した。仕方がないので別サーバで取得したPEARのファイル群を全て手動でコピー。

第二の問題。Smartyで一時ファイルが作成できない。これは単に「一時ファイルが作成できない」ということではない。自分の環境ではmojaviを使う際、Smartyの一時ファイルをモジュールごとにディレクトリを作成してそこに保存している(テンプレートの名前の重複を防ぐため)。その際モジュール用のディレクトリは、プログラムでそのあるなしを確認し、ない場合に自動で作成しているようにしている。どうやらこれが問題らしい。自動作成されたディレクトリ内にファイルは作成されているが、作成されたファイルは全て0バイトのファイルになっていた。しかも、いつもの%%ushd〜〜みたいなファイル名ではなかった。
この問題は各モジュール用のディレクトリを自動生成するのではなく、あらかじめ作成しておくことで回避できることがわかった。

今回の開発は元々「開発ありき」で始まったので(サーバが未定だった)やむをえないのだが、本番サーバ環境というのは大切だとあらためて実感した。いい勉強になった。

plesk使用時のMySQL管理ユーザとパスワード

Pleskを使ったサーバでMySQLのデータを一括でバックアップしたいと思ったが、ここで問題。rootのパスワードがわからない。
そもそも普通のRedHatとかならデフォルトはパスワードが設定されていないけど、こちらは試してみたらパスワードがないとアクセスできない。Linux
のrootパスワードでも上手くいかない。
よくよく調べてみると、ユーザadminというのがあってそれを使うらしい。パスワードは/etc/psa/.psa.shadowに記述があるとのこと。
で、ユーザ名adminでログインできて、全てのデータベースをバックアップすることができました。ちなみにMySQLユーザadminのパスワードは、Linuxユーザのrootパスワードが設定されていました。

SSL環境下で外部ディレクトリaliasとphp

この前、PLESKでSSLの設定をした。これもまた簡単で、ますます使いやすさに心惹かれる思い(設定方法はまた今度メモする)。
このサーバ、バーチャルドメインでいくつかドメインを動かしているのだが、SSLは一つの証明書を使いまわすことになる。そこで各ドメインの領域に対してalias設定を施すのだが、それだけではphpを使うことはできない。で、以下のように設定した。以下(main_domain)はSSLを使用するドメイン名、(virtual_domain)はバーチャルドメイン名で読み替える。

変更は以下のファイルにおこなった。
/var/www/vhosts/(domain_name)/conf/vhost_ssl.conf

記述内容は以下の通り。
Alias /(仮想ディレクトリ名)/ "/var/www/vhosts/(virtual_domain)/httpdocs/"
<Directory "/var/www/vhosts/(virtual_domain)/httpdocs/">
<IfModule sapi_apache2.c>
php_admin_flag engine on
php_admin_flag safe_mode off
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
</IfModule>
</Directory>

書き換え後、以下のコマンドを実行し、apacheを再起動すればOK。
/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=(main_domain)


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net