RHEL7.0から約1ヶ月で CentOS7.0 がリリースされました。バージョン7にちなんで、7月7日にリリースするあたりに余裕を感じます。大きな変更点としては、Kernel3.x の採用や、標準のファイルシステムが xfs になったようです。ほかにも細かい部分でかなりの変更があり、少し戸惑いました。全体的に Fedora ぽくなってきましたね。
・CentOS 7.0.1406 リリースノート
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS7
・変更点
serviceコマンド、chkconfigコマンドが、systemctlコマンドに統合
NICの名前が、eth0→enp0s3、eth1→enp0s8 に変更(名前は環境によって違うようです)
iptables が firewalld に変更
ntpd が chronyd に変更
Apacheのパッケージが 2.2 から 2.4 に変更(ディレクティブが多少違うので注意です)
MySQL が MariaDB に変更(サービス識別子が mariadb になっています)
さっそく、CentOS7でLAMP構成をインストールする手順をメモしておきました。
インストールにあたってダウンロードページから CentOS7の Everything.iso をダウンロードしておきます。
マシン構成
○仮想マシン構成
メモリ:1024MB
NIC1:NATアダプター
NIC2:ホストオンリーアダプター
○ネットワーク構成(※ご自分の環境に書換えてください)
ホスト名: centos70
IPアドレス: 192.168.56.201/24
DNSサーバ: 8.8.8.8
CentOS7のインストール
[CentOS 7]
Install CentOS 7
[WELCOME TO CENTOS 7.]
日本語 Japanese
[インストールの概要]
・「ソフトウェアの選択」をクリックし、下記にチェックを入れて「完了」
最小限のインストール>開発ツール
・「インストール先」をクリックし、インストール先のデバイスを選択して「完了」
※2回選択しないと設定が反映されないことがあるようです。
・「ネットワークとホスト名」をクリックし、ホスト名に下記を入力して「完了」
ホスト名:centos70
上記の設定が済んだら「インストールの開始」をクリック
パーティションの作成とインストールが開始します
[ユーザーの設定]
・「rootパスワード」をクリックし、パスワードを設定したら「完了」
~~~ インストールが完了するまでしばらく待ちます ~~~
[完了しました!]
再起動してください
ネットワーク関連設定
※ネットワークアダプタの名前は環境によって、異なるようです。ご自分の環境にあわせて設定してください。
・NIC1の設定(NATアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
—(下記を変更)—————————
IPV6INIT=yes
↓
IPV6INIT=no
ONBOOT=no
↓
ONBOOT=yes
——————————
・NIC2の設定(ホストオンリーアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
—(HWADDRの行以外を削除して下記を追加)—————————
HWADDR=08:00:27:XX:XX:XX ←【この行は残す】
TYPE=Ethernet
BOOTPROTO=none
NAME=enp0s8
ONBOOT=yes
IPV6INIT=no
IPADDR=192.168.56.201
NETMASK=255.255.255.0
——————————
・ネットワークサービス再起動
service network restart
・DNSサーバの設定
vi /etc/resolv.conf
—(全て削除して下記を追加)—————————
nameserver 8.8.8.8
——————————
・上記設定で sshログインができるようになります
ssh root@192.168.56.201
基本コマンドのインストール
yum -y groupinstall base
yum -y groupinstall network-tools
yumアップグレード
yum -y upgrade
不要サービスの停止
systemctl disable abrt-ccpp
systemctl disable abrt-oops
systemctl disable abrt-vmcore
systemctl disable abrt-xorg
systemctl disable abrtd
systemctl disable atd
systemctl disable auditd
systemctl disable avahi-daemon
systemctl disable kdump
systemctl disable mdmonitor
systemctl disable dmraid-activation
SELinux無効設定
vi /etc/sysconfig/selinux
—(下記を変更)—————————
SELINUX=enforcing
↓
SELINUX=disabled
——————————
・OSを再起動します。
shutdown -r now
firewalld設定
・現在の設定の確認
firewall-cmd –list-all-zones
——————————
(略)
public (default, active)
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
(略)
——————————
初期設定では publicゾーンに ssh のみ許可されています
・追加で http と https を許可設定します
firewall-cmd –add-service=http –zone=public –permanent
firewall-cmd –add-service=https –zone=public –permanent
・設定を読込みます
firewall-cmd –reload
・設定を確認します
firewall-cmd –list-services –zone=public
—(下記表示であればOK)—————————
dhcpv6-client http https ssh
——————————
Chrony設定(NTP)
・初回は手動で時間合わせをします。
ntpdate ntp.nict.jp
・オリジナルのコンフィグをバックアップします。
mv -i /etc/chrony.conf /etc/chrony.conf.org
・コンフィグを作成します。
vi /etc/chrony.conf
—(下記を追加)—————————
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp
——————————
・サービスを起動します。
systemctl restart chronyd
・自動起動設定をします。
systemctl enable chronyd
・10分ほど経過したら動作を確認します。
chronyc sources -v
—(このような表示があればOKです)—————————
^+ ntp-a3.nict.go.jp 1 6 7 3 -591us[ -154us] +/- 2435us
^+ ntp-a2.nict.go.jp 1 6 7 2 -770us[ -333us] +/- 3106us
^* ntp-b3.nict.go.jp 1 6 7 2 +485us[ +922us] +/- 2348us
——————————
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
——————————
・設定した内容を読込みます
systemctl reload postfix
・root宛メールの送信先を変更します
vi /etc/aliases
—(下記を追加)—————————
root: <Gmailのアドレス>
—————————
・設定を反映させます。
newaliases
・メールが送信できる事を確認します
echo test | mail -s hostname
root
リポジトリの追加(64bit)
・RPMForge
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
・epal(2014-07-08の時点ではベータ版です)
rpm -ivh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
rpm –import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
・remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.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 7 – $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/7/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/7/remi/mirror
enabled=0
↓
enabled=1
——————————
各種ミドルウェアインストール
※バージョンは2014年7月8日時点のものです。
・Apache(2.4.6-17)
yum -y install httpd-devel
yum -y install mod_ssl
・PHP(5.4.30-1)
yum -y install php
yum -y install php-devel
yum -y install php-pdo
yum -y install php-mysql
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(MariaDB)(5.5.37-1)
yum -y install mysql-devel
yum -y install mysql-server
・memcached(1.4.20-1)
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/el7/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el7/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 7 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
↓
enabled=0
——————————
vi /etc/yum.repos.d/remi.repo
—(下記を変更)—————————
[remi]
name=Les RPM de remi pour Enterprise Linux 7 – $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/7/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/7/remi/mirror
enabled=1
↓
enabled=0
——————————
Apacheの設定
・不要なコンフィグを読込まないようにする
mv -i /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.conf.org
mv -i /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/userdir.conf.org
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
——————————
アクセス制限の記述「Require all granted」を忘れずに! また、「NameVirtualHost *:80」は不要です。
・起動
systemctl start httpd
・自動起動設定
systemctl enable httpd
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 & ~E_STRICT
↓
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=””
——————————
・自動起動設定
systemctl enable memcached
・起動
systemctl start memcached
systemctl restart httpd
MySQL(MariaDB)の設定
・ログの出力先作成
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
・オリジナルのコンフィグをバックアップします。
mv -i /etc/my.cnf /etc/my.cnf.org
・コンフィグを作成します。
vi /etc/my.cnf
—(下記を追加)—————————
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
user=mysql
character-set-server = utf8
skip-character-set-client-handshake
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=1
min_examined_row_limit=1000
[client]
default-character-set = utf8
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
——————————
・起動 ※サービス識別子が「mariadb」なので注意です
systemctl start mariadb
・自動起動設定
systemctl enable mariadb
・初期設定
mysql_secure_installation
対話式で設定が始まります。
rootにパスワードを設定する以外は、すべてエンターでOKです。(不要なユーザ等を削除してくれます)
—————————
(略)
Set root password? [Y/n]
New password: <パスワード>
Re-enter new password:<パスワード>
(略)
—————————
ログローティション設定
・不要なログの削除
systemctl stop httpd
rm -f /var/log/httpd/*
systemctl start httpd
vi /etc/logrotate.d/httpd
—(全て削除し下記内容に変更)—————————
/var/log/httpd/*log /var/log/php/*log {
daily
missingok
dateext
rotate 60
create 644 apache apache
sharedscripts
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
——————————
・確認します
logrotate -dv /etc/logrotate.d/httpd
—下記のような表示であればOKです—————————
reading config file /etc/logrotate.d/httpd
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
(略)
——————————
vi /etc/logrotate.d/mariadb
—(全て削除し下記内容に変更)—————————
/var/log/mysql/*log {
daily
missingok
dateext
rotate 60
sharedscripts
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping -u root -p<パスワード> &>/dev/null
then
/usr/bin/mysqladmin flush-logs -u root -p<パスワード>
fi
endscript
}
——————————
・パスワードを書いているのでパーミッション設定
chmod 600 /etc/logrotate.d/mariadb
・確認します
logrotate -dv /etc/logrotate.d/mariadb
—下記のような表示であればOKです—————————
reading config file /etc/logrotate.d/mariadb
Handling 1 logs
rotating pattern: /var/log/mysql/*log after 1 days (60 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/mysql/mysqld.log
log does not need rotating
considering log /var/log/mysql/slow_query.log
log does not need rotating
not running postrotate script, since no logs were rotated
——————————
自動起動設定確認
systemctl list-unit-files | grep -e httpd -e mariadb -e memcached
—下記のような表示であればOKです—————————
httpd.service enabled
mariadb.service enabled
memcached.service enabled
——————————
・システムを再起動後して各種サービスが自動起動している事を確認します。
shutdown -r now
サーバー用秘密鍵・自己署名証明書の作成(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) [XX]:JP
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) []:centos70
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再起動
systemctl restart httpd
・httpsで接続できることを確認(自己署名証明書なので警告が表示されます)
以上です。