WIREDGATE: 2010.12

2010年12月15日水曜日

go-pear.php の作成からPEARの更新

手っ取り早くXAMPPを使おうとセットアップしたはいいが
今度はpearがうまく動作しない

そこでpearを更新する必要があるので
PEAR パッケージマネージャを使おう・・・・あれっ、go-pearがないぞ

ってことで
http://pear.php.net/go-pearの内容を
ローカルにgo-pear.phpという名前で保存して


php go-pear.phpで実行


プロキシも使わないのであればデフォルトは全部Enterでいいでしょう。




で、ようやく使いたかったPEAR::Log
をインストールできましたとさ

pear upgrade Log



2010年12月3日金曜日

MySQL5.1+PHP5.3+PDO CentOS5.5

CentOSにMySQL,PHP,PDOをインストール

デフォルトで入っているのが色々古いのでできるだけ最新をインストール
ただソースからコンパイルしてもいいけど設定がめんどくさいのでyumでインストールします

yumもそのままだと古いので、まずはリポジトリを追加


wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5.rpm epel-release-5-4.noarch.rpm



yum -y --enablerepo=remi,epel,rpmforge update php* mysql*

うまくいかない場合は1つずつ試します
yum -y --enablerepo=remi,epel,rpmforge update php
yum -y --enablerepo=remi,epel,rpmforge update php*

yum -y --enablerepo=remi,epel,rpmforge update mysql
yum -y --enablerepo=remi,epel,rpmforge update mysql*

あとはphpinfo()もしくはphp -i
で確認しながらhttpd.conf, php.ini, my.cnfを設定

私の環境ではhttpd.conf上のlibphp5.soのパスが間違っていたので
パスを修正(シンボリックリンクを貼り直し)して完了

libphp5.soの場所は次のコマンドで確認
locate libphp5.so


2010年12月3日時点でyumインストールの各バージョンは次の通り

PHP:5.3.3
MySQL:5.1.53


PHPは5.3.2だとタイムゾーンのエラーがでるので
php.iniに以下を設定
date.timezone = "Asia/Tokyo"

あとはmy.cnfに文字化け対策等すれば完了

必要があればremiリポジトリにphpmyadminも含まれているので必要に応じてインストール

色々インストールが終わったら追加したリポジトリは無効にしてた方がいいかもしれませんね。
/etc/yum.repo.d/の各.repoのenable=0に変更

2010年12月2日木曜日

apache関連の接続セキュリティ

80ポートでアクセスできないときは次の設定を見直すこと

ファイヤウォール設定

/etc/sysconfig/iptables
に以下を追記
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

iptablesを再起動
service iptables restart

SELinux設定
まず確認
getsebool -a | grep -e httpd

http関連のネットワークがoffだったらonにする
setsebool -P httpd_can_network_connect=on

Dropboxインストール CentOS5.5 CUI環境

pythonのバージョンが古いとDropboxのインストーラが動かないので
まずはpythonをインストール

今回は2.7.1

#wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
#tar zxvf Python-2.7.1.tgz
#cd Python-2.7.1
#./configure --prefix=/usr/local/Python-2.7.1
#make
#make install

# ln -s /usr/local/Python-2.7.1 /usr/local/Python


以下ユーザのhomeディレクトリで作業
$wget https://www.dropbox.com/download?dl=packages/dropbox.py
$chmod a+x dropbox.py
$mkdir bin
$mv dropbox.py bin/dropbox

dropboxのインストール
$/usr/local/Python/bin/python bin/dropbox start --install


ダウンロードされた dropbox.tar.gzを解凍
$tar zxvf dropbox.tar.gz

.dropbox-distが作成される

Dropboxの共有ディレクトリを作成
$mkdir Dropbox

一度dropboxを起動して .dropboxを作成
$ /usr/local/Python/bin/python bin/dropbox start

.dropboxが作成されたのを確認して停止
$ /usr/local/Python/bin/python bin/dropbox stop


共有するためのhost_idを取得する
$sqlite3 .dropbox/dropbox.db 'SELECT * FROM config;'




4|host_id|VXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=


このVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
をbase64デコードする


Base64Decode
ここで得られた
Vxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
のxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分がHOST_ID


dropboxへログインした状態で次のアドレスにアクセスし、アカウントの紐付けをする
https://www.dropbox.com/cli_link?host_id=HOST_ID


dropboxを開始
/usr/local/Python/bin/python bin/dropbox start


ファイルのダウンロード確認
/usr/local/Python/bin/python bin/dropbox status



あとは適当に起動スクリプト等書いて実行すると便利
参考までに








# chkconfig: 2345 85 15
# description: Startup script for dropbox daemon
#
# processname: dropboxd
# pidfile: /var/run/dropbox.pid
# config: /etc/sysconfig/dropbox
#

### BEGIN INIT INFO
# Provides: dropboxd
# Required-Start: $local_fs $network $syslog
# Required-Stop: $local_fs $syslog
# Should-Start: $syslog
# Should-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start up the Dropbox file syncing daemon
# Description: Dropbox is a filesyncing sevice provided by dropbox.com
# This service starts up the dropbox daemon.
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# To configure, add line with DROPBOX_USERS="user1 user2" to /etc/sysconfig/dropbox
# Probably should use a dropbox group in /etc/groups instead.


DROPBOX_USERS="user"

prog=dropboxd
lockfile=${LOCKFILE-/var/lock/subsys/$prog}
RETVAL=0

start() {
echo -n $"Starting $prog"
for dbuser in $DROPBOX_USERS; do
daemon --user $dbuser /bin/sh -c "/home/$dbuser/.dropbox-dist/dropboxd&"
done
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}

status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}

stop() {
echo -n $"Stopping $prog"
for dbuser in $DROPBOX_USERS; do
killproc /home/$dbuser/.dropbox-dist/dropbox
done
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

# See how we were called.
case "$1" in
start)
start
;;
status)
status
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|status|stop|restart}"
RETVAL=3
esac
exit $RETVAL