2016年5月25日 CentOS 6.8 がリリースされました、RHEL6.8から15日でのリリースになります。CentOS6初期の頃は、かなりの遅延がありましたが、最近は安定して2週間前後でリリースされていますので、安心して使えますね。さっそく、CentOS 6.8 で LAMP構成をインストールする手順をメモしておきました。
CentOS 6.8 の主な変更点
今回のバージョンアップでは、Yum、stunnel、vsftp、Git、Postfix といった基本的なシステムツールが TLS プロトコルのバージョン 1.2 をサポートするよう修正されました。セキュリティ的には嬉しい変更ですね。また、CentOS7系と同じくchronyがntpdの代替えとして追加されています。詳細はリリースノートをご参照ください。
- CentOS 6.8 リリースノート(英文)
- RHEL 6.8 リリースノート(日本語)
CentOS 6.8 のダウンロード
はじめに、CentOSのダウンロードページから「CentOS-6.8-x86_64-bin-DVD1.iso」をダウンロードしておきます。今回は64bit版をインストールします。
マシン構成
○仮想マシン構成
メモリ:1024MB
NIC1:NATアダプター
NIC2:ホストオンリーアダプター
○ネットワーク構成(※ご自分の環境に書換えてください)
ホスト名: centos68
IPアドレス: 192.168.56.201/24
DNSサーバ: 8.8.8.8
CentOS 6.8 のインストール
[Welcom to CentOS 6.8!]
一番上の「Install or upgrade an existing system」を選択して、エンターを押します。
[Disc Found]
Tabキーで「SKIP」を選択して、エンターを押します。
[CentOS6]
NEXT
[What language 〜]
Japanese(日本語)
[このシステム用の適切なキーボードを選択します]
日本語
[どちらのタイプのストレージデバイスにインストールしますか?]
基本ストレージデバイス
[ストレージでバイスの警告]
はい。含まれていません。どのようなデータであっても破棄してください
(※警告の通りです。ご注意下さい)
[ホスト名]
centos68
[使用するタイムゾーン〜]
アジア/東京
「システムクロックでUTCを使用」のチェックを外す
[rootパスワード]
<パスワード>
[どのタイプのインストールをしますか?]
すべての領域を使用する
[ストレージ構成をディスクに書き込み中]
(データがすべて失われる旨の警告が表示されます)
データが削除されても問題がなければ「変更をディスクに書込む」を押します
[CentOSのデフォルトインストールは最小限インストールです〜]
「Minimal」を選択して「次へ」
〜〜〜 インストールが完了するまでしばらく待ちます 〜〜〜
[おねでとうございます。CentOSのインストールが完了しました]
再起動してください。
ネットワーク関連設定
NICの設定
・NIC1の設定(NATアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
NM_CONTROLLED=yes
↓
ONBOOT=yes
NM_CONTROLLED=no
・NIC2の設定(ホストオンリーアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
---(HWADDRの行以外を削除して下記を追加)-------
HWADDR=08:00:27:XX:XX:XX ←【この行は残す】
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.56.201
NETMASK=255.255.255.0
ネットワークサービス再起動
DNSサーバの設定
vi /etc/resolv.conf
---(全て削除して下記を追加)-------
以上の設定で、手元のPCから ssh ログインができるようになります。
基本パッケージのインストール
開発ツールなど、基本的なパッケージをインストールしておきます。
yum -y groupinstall development
yum -y groupinstall network-tools
yum アップデート
インストール済みのパッケージを、最新版にアップデートします。
不要サービスの停止
下記のコマンドを実行
chkconfig --level 0123456 abrtd off
chkconfig --level 0123456 acpid off
chkconfig --level 0123456 atd off
chkconfig --level 0123456 auditd off
chkconfig --level 0123456 blk-availability off
chkconfig --level 0123456 cpuspeed off
chkconfig --level 0123456 haldaemon off
chkconfig --level 0123456 ip6tables off
chkconfig --level 0123456 kdump off
chkconfig --level 0123456 mdmonitor off
chkconfig --level 0123456 messagebus off
chkconfig --level 0123456 netfs off
SELinux無効設定
vim /etc/sysconfig/selinux
↓
SELINUX=disabled
OSを再起動します
iptables設定
オリジナルのコンフィグをバックアップします
・ssh と httpd のみ許可設定
vim /etc/sysconfig/iptables
: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 を再起動します
NTP設定
初回は手動で時間合わせをします
オリジナルのコンフィグをバックアップします
・コンフィグを作成します
vim /etc/ntp.conf
server ntp.nict.jp
server ntp.nict.jp
起動
自動起動設定
・10分ほど経過したら動作を確認します
ntpq -p
---(以下のような表示があればOKです)-------
+ntp-b3.nict.go. .NICT. 1 u 225 256 377 3.955 1.908 1.051
+ntp-b2.nict.go. .NICT. 1 u 172 256 377 3.943 1.756 1.187
Gmailリレー設定
・GmailのSMTP認証情報ファイルの作成
vim /etc/postfix/gmail
パスワードを書いているので、パーミッションを変更(root のみアクセス可)
PostfixのDBファイルを生成
・Postfixの設定
vim /etc/postfix/main.cf
---(下記を最終行に追加)-------
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
設定した内容を読込みます
・root宛メールの転送先を設定します
vim /etc/aliases
---(下記を追加)-------
メールエイリアスのDBファイルを更新します
root宛のメールが、Gmailのアドレスに届くことを確認します
yum リポジトリの追加(64bit)
(2016年9月15日追記)公式な発表はありませんが RPMForge は終了したようです。
EPEL
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Remi
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
MySQL
・Remi リポジトリを有効化
vim /etc/yum.repos.d/remi.repo
(略)
enabled=0
↓
enabled=1
[remi-php56]
(略)
enabled=0
↓
enabled=1
【補足】
標準の remi リポジトリから、PHP5.4がインストールされますが、既にサポートが終了しています。セキュリティパッチも提供されませんので、PHP5.6以上をインストールすることをオススメします。そのため、上の手順でも「remi-php56」リポジトリを有効化して、PHP5.6をインストールするようにしています。
▽ PHP: Supported Versions
http://php.net/supported-versions.php
各種ミドルウェアインストール
※バージョンは2016年6月1日時点のものです。
Apache(2.2.15-53)
yum -y install mod_ssl
PHP(5.6.22-1)
yum -y install php-devel
yum -y install php-pdo
yum -y install php-mysqlnd
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
MySQL(5.6.30-2)
yum -y install mysql-community-server
Memcached(1.4.25-1)
yum -y install php-pecl-memcache
yum リポジトリの無効化
vim /etc/yum.repos.d/epel.repo
(略)
enabled=1
↓
enabled=0
vim /etc/yum.repos.d/remi.repo
(略)
enabled=1
↓
enabled=0
[remi-php56]
(略)
enabled=1
↓
enabled=0
vim /etc/yum.repos.d/mysql-community.repo
(略)
enabled=1
↓
enabled=0
[mysql-tools-community]
(略)
enabled=1
↓
enabled=0
[mysql56-community]
(略)
enabled=1
↓
enabled=0
Apacheの設定
不要なコンフィグを読込まないようにする
オリジナルのコンフィグをバックアップします
コンフィグを作成します
vim /etc/httpd/conf/httpd.conf
起動
自動起動設定
自己署名のサーバー証明書の作成(HTTPS用)
秘密鍵の作成
・CSR(証明書署名要求)の作成(入力するのは2箇所だけです)
openssl req -new -key server.key < server.csr
State or Province Name (full name) []:<空エンター>
Locality Name (eg, city) [Default City]:<空エンター>
Organization Name (eg, company) [Default Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []: centos68
Email Address []:<空エンター>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<空エンター>
An optional company name []:<空エンター>
自己署名のサーバー証明書の作成(有効期限10年)
秘密鍵とサーバー証明書を適切な場所に移動
mv -i server.crt /etc/pki/tls/certs/
パーミッションを変更
chmod 600 /etc/pki/tls/certs/server.crt
CSRを削除
Apache HTTPS(SSL/TLS)の設定
SSL設定ファイルのオリジナルをバックアッップします
SSL設定ファイルを作成
vim /etc/httpd/conf.d/ssl.conf
SSL3.0には脆弱性がありますので「SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2」として必ずSSL3.0を無効にしてください。
設定ファイルを再読込します
WEBブラウザで HTTPSで接続できることを確認します(自己署名のサーバー証明書の場合は警告が表示されます)
PHPの設定
エラーログの出力先作成
chown apache /var/log/php
・PHPの設定
vim /etc/php.ini
↓
expose_php = Off
;date.timezone =
↓
date.timezone = 'Asia/Tokyo'
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
↓
error_reporting = E_ALL & ~E_NOTICE
;error_log = php_errors.log
↓
error_log = "/var/log/php/php_errors.log"
・セッションの保存先を Memcache に変更
vim /etc/php.d/40-memcache.ini
↓
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"
vim /etc/httpd/conf.d/php.conf
php_value session.save_path "/var/lib/php/session"
↓
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
Apacheを再起動
Memcachedの設定
vim /etc/sysconfig/memcached
運用で様子をみて適度に変更(CACHESIZEの単位はMBです)
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
起動
自動起動設定
MySQLの設定
ログの出力先を作成
chown -R mysql:mysql /var/log/mysql
オリジナルのコンフィグをバックアップ
・コンフィグを作成します
vim /etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
skip-character-set-client-handshake
character-set-server = utf8
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1
min_examined_row_limit=1000
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
起動
自動起動設定
・セキュリティ設定
mysql_secure_installation
対話式で設定が始まります。rootにパスワードを設定する以外は、すべてエンターでOKです。(不要なユーザ等を削除してくれます)
Set root password? [Y/n]
New password: <パスワード>
Re-enter new password:<パスワード>
(略)
ログローテーション設定
設定ファイルのバックアップ用ディレクトリを作成しておきます
Apacheのログローテーション設定
オリジナルの設定ファイルをバックアップ
・設定ファイルを作成します
vim /etc/logrotate.d/httpd
/var/log/httpd/*log /var/log/php/*log { daily missingok dateext rotate 60 create 644 apache apache sharedscripts postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }
・確認します
logrotate -dv /etc/logrotate.d/httpd
下記のような表示があればOK
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
(略)
MySQLのログローテーション設定
オリジナルの設定ファイルをバックアップ
・設定ファイルを作成します
vim /etc/logrotate.d/mysql
/var/log/mysql/*log { daily missingok dateext rotate 60 sharedscripts postrotate if test -x /usr/bin/mysqladmin && \ /usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf ping &>/dev/null then /usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs fi endscript }
・MySQL の root ユーザのパスワードファイルを作成
vim /root/.my.cnf
user=root
password="<パスワード>"
パスワードを書いているので、パーミッションを変更(root のみアクセス可)
chmod 600 /root/.my.cnf
・確認します
logrotate -dv /etc/logrotate.d/mysql
下記のような表示があればOK
reading config info for /var/log/mysql/*log
Handling 1 logs
rotating pattern: /var/log/mysql/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
(略)
自動起動設定確認
chkconfig --list | grep :on
下記のような表示であればOKです
abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off 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 iptables 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 lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off mysqld 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 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
最後にOSを再起動して、各種サービスが自動起動している事を確認しましょう。
以上です。設定お疲れ様でした!
コメント