CentOS7でLAMPサーバインストールメモ【CentOS7+Apache+MySQL+PHP】

CentOS7でLAMPサーバインストールメモ【CentOS7+Apache+MySQL+PHP】
あぱーブログ
2014年7月9日  カテゴリー:Linux  タグ: ,
Pocket
LINEで送る

RHEL7.0から約1ヶ月で CentOS7.0 がリリースされました。バージョン7にちなんで、7月7日にリリースするあたりに余裕を感じます。大きな変更点としては、Kernel3.x の採用や、標準のファイルシステムが xfs になったようです。ほかにも細かい部分でかなりの変更があり、少し戸惑いました。全体的に Fedora ぽくなってきましたね。

(2017年4月21日追記)最新バージョンのインストールメモは「CentOS 7.3 (1611) LAMPサーバインストールメモ【Apache2.4+MySQL5.7+PHP7.1】」です。よければそちらをご参照ください。

 

・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 になっています)※この記事のインストール手順ではMySQLリポジトリを追加して、CentOS6.xと同じくMySQLインストールしています。

さっそく、CentOS7でLAMP構成をインストールする手順をメモしておきました。

インストールにあたってダウンロードページから CentOS7の Everything.iso をダウンロードしておきます。

マシン構成

VirtualBoxの仮想マシンにインストール

○仮想マシン構成
メモリ: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
------------------------------

・ネットワークサービス再起動
systemctl restart network

・上記設定で sshログインができるようになります
ssh root@192.168.56.201

・NetworkManager がDNSサーバを書き換えないように変更
vi /etc/NetworkManager/NetworkManager.conf
---(下記を追加)---------------------------
dns=none
------------------------------

・NetworkManager を再起動
systemctl restart NetworkManager.service

・DNSサーバの設定
vi /etc/resolv.conf
---(全て削除して下記を追加)---------------------------
nameserver 8.8.8.8
------------------------------

基本コマンドのインストール

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設定

・現在の設定の確認

初期設定では publicゾーンに ssh のみ許可されています

・追加で http と https を許可設定します

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

・メールが送信できる事を確認します

リポジトリの追加(64bit)

・RPMForge

・epal

・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
------------------------------

・MySQL

各種ミドルウェアインストール

※バージョンは2014年11月15日時点のものです。

・Apache(2.4.6-18)
yum -y install httpd-devel
yum -y install mod_ssl

・PHP(5.4.34-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(5.6.21-2)
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/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
------------------------------

vi /etc/yum.repos.d/mysql-community.repo
---(下記を変更)---------------------------
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
 ↓
enabled=0

(略)
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
 ↓
enabled=0

(略)
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
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

・セッションの保存先をmemcacheに設定
vi /etc/php.d/memcache.ini

vi /etc/httpd/conf.d/php.conf

memcachedの設定

vi /etc/sysconfig/memcached
運用で様子をみて適度に変更

・自動起動設定
systemctl enable memcached

・起動
systemctl start memcached
systemctl restart httpd

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
sql_mode=NO_ENGINE_SUBSTITUTION
user=mysql

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

[client]
default-character-set = utf8

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
------------------------------

・起動 
systemctl start mysqld

・自動起動設定
systemctl enable mysqld

・初期設定
mysql_secure_installation
対話式で設定が始まります。
rootにパスワードを設定する以外は、すべて空エンター[Y]でOKです。(不要なユーザ等を削除してくれます)
---------------------------
(略)
Set root password? [Y/n]
New password: <パスワード>
Re-enter new password:<パスワード>
(略)
---------------------------

ログローテーション設定

・設定ファイルのバックアップ用ディレクトリを作成しておきます
mkdir /etc/logrotate.off

Apacheログのローテーション設定

・オリジナルの設定ファイルをバックアップします
mv -i /etc/logrotate.d/httpd /etc/logrotate.off/

・設定ファイルを作成します
vi /etc/logrotate.d/httpd

・確認します
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
(略)
------------------------------

MySQLログのローテーション設定

・オリジナルの設定ファイルをバックアップします
mv -i /etc/logrotate.d/mysql /etc/logrotate.off/

・設定ファイルを作成します
vi /etc/logrotate.d/mysql

・パスワードを書いているのでパーミッション設定
chmod 600 /etc/logrotate.d/mysql

・確認します
logrotate -dv /etc/logrotate.d/mysql
---下記のような表示であればOKです---------------------------
reading config file /etc/logrotate.d/mysql

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 mysqld -e memcached
---下記のような表示であればOKです---------------------------
httpd.service enabled
memcached.service enabled
mysqld.service enabled
------------------------------

・一度システムを再起動して各種サービスが自動起動している事を確認します。
shutdown -r now
ps aux | grep -e httpd -e mysqld -e memcached

サーバー用秘密鍵・自己署名証明書の作成(SSL用)

・作成用ディレクトリに移動します
cd /etc/pki/tls/certs/

・オリジナルのMakeファイルをバックアップします
cp -ip Makefile Makefile.org

・サーバー用証明書有効期限を1年から10年に変更します

・サーバー用秘密鍵・自己署名証明書の作成
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
------------------------------
SSL3.0には脆弱性がありますので「SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2」として必ずSSL3.0を無効にしてください。

▽ SSL 3.0 の脆弱性対策について(CVE-2014-3566)|IPA
https://www.ipa.go.jp/security/announce/20141017-ssl.html

・httpd再起動
systemctl restart httpd

・httpsで接続できることを確認(自己署名証明書なので警告が表示されます)

以上です。

スポンサーリンク
Pocket
LINEで送る

CentOS7でLAMPサーバインストールメモ【CentOS7+Apache+MySQL+PHP】」への6件のフィードバック

  1. ピンバック: CentOS7でLAMPサーバインストールメモ【CentOS7+Apache+MySQL(MaridaDB)+PHP】 | あぱーブログ

  2. ピンバック: 2014-09-26のニュース | Re: spam news

  3. tkatoverano

    参考にさせてもらっています。
    ベータ版
    rpm -ivh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
    葉なくなったようです。
    rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e//epel-release-7-2.noarch.rpm
    が使えます。また、mySQL/mariaDBの起動ができず混乱しましたが
    pid-file=/var/run/mysqld/mysqld.pid
    の/var/run/mysqldは生成されないようなので
    ln -s /var/run/mariadb /var/run/mysqld
    を追加したところ進めることができました。

    返信
  4. tkatoverano

    すみません。まず mysql-server が入らないので mariadb-server を入れました。さらに先日のコメントの方法で
    ln -s /var/run/mariadb /var/run/mysqld
    を作成してもこれは毎回立ち上げのときに消えてしまいます。常時作成するには
    /etc/tmpfiles.d/mysqld.conf として一行

    D /var/run/mysqld 0755 mysql mysql

    を書いたファイルを置いて、リブートする方がよいようです。

    返信
    1. あぱーブログあぱーブログ 投稿作成者

      >tkatoverano様
      コメントありがとうございます。
      mysql-server をインストールするか mariadb-server をインストールするかで、/etc/my.cnf の内容を変えなければならないようですので、MySQLのリポジトリを追加して mysql-server をインストールできる手順に修正いたしました。

      返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です