LAPPサーバ構築メモ(CentOS6.3+Apache+PostgreSQL9.2+PHP)
VirtualBox にLAPPサーバを構築したときのメモです。
(VirtualBoxの設定方法はこちら)
○ネットワーク構成(※自分の環境に読替えてください)
ホスト名: lapp001
IPアドレス: 192.168.56.201/24
DNSサーバ: 192.168.100.1
○仮想マシン構成
メモリ:1024MB
NIC1:NATアダプター
NIC2:ホストオンリーアダプター
========= CentOS6.3のインストール ==========
[Welcom to CentOS 6.3!]
Install or upgrade an existing system
[Disc Found]
SKIP
[CentOS6]
NEXT
[What language 〜]
Japanese(日本語)
[このシステム用の適切なキーボードを選択します]
日本語
[どちらのタイプのストレージデバイスにインストールしますか?]
基本ストレージデバイス
[ホスト名]
lapp001.localdomain
[使用するタイムゾーン〜]
アジア/東京
「システムクロックでUTCを使用」のチェックを外す
[rootパスワード]
<パスワード>
[どのタイプをインストールしますか?]
すべての領域を使用する
[ストレージ構成をディスクに書込み中]
(データがすべて失われる旨の警告が表示されます)
データが削除されても問題がなければ「変更をディスクに書込む」を押します
[追加ソフトウェアの選択]
Minimal
「今すぐカスタマイズ」を選択して「次へ」
下記を選択して「次へ」
・ベースシステム>ネットワーキングツール
・ベースシステム>ベース
・開発>開発ツール
インストールが開始します
[おねでとうございます。CentOSのインストールが完了しました]
再起動してください
以下は rootユーザでログインして設定します。
========= ネットワーク関連設定 ==========
・NIC1の設定(NATアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
---(下記を変更)---------------------------
NM_CONTROLLED="yes"
ONBOOT="no"
↓
NM_CONTROLLED="no"
ONBOOT="yes"
------------------------------
・NIC2の設定(ホストオンリーアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
---(HWADDRの行以外を削除して下記を追加)---------------------------
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="AB:CB:EF:01:23" ←【この行は残す】
NM_CONTROLLED="no"
ONBOOT="yes"
IPADDR="192.168.56.201"
NETMASK="255.255.255.0"
------------------------------
・ネットワークを再起動
service network restart
・上記設定で sshログインができるようになります
ssh root@192.168.56.201
・DNSサーバの設定
vi /etc/resolv.conf
---(全て削除して下記を追加)---------------------------
nameserver 192.168.100.1
------------------------------
========= yumアップグレード ==========
yum -y upgrade
========= 不要サービスの停止 ==========
chkconfig --level 0123456 abrt-ccpp off
chkconfig --level 0123456 abrt-oops off
chkconfig --level 0123456 abrtd off
chkconfig --level 0123456 acpid off
chkconfig --level 0123456 atd off
chkconfig --level 0123456 auditd off
chkconfig --level 0123456 cpuspeed off
chkconfig --level 0123456 haldaemon off
chkconfig --level 0123456 ip6tables off
chkconfig --level 0123456 kdump off
chkconfig --level 0123456 lvm2-monitor off
chkconfig --level 0123456 mdmonitor off
chkconfig --level 0123456 messagebus off
chkconfig --level 0123456 netfs off
========= SELinux無効設定 ==========
vi /etc/sysconfig/selinux
---(下記を変更)---------------------------
SELINUX=enforcing
↓
SELINUX=disabled
------------------------------
・OSを再起動します。
shutdown -r now
========== iptables設定 ==========
・オリジナルのコンフィグのバックアップ
mv -i /etc/sysconfig/iptables /etc/sysconfig/iptables.org
・ssh と httpd のみ許可設定
vi /etc/sysconfig/iptables
---(下記を追加)---------------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
------------------------------
・iptablesを再起動します
service iptables restart
========= NTP設定 ==========
・初回は手動で時間合わせをします。
ntpdate ntp.nict.jp
・コンフィグをバックアップします
mv -i /etc/ntp.conf /etc/ntp.conf.org
・コンフィグを設定します。
vi /etc/ntp.conf
---(全て削除して下記を追加)---------------------------
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
------------------------------
・サービスを起動します。
service ntpd start
・自動起動設定をします。
chkconfig ntpd on
・動作を確認します。
ntpq -p
---このような表示があればOKです。---------------------------
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-a2.nict.go. .NICT. 1 u 26 64 1 8.929 1.125 0.000
ntp-a3.nict.go. .NICT. 1 u 25 64 1 6.050 -0.852 0.000
ntp-b2.nict.go. .NICT. 1 u 24 64 1 7.877 -0.638 0.000
------------------------------
========= Gmailリレー設定 ==========
・GmailのSMTP認証情報ファイルの作成
vi /etc/postfix/gmail
---(下記を追加)---------------------------
[smtp.gmail.com]:587 <Gmailのアドレス>:<Gmailのパスワード>
---------------------------
chmod 600 /etc/postfix/gmail
postmap /etc/postfix/gmail
・Postfixの設定
vi /etc/postfix/main.cf
---(下記を追加)---------------------------
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
------------------------------
・postfixを再起動します
service postfix restart
・root宛メールの送信先を変更します
vi /etc/aliases
---(下記を追加)---------------------------
root: <Gmailのアドレス>
---------------------------
・設定を反映させます。
newaliases
・メールが送信できる事を確認します
echo test | mail -s `hostname` root
========= リポジトリの追加(64bit) ==========
・postgreSQL9.2
rpm -ivh http://yum.postgresql.org/9.2/redhat/rhel-6.3-x86_64/pgdg-centos92-9.2-6.noarch.rpm
・RPMForge
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
・epal
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
vi /etc/yum.repos.d/remi.repo
---(下記を変更)---------------------------
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0
↓
enabled=1
------------------------------
========= 各種ミドルウェアインストール ==========
※バージョンは2013年2月16日時点のものです。
・Apache(2.2.15-15)
yum -y install httpd-devel
yum -y install mod_ssl
・PHP(5.4.11-1)
yum remove php php-*
yum -y install php
yum -y install php-devel
yum -y install php-pdo
yum -y install php-pgsql
yum -y install php-mbstring
yum -y install php-mcrypt
yum -y install php-gd
yum -y install php-pear
yum -y install php-pear-DB
yum -y install php-pear-Auth-*
yum -y install php-pecl-apc-devel
yum -y install zlib-devel
・PostgreSQL(9.2.3-2)
yum -y install postgresql92-devel
yum -y install postgresql92-server
yum -y install postgresql92-contrib
・memcached(1.4.15-2)
yum -y install memcached-devel
yum -y install php-pecl-memcache
========= リポジトリの無効化 ==========
vi /etc/yum.repos.d/rpmforge.repo
---(下記を変更)---------------------------
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
↓
enabled = 0
------------------------------
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled=0
------------------------------
vi /etc/yum.repos.d/remi.repo
---(下記を変更)---------------------------
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
↓
enabled=0
------------------------------
vi /etc/yum.repos.d/pgdg-92-centos.repo
---(下記を変更)---------------------------
[pgdg92]
name=PostgreSQL 9.2 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.2/redhat/rhel-$releasever-$basearch
enabled=1
↓
enabled=0
------------------------------
========= Apacheの設定 ==========
・不要なコンフィグを読込まないようにする
mv -i /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
・オリジナルのコンフィグをバックアップ
mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
・コンフィグを作成
vi /etc/httpd/conf/httpd.conf
---(下記を追加)---------------------------
httpd.conf
---httpd.conf(ここまで)---------------------------
・起動
service httpd start
・自動起動設定
chkconfig httpd on
========= PHPの設定 ==========
・エラーログ出力先作成
mkdir /var/log/php
chown apache /var/log/php
chmod 755 /var/log/php
vi /etc/php.ini
---(下記を変更)---------------------------
expose_php = On
↓
expose_php = Off
;date.timezone =
↓
date.timezone = 'Asia/Tokyo'
error_reporting = E_ALL & ~E_DEPRECATED
↓
error_reporting = E_ALL & ~E_NOTICE
;error_log = php_errors.log
↓
error_log = "/var/log/php/php_errors.log"
------------------------------
・セッションの保存先をmemcacheに設定
vi /etc/php.d/memcache.ini
---(下記を変更)---------------------------
;session.save_handler=memcache
↓
session.save_handler=memcache
;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
↓
session.save_path="tcp://localhost:11211"
------------------------------
vi /etc/httpd/conf.d/php.conf
---(下記を変更)---------------------------
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
↓
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
------------------------------
========= memcachedの設定 ==========
vi /etc/sysconfig/memcached
運用で様子をみて適度に変更
---(デフォルト値)---------------------------
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
------------------------------
・自動起動設定
chkconfig memcached on
・起動
service memcached start
service httpd restart
========= ログローティション設定 ==========
・不要なログの削除
service httpd stop
rm -f /var/log/httpd/*
service httpd start
vi /etc/logrotate.d/httpd
---(全て削除し下記内容に変更)---------------------------
/var/log/httpd/*log /var/log/php/*log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
------------------------------
・確認します
logrotate -dv /etc/logrotate.d/httpd
---下記のような表示であればOKです---------------------------
reading config file /etc/logrotate.d/httpd
reading config info for /var/log/httpd/*log /var/log/php/*log
Handling 1 logs
rotating pattern: /var/log/httpd/*log /var/log/php/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/httpd/access_log
log does not need rotating
(略)
------------------------------
========= postgreSQLの設定 ==========
・postgresユーザに切換えます
su postgres
・データベースクラスタの作成
/usr/pgsql-9.2/bin/initdb -E UTF-8 --no-locale -D /var/lib/pgsql/9.2/data
・rootユーザに戻ります
exit
・起動
service postgresql-9.2 start
・自動起動設定
chkconfig postgresql-9.2 on
・再度 postgresユーザに切換えます
su postgres
・データベース管理用ユーザ作成(スーパーユーザ)
createuser -Ps admin
------------------------------
Enter password for new role:<パスワード>
Enter it again:<パスワード>
------------------------------
・WEBアプリケーションからの接続用ユーザ作成(ログイン権限のみ)
createuser -Pl webapp
------------------------------
Enter password for new role:<パスワード>
Enter it again:<パスワード>
------------------------------
・データベースユーザの確認
psql -c '\du'
------------------------------
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
webapp | | {}
------------------------------
データベースの作成等は adminユーザで行い、WEBアプリケーション(PHP)からの接続は webappユーザを使います。
・共有メモリの設定
vi /var/lib/pgsql/9.2/data/postgresql.conf
---(下記を変更)---------------------------
shared_buffers = 32MB # min 128kB
↓
shared_buffers = 256MB # min 128kB
------------------------------
「shared_buffers」の妥当な初期値はシステムメモリの25%、今回はメモリ1GBのサーバなので 256MBとしました。
参考:http://www.postgresql.jp/document/9.2/html/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY
・ログの設定(処理が重くなるので本番サーバには設定しないのが吉)
vi /var/lib/pgsql/9.2/data/postgresql.conf
---(下記を変更)---------------------------
#log_duration = off
↓
log_duration = on
#log_line_prefix = '' # special values:
↓
log_line_prefix = '%m %u %d [%p] '
#log_statement = 'none' # none, ddl, mod, all
↓
log_statement = 'all' # none, ddl, mod, all
------------------------------
・ログディレクトリへのリンク作成
ln -s /var/lib/pgsql/9.2/data/pg_log /var/log/postgresql
・クライアント認証設定
vi /var/lib/pgsql/9.2/data/pg_hba.conf
---(下記を変更)---------------------------
# "local" is for Unix domain socket connections only
local all all trust
↓
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 trust
↓
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 trust
↓
#host all all ::1/128 trust
------------------------------
・設定を反映させるため再起動
service postgresql-9.2 restart
========== PostgreSQL(libpq) Version を合わせる ==========
PHPのPostgreSQLモジュールのみ9.2のライブラリを使ってコンパイルしますので、インストールしたphpと同じバージョンのソースを本家からダウンロードしておきます。(今回は5.4.11)
・適当な場所に展開
tar xvjf php-5.4.11.tar.bz2
・pgsqlモジュールのディレクトリへ移動
cd php-5.4.11/ext/pgsql/
・コンパイルしてインストール
phpize
./configure --with-pgsql=/usr/pgsql-9.2
make
make test
make install
・インストールが終わったらApacheを再起動
service httpd restart
========== PostgreSQL(libpq) Version を合わせる(pdo_pgsql) ==========
pecl download pdo_pgsql
tar xvzf PDO_PGSQL-1.0.2.tgz
cd PDO_PGSQL-1.0.2
phpize
./configure --with-pdo-pgsql=/usr/pgsql-9.2
make
make test
---(下記エラーが発生します。原因調査中2013-02-13)---------------------------
Warning: PHP Startup: Unable to load dynamic library '/home/admin/src/PDO_PGSQL-1.0.2/modules/pdo_pgsql.so' - /home/admin/src/PDO_PGSQL-1.0.2/modules/pdo_pgsql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
------------------------------
・エラーが気になるが、とりあえずインストールしておく
make install
・インストールが終わったらApacheを再起動
service httpd restart
========== 自動起動設定確認 ==========
chkconfig httpd on
chkconfig memcached on
chkconfig postgresql-9.2 on
chkconfig --list | grep :on
---下記のような表示であればOKです---------------------------
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postgresql-9.2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
------------------------------
・システムを再起動後してサービスが自動起動している事を確認
========= サーバー用秘密鍵・オレオレ証明書作成 の作成(SSL用) ==========
・作成用ディレクトリに移動します
cd /etc/pki/tls/certs/
・オリジナルのMakeファイルをバックアップします
cp -ip Makefile Makefile.org
・サーバー用証明書有効期限を1年から10年に変更します
sed -i 's/365/3650/g' Makefile
・サーバー用秘密鍵・証明書作成
make server.crt
---下記を入力---------------------------
Enter pass phrase:1234(←表示されません)
Verifying - Enter pass phrase:1234(←表示されません)
Enter pass phrase for server.key:1234(←表示されません)
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:<空エンター>
Locality Name (eg, city) [Newbury]:<空エンター>
Organization Name (eg, company) [My Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []:lapp001
Email Address []:<空エンター>
------------------------------
・サーバー用秘密鍵からパスワード削除
openssl rsa -in server.key -out server.key
---下記を入力---------------------------
Enter pass phrase for server.key:1234(←表示されません)
------------------------------
========= Apacheの設定(SSL) ==========
・SSL設定ファイルのオリジナルをバックアッップします
mv -i /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org
vi /etc/httpd/conf.d/ssl.conf
---(下記を追加)---------------------------
ssl.conf
------------------------------
・httpd再起動
service httpd restart
・httpsで接続できることを確認(オレオレ証明書なので警告が表示されます)
以上です。
(VirtualBoxの設定方法はこちら)
○ネットワーク構成(※自分の環境に読替えてください)
ホスト名: lapp001
IPアドレス: 192.168.56.201/24
DNSサーバ: 192.168.100.1
○仮想マシン構成
メモリ:1024MB
NIC1:NATアダプター
NIC2:ホストオンリーアダプター
========= CentOS6.3のインストール ==========
[Welcom to CentOS 6.3!]
Install or upgrade an existing system
[Disc Found]
SKIP
[CentOS6]
NEXT
[What language 〜]
Japanese(日本語)
[このシステム用の適切なキーボードを選択します]
日本語
[どちらのタイプのストレージデバイスにインストールしますか?]
基本ストレージデバイス
[ホスト名]
lapp001.localdomain
[使用するタイムゾーン〜]
アジア/東京
「システムクロックでUTCを使用」のチェックを外す
[rootパスワード]
<パスワード>
[どのタイプをインストールしますか?]
すべての領域を使用する
[ストレージ構成をディスクに書込み中]
(データがすべて失われる旨の警告が表示されます)
データが削除されても問題がなければ「変更をディスクに書込む」を押します
[追加ソフトウェアの選択]
Minimal
「今すぐカスタマイズ」を選択して「次へ」
下記を選択して「次へ」
・ベースシステム>ネットワーキングツール
・ベースシステム>ベース
・開発>開発ツール
インストールが開始します
[おねでとうございます。CentOSのインストールが完了しました]
再起動してください
以下は rootユーザでログインして設定します。
========= ネットワーク関連設定 ==========
・NIC1の設定(NATアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
---(下記を変更)---------------------------
NM_CONTROLLED="yes"
ONBOOT="no"
↓
NM_CONTROLLED="no"
ONBOOT="yes"
------------------------------
・NIC2の設定(ホストオンリーアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
---(HWADDRの行以外を削除して下記を追加)---------------------------
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="AB:CB:EF:01:23" ←【この行は残す】
NM_CONTROLLED="no"
ONBOOT="yes"
IPADDR="192.168.56.201"
NETMASK="255.255.255.0"
------------------------------
・ネットワークを再起動
service network restart
・上記設定で sshログインができるようになります
ssh root@192.168.56.201
・DNSサーバの設定
vi /etc/resolv.conf
---(全て削除して下記を追加)---------------------------
nameserver 192.168.100.1
------------------------------
========= yumアップグレード ==========
yum -y upgrade
========= 不要サービスの停止 ==========
chkconfig --level 0123456 abrt-ccpp off
chkconfig --level 0123456 abrt-oops off
chkconfig --level 0123456 abrtd off
chkconfig --level 0123456 acpid off
chkconfig --level 0123456 atd off
chkconfig --level 0123456 auditd off
chkconfig --level 0123456 cpuspeed off
chkconfig --level 0123456 haldaemon off
chkconfig --level 0123456 ip6tables off
chkconfig --level 0123456 kdump off
chkconfig --level 0123456 lvm2-monitor off
chkconfig --level 0123456 mdmonitor off
chkconfig --level 0123456 messagebus off
chkconfig --level 0123456 netfs off
========= SELinux無効設定 ==========
vi /etc/sysconfig/selinux
---(下記を変更)---------------------------
SELINUX=enforcing
↓
SELINUX=disabled
------------------------------
・OSを再起動します。
shutdown -r now
========== iptables設定 ==========
・オリジナルのコンフィグのバックアップ
mv -i /etc/sysconfig/iptables /etc/sysconfig/iptables.org
・ssh と httpd のみ許可設定
vi /etc/sysconfig/iptables
---(下記を追加)---------------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
------------------------------
・iptablesを再起動します
service iptables restart
========= NTP設定 ==========
・初回は手動で時間合わせをします。
ntpdate ntp.nict.jp
・コンフィグをバックアップします
mv -i /etc/ntp.conf /etc/ntp.conf.org
・コンフィグを設定します。
vi /etc/ntp.conf
---(全て削除して下記を追加)---------------------------
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
------------------------------
・サービスを起動します。
service ntpd start
・自動起動設定をします。
chkconfig ntpd on
・動作を確認します。
ntpq -p
---このような表示があればOKです。---------------------------
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-a2.nict.go. .NICT. 1 u 26 64 1 8.929 1.125 0.000
ntp-a3.nict.go. .NICT. 1 u 25 64 1 6.050 -0.852 0.000
ntp-b2.nict.go. .NICT. 1 u 24 64 1 7.877 -0.638 0.000
------------------------------
========= Gmailリレー設定 ==========
・GmailのSMTP認証情報ファイルの作成
vi /etc/postfix/gmail
---(下記を追加)---------------------------
[smtp.gmail.com]:587 <Gmailのアドレス>:<Gmailのパスワード>
---------------------------
chmod 600 /etc/postfix/gmail
postmap /etc/postfix/gmail
・Postfixの設定
vi /etc/postfix/main.cf
---(下記を追加)---------------------------
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
------------------------------
・postfixを再起動します
service postfix restart
・root宛メールの送信先を変更します
vi /etc/aliases
---(下記を追加)---------------------------
root: <Gmailのアドレス>
---------------------------
・設定を反映させます。
newaliases
・メールが送信できる事を確認します
echo test | mail -s `hostname` root
========= リポジトリの追加(64bit) ==========
・postgreSQL9.2
rpm -ivh http://yum.postgresql.org/9.2/redhat/rhel-6.3-x86_64/pgdg-centos92-9.2-6.noarch.rpm
・RPMForge
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
・epal
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
・remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
vi /etc/yum.repos.d/remi.repo
---(下記を変更)---------------------------
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0
↓
enabled=1
------------------------------
========= 各種ミドルウェアインストール ==========
※バージョンは2013年2月16日時点のものです。
・Apache(2.2.15-15)
yum -y install httpd-devel
yum -y install mod_ssl
・PHP(5.4.11-1)
yum remove php php-*
yum -y install php
yum -y install php-devel
yum -y install php-pdo
yum -y install php-pgsql
yum -y install php-mbstring
yum -y install php-mcrypt
yum -y install php-gd
yum -y install php-pear
yum -y install php-pear-DB
yum -y install php-pear-Auth-*
yum -y install php-pecl-apc-devel
yum -y install zlib-devel
・PostgreSQL(9.2.3-2)
yum -y install postgresql92-devel
yum -y install postgresql92-server
yum -y install postgresql92-contrib
・memcached(1.4.15-2)
yum -y install memcached-devel
yum -y install php-pecl-memcache
========= リポジトリの無効化 ==========
vi /etc/yum.repos.d/rpmforge.repo
---(下記を変更)---------------------------
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
↓
enabled = 0
------------------------------
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled=0
------------------------------
vi /etc/yum.repos.d/remi.repo
---(下記を変更)---------------------------
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
↓
enabled=0
------------------------------
vi /etc/yum.repos.d/pgdg-92-centos.repo
---(下記を変更)---------------------------
[pgdg92]
name=PostgreSQL 9.2 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.2/redhat/rhel-$releasever-$basearch
enabled=1
↓
enabled=0
------------------------------
========= Apacheの設定 ==========
・不要なコンフィグを読込まないようにする
mv -i /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
・オリジナルのコンフィグをバックアップ
mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
・コンフィグを作成
vi /etc/httpd/conf/httpd.conf
---(下記を追加)---------------------------
httpd.conf
---httpd.conf(ここまで)---------------------------
・起動
service httpd start
・自動起動設定
chkconfig httpd on
========= PHPの設定 ==========
・エラーログ出力先作成
mkdir /var/log/php
chown apache /var/log/php
chmod 755 /var/log/php
vi /etc/php.ini
---(下記を変更)---------------------------
expose_php = On
↓
expose_php = Off
;date.timezone =
↓
date.timezone = 'Asia/Tokyo'
error_reporting = E_ALL & ~E_DEPRECATED
↓
error_reporting = E_ALL & ~E_NOTICE
;error_log = php_errors.log
↓
error_log = "/var/log/php/php_errors.log"
------------------------------
・セッションの保存先をmemcacheに設定
vi /etc/php.d/memcache.ini
---(下記を変更)---------------------------
;session.save_handler=memcache
↓
session.save_handler=memcache
;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
↓
session.save_path="tcp://localhost:11211"
------------------------------
vi /etc/httpd/conf.d/php.conf
---(下記を変更)---------------------------
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
↓
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
------------------------------
========= memcachedの設定 ==========
vi /etc/sysconfig/memcached
運用で様子をみて適度に変更
---(デフォルト値)---------------------------
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
------------------------------
・自動起動設定
chkconfig memcached on
・起動
service memcached start
service httpd restart
========= ログローティション設定 ==========
・不要なログの削除
service httpd stop
rm -f /var/log/httpd/*
service httpd start
vi /etc/logrotate.d/httpd
---(全て削除し下記内容に変更)---------------------------
/var/log/httpd/*log /var/log/php/*log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
------------------------------
・確認します
logrotate -dv /etc/logrotate.d/httpd
---下記のような表示であればOKです---------------------------
reading config file /etc/logrotate.d/httpd
reading config info for /var/log/httpd/*log /var/log/php/*log
Handling 1 logs
rotating pattern: /var/log/httpd/*log /var/log/php/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/httpd/access_log
log does not need rotating
(略)
------------------------------
========= postgreSQLの設定 ==========
・postgresユーザに切換えます
su postgres
・データベースクラスタの作成
/usr/pgsql-9.2/bin/initdb -E UTF-8 --no-locale -D /var/lib/pgsql/9.2/data
・rootユーザに戻ります
exit
・起動
service postgresql-9.2 start
・自動起動設定
chkconfig postgresql-9.2 on
・再度 postgresユーザに切換えます
su postgres
・データベース管理用ユーザ作成(スーパーユーザ)
createuser -Ps admin
------------------------------
Enter password for new role:<パスワード>
Enter it again:<パスワード>
------------------------------
・WEBアプリケーションからの接続用ユーザ作成(ログイン権限のみ)
createuser -Pl webapp
------------------------------
Enter password for new role:<パスワード>
Enter it again:<パスワード>
------------------------------
・データベースユーザの確認
psql -c '\du'
------------------------------
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
webapp | | {}
------------------------------
データベースの作成等は adminユーザで行い、WEBアプリケーション(PHP)からの接続は webappユーザを使います。
・共有メモリの設定
vi /var/lib/pgsql/9.2/data/postgresql.conf
---(下記を変更)---------------------------
shared_buffers = 32MB # min 128kB
↓
shared_buffers = 256MB # min 128kB
------------------------------
「shared_buffers」の妥当な初期値はシステムメモリの25%、今回はメモリ1GBのサーバなので 256MBとしました。
参考:http://www.postgresql.jp/document/9.2/html/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY
・ログの設定(処理が重くなるので本番サーバには設定しないのが吉)
vi /var/lib/pgsql/9.2/data/postgresql.conf
---(下記を変更)---------------------------
#log_duration = off
↓
log_duration = on
#log_line_prefix = '' # special values:
↓
log_line_prefix = '%m %u %d [%p] '
#log_statement = 'none' # none, ddl, mod, all
↓
log_statement = 'all' # none, ddl, mod, all
------------------------------
・ログディレクトリへのリンク作成
ln -s /var/lib/pgsql/9.2/data/pg_log /var/log/postgresql
・クライアント認証設定
vi /var/lib/pgsql/9.2/data/pg_hba.conf
---(下記を変更)---------------------------
# "local" is for Unix domain socket connections only
local all all trust
↓
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 trust
↓
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 trust
↓
#host all all ::1/128 trust
------------------------------
・設定を反映させるため再起動
service postgresql-9.2 restart
========== PostgreSQL(libpq) Version を合わせる ==========
PHPのPostgreSQLモジュールのみ9.2のライブラリを使ってコンパイルしますので、インストールしたphpと同じバージョンのソースを本家からダウンロードしておきます。(今回は5.4.11)
・適当な場所に展開
tar xvjf php-5.4.11.tar.bz2
・pgsqlモジュールのディレクトリへ移動
cd php-5.4.11/ext/pgsql/
・コンパイルしてインストール
phpize
./configure --with-pgsql=/usr/pgsql-9.2
make
make test
make install
・インストールが終わったらApacheを再起動
service httpd restart
========== PostgreSQL(libpq) Version を合わせる(pdo_pgsql) ==========
pecl download pdo_pgsql
tar xvzf PDO_PGSQL-1.0.2.tgz
cd PDO_PGSQL-1.0.2
phpize
./configure --with-pdo-pgsql=/usr/pgsql-9.2
make
make test
---(下記エラーが発生します。原因調査中2013-02-13)---------------------------
Warning: PHP Startup: Unable to load dynamic library '/home/admin/src/PDO_PGSQL-1.0.2/modules/pdo_pgsql.so' - /home/admin/src/PDO_PGSQL-1.0.2/modules/pdo_pgsql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
------------------------------
・エラーが気になるが、とりあえずインストールしておく
make install
・インストールが終わったらApacheを再起動
service httpd restart
========== 自動起動設定確認 ==========
chkconfig httpd on
chkconfig memcached on
chkconfig postgresql-9.2 on
chkconfig --list | grep :on
---下記のような表示であればOKです---------------------------
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postgresql-9.2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
------------------------------
・システムを再起動後してサービスが自動起動している事を確認
========= サーバー用秘密鍵・オレオレ証明書作成 の作成(SSL用) ==========
・作成用ディレクトリに移動します
cd /etc/pki/tls/certs/
・オリジナルのMakeファイルをバックアップします
cp -ip Makefile Makefile.org
・サーバー用証明書有効期限を1年から10年に変更します
sed -i 's/365/3650/g' Makefile
・サーバー用秘密鍵・証明書作成
make server.crt
---下記を入力---------------------------
Enter pass phrase:1234(←表示されません)
Verifying - Enter pass phrase:1234(←表示されません)
Enter pass phrase for server.key:1234(←表示されません)
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:<空エンター>
Locality Name (eg, city) [Newbury]:<空エンター>
Organization Name (eg, company) [My Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []:lapp001
Email Address []:<空エンター>
------------------------------
・サーバー用秘密鍵からパスワード削除
openssl rsa -in server.key -out server.key
---下記を入力---------------------------
Enter pass phrase for server.key:1234(←表示されません)
------------------------------
========= Apacheの設定(SSL) ==========
・SSL設定ファイルのオリジナルをバックアッップします
mv -i /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org
vi /etc/httpd/conf.d/ssl.conf
---(下記を追加)---------------------------
ssl.conf
------------------------------
・httpd再起動
service httpd restart
・httpsで接続できることを確認(オレオレ証明書なので警告が表示されます)
以上です。
16
« LAMPサーバ構築メモ(CentOS6.4+Apache+MySQL+PHP) | 書籍「インターフェースデザインの心理学」 »
コメント
Comment
list
コメントの投稿
Comment
form
トラックバック
トラックバックURL
→http://arpanet617.blog.fc2.com/tb.php/38-4e2f4771
この記事にトラックバックする(FC2ブログユーザー)
Trackback
list
| h o m e |