まめしみ

やったことを淡々と書く

Category : centOS


 

cakephp2.0を試そうと思ったらDB接続にPDOを使っていた。
拡張モジュールpdo_pgsqlを追加したときのメモ。
この環境では複数バージョンのphpをインストールしています。

 

ポイント

  • 追加したいバージョンのphpのphpizeを実行
  • configureのオプション「–with-php-config」で追加するバージョンのphp-configを指定
#インストール時に使用したphpディレクトリ内のpdo_pgsqlに移動
#残ってなければ再度ダウンロード
cd ~/parts/php-5.3.8/ext/pdo_pgsql

#phpize実行
/usr/local/php-5.3.8/bin/phpize

#「--with-php-config」を指定してconfigure
#「--with-pdo-pgsql」は適宜変更すること
./configure
--with-php-config=/usr/local/php-5.3.8/bin/php-config /
--with-pdo-pgsql=/usr/local/lib/postgresql83

make
sudo make install

 

php.iniを編集してrestart。

sudo vi /usr/local/php-5.3.8/lib/php.ini
===================================
extension_dir = "/usr/local/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626/"
extension=pdo_pgsql.so
===================================

sudo apachectl restart

#確認(pdo_pgsqlがあればOK)
/usr/local/php-5.3.8/bin/php -m

 

centOSでsocket.ioをnpmインストールするとエラーになった。

npm install socket.io

=====
npm ERR! tar "-mvxpf" "-" "-o" "-C"
=====

 

centOSのtarはバージョンが古い。
yumでインストールできるのは1.1系。
1.2系が必要なのでソースからtarを入れた。

cd ~/parts
wget http://ftp.gnu.org/gnu/tar/tar-1.26.tar.gz
tar zxf tar-1.26.tar.gz
cd tar-1.26

#古いものをuninstall
sudo rpm -e --nodeps tar

./configure
make
sudo make install

インストールできたがtarコマンドのパスがおかしくなって使えなくなった。
ついでにOSアップデートもしてたのでrebootしたらパス通りました。。。

 

sokect.ioインストール

npm install socket.io

うまくいきました!


 

以下のサイトを参考にさせていただきました。
gitやcurlやwgetでGitHubにアクセスするとcertification errorになる原因を調べてみた

 

DigiCertのEV SSL用ルート証明書(DigiCert High Assurance Ev Root CA)が標準パッケージに含まれていない。ってのが問題なようなので証明書追加しました。

 

とりあえず.crtファイルを探す。

sudo find / -name *.crt

 

「/etc/pki/tls/certs/ca-bundle.crt」が見つかった。
OpenSSLパッケージに含まれているものらしい。

 
追加する。

cd ~/parts/
wget https://www.digicert.com/testroot/DigiCertHighAssuranceEVRootCA.crt
sudo chmod 666 /etc/pki/tls/certs/ca-bundle.crt
sudo cat DigiCertHighAssuranceEVRootCA.crt >> /etc/pki/tls/certs/ca-bundle.crt
sudo chmod 644 /etc/pki/tls/certs/ca-bundle.crt

 
エラーでなくなりました!!


 
gitをインストールします。
 
Git – Fast Version Control System

 

gitインストール

1.gitインストール

cd ~/parts
wget http://www.kernel.org/pub/software/scm/git/git-1.7.6.tar.gz
tar zxvf git-1.7.6.tar.gz
cd git-1.7.6
./configure --with-curl=/usr/local
make
sudo make install

 

2.補完設定

mkdir ~/etc
cp ~/parts/git-1.7.6/contrib/completion/git-completion.bash ~/etc/

vi ~/.bashrc
===========================================
#git completon
source $HOME/etc/git-completion.bash
===========================================
. ~/.bashrc

 
これでtabによる補完が効くようになります。

 
以下をやるとプロンプトにブランチ名を表示できます。
お好みで弄るといい感じです。

vi ~/.bashrc
===========================================
PS1='[\u@\h:\W]$(__git_ps1 "\[\e[32m\](%s)\[\e[0m\]")$ '
===========================================
. ~/.bashrc

 

3.gitの設定

git config --global user.name 'your name'
git config --global user.email  'abcdefg@sample.com'
git config --global core.editor vim
git config --global merge.tool vimdiff
git config --global color.status auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global color.diff auto

Pro Git – Pro Git 1.5 使い始める 最初のGitの構成を参考にお好みの設定にしてください。


 
node.jsとnpm(node package manager)をインストールします。
 
isaacs/node – GitHub
isaacs/npm – GitHub

 

node.js & npmインストール

1.node.jsインストール

wget http://nodejs.org/dist/node-v0.4.11.tar.gz
tar zxvf node-v0.4.11.tar.gz
cd node-v0.4.11
./configure
make
sudo make install

 

2.npmインストール

curl http://npmjs.org/install.sh |sudo sh

 
こんなエラーが出た。。。

npm cannot be installed without nodejs.
Install node first, and then try again.

Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs.

PATH=/usr/bin:/bin

 
sudoしたときにPATHが引き継がれていない模様。
sudoの設定にenv_keepというところがあるので、そこに「PATH」を追加します。

sudo visudo
===============================================
Defaults    env_keep = "PATH COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \
                        LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
                        _XKB_CHARSET XAUTHORITY"
===============================================

 
リトライ!

curl http://npmjs.org/install.sh |sudo sh

 
うまくいきました。

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm.js
/usr/local/bin/npm_g -> /usr/local/lib/node_modules/npm/bin/npm.js
/usr/local/bin/npm-g -> /usr/local/lib/node_modules/npm/bin/npm.js
npm@1.0.27 /usr/local/lib/node_modules/npm
It worked

続いてPHPをインストールします。

ソースからコンパイルしてインストールします。

 

PHPインストール

1.PHPのダウンロード & 展開

cd ~/parts
wget http://www.php.net/get/php-5.3.6.tar.gz/from/jp.php.net/mirror
tar zxvf php-5.3.6.tar.gz
cd php-5.3.6

wgetコマンドを使用してダウンロードします。

※URLは設定時点で最新のものです。PHP公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

2.PHP & ライブラリ インストール

//2~14行目までで1つのコマンドです。
./configure \
--enable-mbstring \
--enable-soap \
--enable-zend-multibyte \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
--with-curl \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-mcrypt

オプションはご覧の通り。基本的にはmysql、GDを設定。

エラーでました。。。

エラー発生
configure: error: xml2-config not found. Please check your libxml2 installation.
ライブラリ追加
yum install libxml2-devel

エラー発生
configure: error: Please reinstall the libcurl distribution
ライブラリ追加
yum install curl-devel

エラー発生
configure: error: libjpeg.(a|so) not found.
ライブラリ追加
yum install libjpeg-devel

エラー発生
configure: error: libpng.(a|so) not found.
ライブラリ追加
yum install libpng-devel

エラー発生
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
ライブラリ追加
yum install libmcrypt
yum install libmcrypt-devel

ライブラリがいくつか足りていないので追加。

make
sudo make install

インストールします。

 

 

3.設定

sudo cp ~/parts/php-5.3.6/php.ini-development /usr/local/lib/php.ini
sudo vi /usr/local/lib/php.ini

=============================
[Date]
date.timezone ='Asia/Tokyo'

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
=============================

php.iniでタイムゾーンと言語の設定をします。

sudo vi /usr/local/apache2/conf/httpd.conf

=============================
AddType application/x-httpd-php .php
=============================

拡張子(.php)をコンテントタイプ(application/x-httpd-php)にマップ。
 

 

4.apache再起動

sudo service apache restart

 

インストール完了。


ブログ(WordPress)立ち上げに向けてMySQLをインストールします。

ソースからコンパイルしてインストールします。

 

MySQLインストール

1.MySQLのダウンロード & 展開

cd ~/parts
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.92.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
tar zxvf mysql-5.5.14.tar.gz
cd mysql-5.5.14

wgetコマンドを使用してダウンロードします。

※URLは設定時点で最新のものです。MySQL公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

2.必要なライブラリをインストール

yum list ncurses-devel
sudo yum install ncurses-devel

yum list コマンドでncurses-develがインストールされているか確認し、なければインストールします。

 

 

3.MySQLインストール

//2~6行目までで1つのコマンドです。
./configure \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-innodb \
--prefix=/usr/local/mysql

make
sudo make install

インストール先は「/usr/local/mysql」として、その他オプションはご覧の通り。

コンパイルしてインストール!!

 

4.DB初期化 & 設定

sudo groupadd mysqlsudo
useradd -g mysql mysql

sudo /usr/local/mysql/bin/mysql_install_db --user=mysql
sudo chown -R mysql:mysql /usr/local/mysql
sudo cp ~/parts/mysql-5.0.92/support-files/my-medium.cnf /etc/my.cnf
sudo vi /etc/my.cnf
=============================
[client]
default-character-set   = utf8

[mysqld]
default-character-set=utf8
character-set-server=utf8
=============================

mysqlのユーザーとグループを作成します。

mysql_install_dbでDBの初期化を行います。

※rootでやるとエラーになるので「–user=mysql」オプションを指定。

所有者をmysqlに変更しておきます。

先ほど展開したファイルに設定ファイルの雛形があるのでコピーし、文字コードの設定をutf8に変更。

 

 

5.自動起動設定

sudo cp ~/parts/mysql-5.0.92/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo chkconfig --add mysql
#確認
chkconfig --list mysql

起動用のプログラムも雛形があるのでコピーしましょう。

実行権限をつけて、chkconfig に登録!

 

 

6.起動

sudo service mysql start

起動!!

 

どうでしょうか?以上でインストール完了です。


ブログ(WordPress)立ち上げに向けてWebサーバソフトウェアをインストールします。

フリーソフトウェアとして無償で公開されているapacheを使用します。

ソースからコンパイルしてインストールします。


apacheインストール

 

1.作業ディレクトリ作成

mkdir ~/parts
cd ~/parts

ホームディレクトリ直下にpartsディレクトリを作ります。

作成したpartsディレクトリに移動し、ここで以下の作業を行うことにします。

 

 

2.apacheのダウンロード & 展開

wget http://www.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.2.19.tar.gz
tar zxvf httpd-2.2.19.tar.gz
cd httpd-2.2.19

wgetコマンドを使用してapacheをダウンロードします。

※URLは設定時点で最新のものです。apache公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

3.必要なライブラリをインストール

yum list openssl-devel
sudo yum install openssl-devel

configureオプションに「–enable-ssl」をつける予定なので必須となるライブラリを追加します。

yum list コマンドでopenssl-develfがインストールされているか確認しています。

「installed」で表示されたらインストール済みです。なければインストールしましょう。

 

 

4.apacheインストール

//2~7行目までで1つのコマンドです。
./configure \
--prefix=/usr/local/apache2 \
--enable-ssl \
--enable-rewrite \
--enable-proxy \
--enable-proxy-ajp \
--enable-so \
--enable-shared

make
sudo make install

インストール先は「/usr/local/apache2」として、その他オプションはご覧の通り。

コンパイルしてインストール!!

 

 

5.apacheの自動起動設定

sudo vi /etc/init.d/apache
=============================
#!/bin/sh
#
# chkconfig: 35 85 15
# description: apache 2.2.19

apachectl="/usr/local/apache2/bin/apachectl"

case "$1" in
start|stop|restart|fullstatus| \
status|graceful|graceful-stop| \
configtest|startssl)
$apachectl $@
;;
*)
;;
esac
=============================
sudo chmod 775 /etc/init.d/apache
sudo chkconfig --add apache

シェルを作成して実行権限を付与します。

chkconfig に登録します!

以下のサイトを参考にさせていただきました。
kazmax.zpp.jp Linuxで自宅サーバー

 

 

6.apacheユーザー作成

sudo groupadd apache
sudo useradd -d /var/empty/apache -s /sbin/nologin apache

apacheグループを作ります。

ユーザーapacheをapacheグループで作成。

 

 

7.httpd.confの設定

sudo vi /usr/local/apache2/conf/httpd.conf
//以下の箇所を変更
=============================
ServerName yymomomomoyy.com
User apache
Group apache
=============================

httpd.confを編集します。

ServerNameを自分のドメインにします。

User、Groupの設定をapacheに変更します。

これでapacheユーザーでhttpdプロセスが起動されます。

 

 

8.apache起動

sudo service apache start

「5.apacheの自動起動設定」でchkconfigに登録したのでserviceコマンドから起動できます。

ブラウザからアクセスして確認してみましょう!問題なければ「It works!」と表示されます。

※これはデフォルトのドキュメントルートにある「/usr/local/apache2/htdocs/index.html」です。

 

 

 

とりあえず起動までの手順はこれで終わります。

 


sshの設定も一通り終わったので今回はクライアント側の設定の話です。

Tera Termのマクロを組んでショートカット一発で接続できるようにしましょう。

※windowsでの話です。Macの場合iTermでsshコマンドをブックマークすればいい感じ!

 

Tera Term  (マクロ) 設定

 

1.Tera Term インストール

ダウンロードしてインストールします。
インストーラに従えば問題ないと思います。

 

 

2.まずは普通に接続してみる

ホストの箇所はVPSのIPかドメインを指定します。

TCPポートは「さくらVPS弄り ~その2~ sshのポート変更」で設定したポート番号を指定します。

 

さくらVPS弄り ~その1~ ユーザー作成からssh設定」で作成したユーザー名とパスフレーズ、そして秘密鍵の場所を指定します。

※パスフレーズはpasswdで指定したものではなく秘密鍵の生成時に指定したパスフレーズです。

 

以上が通常の接続です。

これを毎回入力するのも面倒なのでTera Termのマクロ機能を使って自動化しましょう。

 

 

3.マクロをつくる

テキストエディタ(メモ帳など)を起動して以下を貼り付けてください。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;ユーザー名
username = 'myuser'

;;ホスト名
hostname = 'xxx.xxx.xxx.xxx:10022'

;;秘密鍵
private_key_file = 'C:\etc\ssh\id_rsa'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

filesearch private_key_file
if result = 0 then
sprintf 'Private key not found!'
error_msg = inputstr
messagebox error_msg 'error'
exit
else
msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

sprintf '%s /ssh /2  /auth=publickey /user=%s /passwd=%s /keyfile="%s"' hostname username inputstr private_key_file
connect_syntax = inputstr

; コネクト
connect connect_syntax
endif

ユーザー名、ホスト名、秘密鍵は自分のものに書き換えて保存します。

拡張子は「.ttl」としてください。

私は「myuser@xxx.xxx.xxx.xxx.ttl」みたいな感じにしてます。

 

 

4.マクロを関連付ける

先ほど作ったttlファイルをTTPMACROに関連付けます。

※Tera Termのインストール時に関連付けのオプション選択していたら不要かもしれません。

  1. ttlファイルを右クリックして「プロパティ」を選択。
  2. 「全般」タブの「プログラム」にある「変更」を押します。
  3. 「参照」から「ttpmacro.exe」を探して選びます。何も変更してなければ「C:\Program Files\teraterm」にあると思います。

 

 

5.マクロから接続

いよいよマクロを起動して接続します。

ttlファイルをダブルクリックするとこんな感じに秘密鍵のパスフレーズを求められます。

パスフレーズを入力すると….

ログインできるはず!!

 

 

おまけ

パスフレーズ毎回入れるのも面倒という方はこちらのマクロをどうぞ。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;ユーザー名
username = 'myuser'

;;ホスト名
hostname = 'xxx.xxx.xxx.xxx:10022'

;;秘密鍵
private_key_file = 'C:\etc\ssh\id_rsa'

;;パスフレーズ

password= 'password'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

filesearch private_key_file
if result = 0 then
sprintf 'Private key not found!'
error_msg = inputstr
messagebox error_msg 'error'
exit
else

sprintf '%s /ssh /2  /auth=publickey /user=%s /passwd=%s /keyfile="%s"' hostname username password private_key_file
connect_syntax = inputstr

; コネクト
connect connect_syntax
endif

前回sshの設定をしました。デフォルトでsshのポートは22番です。

このままだと不正攻撃の対象になりやすいのでポートを変更します。

 

sshのポート変更

1.ログイン

Tera Termなどで前回作成したユーザーでログインします。

 

 

2.sshのポート変更


sudo vi  /etc/ssh/sshd_config
//開いてるポートで好きなのを
=============================
Port 10022
=============================

sudo /etc/init.d/sshd restart

コメントになっているので外して好きなポート番号を設定します。

sshdを再起動します。

 

 

3.iptablesの設定

sudo vi /etc/sysconfig/iptables
=============================
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022    -j ACCEPT

# HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080  -j ACCEPT

# FTP1, FTP2
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT

# SMTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT
=============================

sudo service iptables start

詳しい説明はここでは省きますが必要なポートだけ許可して後は閉じてます。
21行目でsshのポート開放しています。

iptables 再起動。