tesuto
削除しますた
OpenPNE3インストールメモ
環境情報
とあるVPSサーバです。。
環境準備
全然やってなかったのでいろいろ面倒でした
yumのレポジトリを追加
- remi
cd /etc/yum.repos.d/ wget http://rpms.famillecollet.com/enterprise/remi.repo
- epel
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
PHP5.3のインストール
yum --enablerepo=epel install libedit yum --enalberepo=remi install php yum --enablerepo=remi install php-mbs* php-XML* php-pcre* 他にもいろいろ OpenPNEに必要なパッケージを。 yum --enablerepo=remi install php-mysql
依存性の問題でインストールされない・・
yumは「依存性無視」というオプションがないそうなので
- ダウンロードだけできるutilityをインストール
yum install yum-utils
yumdownloader --enablerepo=remi php-mysql
rpmで依存性を無視(--nodeps)してインストール
rpm -ivh --nodeps php-mysql-5.3.5-1.el5.remi.1.i386.rpm
PHPからMysqlに繋がらない・・・
apacheのエラーログを見ると
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mysql.so' - libmysqlclient.so.16: cannot open shared object file: No such file or directory in Unknown on line 0
依存性を無視してphp-mysqlを入れたが、php-mysql同梱のmoduleはlibmysqlclient.so.15で、libmysqlclient.so.16が必要なようだ・・
OpenPNEのインストール
ファイルの配置
- インストールしたいディレクトリに移動
cd /usr/local
- zipファイルをダウンロード
wget http://github.com/openpne/OpenPNE3/zipball/OpenPNE-3.2.7.4
証明書がナントカカントカ・・
無視する
wget http://github.com/openpne/OpenPNE3/zipball/OpenPNE-3.2.7.4 --no-check-certificate
- 解凍 → リネーム
(pwd → /usr/local) unzip openpne-OpenPNE3-OpenPNE-3.2.7.4-0-g9e16c04.zip mv openpne-OpenPNE3-9e16c04 openpne
- ドキュメントルートにシンボリックリンクを配置
ln -s /var/www/html/pnesns /usr/local/openpne/web
やっとインストールだ・・
./symfony openpne:install
あれ?いきなりエラー
PHP Warning: require_once(/usr/local/openpne/config/ProjectConfiguration.class.php): failed to open stream: No such file or directory in /usr/local/openpne/symfony on line 13
ProjectConfiguration.class.php がないみたい。sample付きがあったのでそれをコピー
cp ProjectConfiguration.class.php.sample ProjectConfiguration.class.php
あれあれ?またエラー
Installation of "opAuthMailAddressPlugin" plugin failed: unable to unpack /usr/local/openpne/cache/.pear/opAuthMailAddressPlugin-1.1.4.1.tgz
これはPHP5.3だと起こるエラーらしい。(OpenPNE同梱のPEARのtar.phpが古い)
cp /usr/share/pear/Archive/Tar.php /usr/local/openpne/lib/vendor/PEAR/Archive/Tar.php
さて、もう一度
./symfony openpne:install
できたみたいだ・・けど
あららら、、なにやらWarnが
Warning: symlink(): No such file or directory in /usr/local/openpne/lib/vendor/symfony/lib/task/sfFilesystem.class.php on line 224
これはhttpd.confでのmod rewriteの許可がないと出るそうです
<Directory "/var/www/html/pnesns"> AllowOverride All </Directory>
アクセスしてみる
http://myRentalServer/pnesns/
とりあえずログイン画面はでた。
今日はここまで。
OpenPNE3+sendmail でケータイメール投稿に挑戦
訳あって、調べてみました。sendmailは全く触ったことないのですが・・
先人のみなさんのやり方を確認
ググるといろいろ出ますが、Ver2の情報が多いようです。
参考にさせていただいたのはこちら。
[OpenPNE] sendmail で携帯からのメール投稿を設定する方法 | Sun Limited Mt.
sendmailについてはこちら。ドメイン名やサンプルのメアドが素晴らしいです。komo繋がりということで。
http://www.komonet.ne.jp/~linux/sendmail/gaiyou.htm
まずは情報を列記
とりあえず、整理する準備としてつらつら書いてみます。
sendmail側と思われるもの
- /etc/mail/local-host-names
- 受け取るべきドメイン名の一覧を記述しておくファイル。ホスト名と異なる場合など。
sns.example.com
- /etc/mail/virtusertable
- メールアドレスを見て配送先を振り分ける、バーチャルユーザーテーブル
@sns.example.com sns-ktai@example.com
- virtusertable を変更後は下記コマンドを実行して設定を反映させてください。
- これは定義ファイルを.dbファイルに反映させパフォーマンスを上げるため、と解釈しました
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
sns-ktai: "| php /path/to/openpne/bin/mail.php"
- aliases を変更後は下記コマンドを実行して設定を反映させてください。
- makemapと似たようなもの?と解釈
# newaliases
php の部分を /usr/bin/php とかフルパスにしても同じです。sendmail が実行する smrsh というのが sh よりも厳しいらしく実行時にエラーになってしまいます。そこで、 /etc/smrsh 以下に /usr/bin/php のシンボリックリンクを作ることにより回避できます。
$ ln -s /usr/bin/php /etc/smrsh/php
OpenPNE側
こちらを参考にさせていただきました。※これはOpenPNE3の記述です
OPVC04 携帯メール投稿のセットアップ|OpenPNEの手嶋屋
openpne_user: "| cd /path/to/openpne/ && php /path/to/openpne/symfony openpne:execute-mail-action"
手嶋社長のブログでは、Postfixがメールサーバとなっており、パイプでつなげてOpenPNEにメールを渡しています。
中を見るとOpenPNEのディレクトリに移動してから、引数として「execute-mail-action」を渡して、symfonyフレームワークに処理を依頼しているようです。
sendmailについてもう少し調べてみた
「&&」について
Postfixでは「&&」でチェンジディレクトリとphpの実行を連続して書いていますが、sendmailだとどう書くのだろうと思い調べてみました。
「これだ!」と明確に書いているサイトは見つからなかったのですが、「&&」でつなぐのはどうやら共通のようです。なので、大丈夫だろう、ということで。クウォートしている中身はAPLには関係なく、Linuxコマンドの世界で動くもの、と解釈しました。
何が渡されるの?
直接関係はなさそうですが気になったので。百式さんのサイトが参考になりました。
PHPとsendmailで任意のメールアドレスに来たメールを処理する方法 | IDEA*IDEA
「4.さてPHP」でのところにありますが、フツーに標準出力からもらっているようです。なので、PHPコード側では「stdin」標準入力から読み出しと考えればよさそうです。
整理してみた
メールサーバの使い方は、OpenPNEのバージョンには左右されないはずなので、Ver2での先人のみなさんのノウハウをそのまま拝借。Ver3ではメールサーバからの流し込み先の処理が違う(Ver2はフツーのphp、Ver3はsymfony経由)ので、alias定義だけVer3用に変更。これでいけるのでは??
ということで、まとめてみると、
Sendmail側の設定
sns.example.com
- /etc/mail/virtusertable
- xxxxxxx@sns.example.com のメールの振り分け先をバーチャルユーザーテーブルに登録
@sns.example.com sns-ktai@example.com
-
- 反映
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
sns-ktai: "| cd /path/to/openpne/ && php /path/to/openpne/symfony openpne:execute-mail-action"
-
- 反映
# newaliases
# ln -s /usr/bin/php /etc/smrsh/php
とここまで書きましたが
まだ、なんにもテストとかはしてません。これからです・・・
Bakeの使い方
準備
まずはPathの設定
cakeコマンド(実体はbatchファイル)にパスを通します。
新しく作ったCakePHPアプリを作るディレクトリ(よくあるのはhtdocs/[APL名])の下のcake\consoleに移動して
>set PATH=%PATH%;%CD%
これでPathが通りますた。確認。
>set ・ ・ PATH=C:\Program ・・・・・ 最後に ;D:\〜〜〜\htdocs\[CakeAPL]\cake\console
appディレクトリに移動
cd ../../app
Bakeで各ファイルを作る
下記コマンドでbakeを起動
>cake bake Welcome to CakePHP v1.3.5 Console --------------------------------------------------------------- App : app Path: \〜〜\app --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est case [Q]uit What would you like to Bake? (D/M/V/C/P/F/T/Q)
DB定義
[D]を選択
モデル作成
[M]を選択
- モデル作成時の注意
CakePHPのCSS
まずは全体に対して
マージン(BOXの外側の余白)、パディング(BOXの内側の余白)を0に
* { margin:0; padding:0; }
HTMLタグに対して
id/classが無指定の場合はコレが適用されます
bodyタグ
背景色、文字色、フォント、マージン(BOXの外側の余白)を設定
body { background: #003d4c; color: #fff; font-family:'lucida grande',verdana,helvetica,arial,sans-serif; font-size:90%; margin: 0; }
アンカー(a)タグ
基本的な設定
a { color: #003d4c; text-decoration: underline; font-weight: bold; }
マウスポインタを置いたときは色を変える
a:hover { color: #367889; text-decoration:none; }
アンカーの中にimgがある時は枠線なし
a img { border:none; }
見出し(h1 など)タグ
h1〜4までの基本設定
h1, h2, h3, h4 { font-weight: normal; margin-bottom:0.5em; }
レベル毎の個別設定
h1 { background:#fff; color: #003d4c; font-size: 100%; } h2 { background:#fff; color: #e32; font-family:'Gill Sans','lucida grande', helvetica, arial, sans-serif; font-size: 190%; } h3 { color: #993; font-family:'Gill Sans','lucida grande', helvetica, arial, sans-serif; font-size: 165%; } h4 { color: #993; font-weight: normal; }
リスト(ul、li)タグ
マージン(外余白)を設定。値が2つなので【上下】【左右】と読んで、左右にマージンを取る
ul, li { margin: 0 12px; }
id指定用(レイアウト用)
HTML側で「id=xxxx」と指定する
コンテナ
#container { text-align: left; }
ヘッダ
#header{ padding: 10px 20px; }
ヘッダの中の見出し「h1」とアンカー「a」
#header h1 { line-height:20px; background: #003d4c url('../img/cake.icon.png') no-repeat left; color: #fff; padding: 0px 30px; } #header h1 a { color: #fff; background: #003d4c; font-weight: normal; text-decoration: none; } #header h1 a:hover { color: #fff; background: #003d4c; text-decoration: underline; }
コンテンツ
#content{ background: #fff; clear: both; color: #333; padding: 10px 20px 40px 20px; overflow: auto; }
フッタ
#footer { clear: both; padding: 6px 10px; text-align: right; }