RHEL6.6から14日で CentOS 6.6 がリリースされました。既にCentOS7がリリースされていますが、かなりの変更がありましたので、まだまだCentOS6.x系で運用されている方も多いのではないでしょうか。さっそく、CentOS 6.6 で LAMP構成をインストールする手順をメモしておきました。
▽ CentOS 6.6 リリースノート
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.6/Japanese
CentOS 6.6 の主な変更点
※機械翻訳ですので正しくはRHEL6.6のリリースノートをご確認ください。
- Enhanced SCSI ユニット·アテンションの取り扱い
- ハイ・パフォーマンス・ネットワーキング(HPN)アドオンがOSの一部として提供
- SCAP(Security Content Automation Protocol:セキュリティ設定共通化手順)に対応
- 新しいHyperVの-デーモンのパッケージの追加
- デバイスマッパーの機能強化
- keepalivedのパッケージの完全サポート
- 米国連邦標準規格 FIPS-140レベル1認定
- Active Directoryとの相互運用性強化
- 外部認証のためのApacheモジュール追加
CentOS 6.6 ISOイメージのダウンロード
CentOSのWikiページからダウンロードできます。今回は64bit版をインストールしますので、CentOS-6(Minor release 6.6)の x86_64 をクリックします。「Actual Country」に日本のダウンロードミラーサイトがあると思いますので、そちらから「CentOS-6.6-x86_64-bin-DVD1.iso」ダウンロードしてください。
マシン構成
○仮想マシン構成
メモリ:1024MB
NIC1:NATアダプター
NIC2:ホストオンリーアダプター
○ネットワーク構成(※ご自分の環境に書換えてください)
ホスト名: centos66
IPアドレス: 192.168.56.201/24
DNSサーバ: 8.8.8.8
CentOS6.6のインストール
[Welcom to CentOS 6.6!]
Install or upgrade an existing system
[Disc Found]
SKIP(Tabキーで選択)
[CentOS6]
NEXT
[What language 〜]
Japanese(日本語)
[このシステム用の適切なキーボードを選択します]
日本語
[どちらのタイプのストレージデバイスにインストールしますか?]
基本ストレージデバイス
[ストレージでバイスの警告]
はい。含まれていません。どのようなデータであっても破棄してください
(※警告の通りです。ご注意下さい)
[ホスト名]
centos66
[使用するタイムゾーン〜]
アジア/東京
「システムクロックでUTCを使用」のチェックを外す
[rootパスワード]
<パスワード>
[どのタイプのインストールをしますか?]
すべての領域を使用する
[ストレージ構成をディスクに書き込み中]
(データがすべて失われる旨の警告が表示されます)
データが削除されても問題がなければ「変更をディスクに書込む」を押します
[CentOSのデフォルトインストールは最小限インストールです。オプションとして追加の〜]
Minimal
「今すぐカスタマイズ」を選択して「次へ」
下記を選択して「次へ」
・ベースシステム>ネットワーキングツール
・ベースシステム>ベース
・開発>開発ツール
インストールが開始します
[おねでとうございます。CentOSのインストールが完了しました]
再起動してください
ネットワーク関連設定
・NIC1の設定(NATアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=no NM_CONTROLLED=yes ↓ ONBOOT=yes NM_CONTROLLED=no
・NIC2の設定(ホストオンリーアダプター)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
—(HWADDRの行以外を削除して下記を追加)————————— DEVICE=eth1 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
・ネットワークサービス再起動
service network restart
・DNSサーバの設定
vi /etc/resolv.conf
—(全て削除して下記を追加)————————— nameserver 8.8.8.8
・上記設定で sshログインができるようになります
ssh root@192.168.56.201
yumアップグレード
yum -y upgrade
不要サービスの停止
・下記のコマンドを実行してください
chkconfig --level 0123456 abrt-ccpp off 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無効設定
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
・10分ほど経過したら動作を確認します。
ntpq -p
—(このような表示があればOKです)—————————
*ntp-b2.nict.go. .NICT. 1 u 64 64 377 14.514 -2.500 10.347
+ntp-a3.nict.go. .NICT. 1 u 58 128 377 33.064 -12.271 21.193
+ntp-a2.nict.go. .NICT. 1 u 57 128 377 21.539 -4.624 11.474
——————————
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)
・RPMForge
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
・epal
rpm -ivh 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
・remiリポジトリを有効化
vi /etc/yum.repos.d/remi.repo
—(下記を変更)—————————
[remi]
name=Les RPM de remi pour Enterprise Linux 6 – $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
enabled=0
↓
enabled=1
——————————
各種ミドルウェアインストール
※バージョンは2014年10月29日時点のものです。
・Apache(2.2.15-39)
yum -y install httpd-devel
yum -y install mod_ssl
・PHP(5.4.34-1)
yum remove php php-*
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(5.5.40-1)
yum -y install mysql-devel
yum -y install mysql-server
・memcached(1.4.21-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/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/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 6 – $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
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
——————————
・起動
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 & ~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=""
・自動起動設定
chkconfig memcached on
・起動
service memcached start
service httpd restart
MySQLの設定
・ログの出力先作成
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
——————————
・起動
service mysqld start
・自動起動設定
chkconfig mysqld on
・初期設定
mysql_secure_installation
対話式で設定が始まります。
rootにパスワードを設定する以外は、すべてエンターでOKです。(不要なユーザ等を削除してくれます)
—————————
(略)
Set root password? [Y/n]
New password: <パスワード>
Re-enter new password:<パスワード>
(略)
—————————
ログローティション設定
・不要なログの削除
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 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 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
(略)
——————————
vi /etc/logrotate.d/mysql
/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/mysql
・確認します
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
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
——————————
自動起動設定確認
・下記のコマンドを実行してください
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 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
・システムを再起動後して各種サービスが自動起動している事を確認します。
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) [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) []:centos66
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
——————————
SSL3.0には脆弱性がありますので「SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2」として必ずSSL3.0を無効にしてください。
・httpd再起動
service httpd restart
・httpsで接続できることを確認(自己証明書なので警告が表示されます)
以上です。
コメント
はじめまして、大変お世話になっております。
桃北といいます。Linuxの超初心者です。
現在、ご貴殿のブログを拝読しながらLAMPサーバ構築の学習をさせて頂いております。https://blog.apar.jp/linux/793/
一つご質問なのですが、【PHPの設定】でvi /etc/php.d/memcache.iniというiniファイルですが、dir /etc/php.dでファイル一覧には見当たらず、z-memcached.iniというファイルがありましたのでその中身を見ますと、どうもこのファイルのような気がするのですが、如何でしょうか? それともマイナーチェンジで仕様が変更になっているのでしょうか? 何卒、ご教授をお願い致します。
こちらの環境は以下のとおりです。
Windows8.0 + VirtualBox + CentOS6.6
※VirtualBoxはNAT + ホストオンリー
※CentOS6.6は、CentOS-6.6-x86_64-bin-DVD1.isoよりブログ記事に従ってインストールしました。
以上
桃北さんはじめまして、ご質問ありがとうございます。
私のほうでもこの記事の手順を実施してみましたが、php-pecl-memcached の設定ファイルは「/etc/php.d/memcached.ini」がインストールされていますので、仕様の変更ということではないようです。
php-pecl-memcached の RPMパッケージの現在のバージョンは3ですが、バージョン2の頃は「/etc/php.d/z-memcached.ini」がインストールされていたようです。もしかしたらですが、なにかが原因で php-pecl-memcached のバージョン2がインストールされていたのかもしれませんね。
/etc/php.d/ 以下の末尾が .ini のファイルは phpの設定ファイルとして読み込まれますので「/etc/php.d/z-memcached.ini」を memcached の設定ファイルとしてお使い頂いても問題ないかと思いますが、もしお時間があるようでしたら再度インストールしてみるのをオススメします。
お世話になります。
このまま最後まで続けて、再度トライしようと思います。
実はやりたいことがありまして、Zabbixの構築記事を探していたところ、ご貴殿のブログに辿り着きました。LAMPサーバー構築後、Zabbixをインストールする予定です。
ご返信ありがとうございました。(m_m)