LINUX

【centOS7 LAMP環境構築】

もくじ

はじめに

この記事はmacOS 環境にて実施した内容をメモとして残しているものです。
上記環境以外の方は適宜置き換えて解釈していただけると幸いです。
また、導入しているパッケージ等は好みによるものです。

これからPHPを学習しようと考えている方は、XAMPPやMAMPを使用することをおすすめします。

環境構築でつまづくとプログラムの学習がいつまで経っても始められないので環境構築はサクッとできるものを選択する方がいいです。

0.Vagrant環境構築

Vagrantで構築しない場合はこの手順は不要

各種ツールDL&インストール

VirtualBox
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp

Vagrant
https://www.vagrantup.com/downloads.html

Vagrant準備

BOX追加

vagrant box add CentOS7 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box

初期化

mkdir /vagrant/CentOS7 && cd $_
vagrant init CentOS7

設定

お好みでVagrantfileを編集するVagrantfile

# ホスト名
config.vm.hostname = "centos7.vm"
# ネットワーク
config.vm.network "private_network", ip: "192.168.33.10"
# ドキュメントルートを同期フォルダにする ※この設定はhttpdのインストールが終わってからやる
config.vm.synced_folder "/var/www", "/var/www", owner: "apache", group: "apache", mount_options: ["dmode=777", "fmode=777"]

起動

※上記で作成したディレクトリ内で実行

vagrant up

1.CentOS7初期設定

rootユーザーになっておく

sudo su -

アップデート

yum -y update

一応バージョン確認しておく

cat /etc/redhat-release

結果

CentOS Linux release 7.3.1611 (Core)

Vimを入れる

インストール

yum -y install vim-enhanced

エイリアス設定

echo alias vi='vim' >> /etc/profile
source /etc/profile

時刻同期設定

chronyインストール

yum install -y chrony

chronyサービス登録

systemctl enable chronyd

サービス登録されたか確認

systemctl list-unit-files -t service | grep chronyd

結果

chronyd.service                             enabled

同期サーバーを日本のサーバーにする

vim /etc/chrony.conf

/etc/chrony.conf

server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst

タイムゾーンをAsia/Tokyoに設定

timedatectl set-timezone Asia/Tokyo

chronyを再起動

systemctl start chronyd

Firewall設定

Firewallを止める

systemctl stop firewalld

サービスを無効にする

systemctl disable firewalld

無効になったか確認

systemctl list-unit-files -t service | grep firewalld

結果

firewalld.service                           disabled

※何かと邪魔になりそうなのでローカルと割り切って止めますが、公開サーバーの場合はオススメしません。

日本語対応にする

NKFのインストール

cd /tmp
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz" -O nkf-2.1.3.tar.gz
tar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
make && make install
rm -rf nkf-2.1.3*
ln -s /usr/local/bin/nkf /usr/bin/nkf

日本語関連パッケージのインストール

yum -y install ibus-kkc vlgothic-*

システム文字セット変更

localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf 

各種リポジトリ登録

リポジトリ優先度プラグイン

yum -y install yum-plugin-priorities

EPEL

yum -y install epel-release

デフォルトでは無効にする

sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

Remi

yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

失敗する場合は以下で…

cd /tmp && wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install /tmp/remi-release-7.rpm
rm -f remi-release-7.rpm

MySQL5.7

yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Nginx

yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

再起動

reboot

2.LAMP+いろいろ環境構築

httpd

インストール

yum -y install httpd

初期設定

vim /etc/httpd/conf/httpd.conf

ネットワークマウントやNFSマウントされたドキュメントルートでは、
静的ファイルへの変更が反映されなかったりするので以下の設定をしておく/etc/httpd/httpd.conf

EnableMMAP off
EnableSendfile off

起動

systemctl start httpd

サービス登録

systemctl enable httpd

サービス登録されたか確認

systemctl list-unit-files -t service | grep httpd

結果

httpd.service                               enabled

MySQL 5.7

インストール

yum -y install mysql-community-server

サービス登録

systemctl enable mysqld

サービス登録されたか確認

systemctl list-unit-files -t service | grep mysqld

結果

mysqld.service                              enabled

お好みに応じて設定を変更

my.cnfバックアップ

mv /etc/my.cnf /etc/my.cnf.bk

my.cnfの内容を書き換える

cat <<EOF > /etc/my.cnf
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF

rootパスワードを無効化
(おすすめはしません!)/etc/my.cnf

[mysqld]
skip-grant-tables

起動

systemctl start mysqld

パスワードの確認

MySQL5.7から初期パスワードが自動生成される為、確認する必要があるらしい。

一度ログインを試みる

mysql -uroot -p

ログファイルにて確認

cat /var/log/mysqld.log | grep "temporary password"

/var/log/mysqld.log

2016-11-08T06:13:33.695967Z 1 [Note] A temporary password is generated for root@localhost: {ここにパスワード}

初期セットアップ

mysql_secure_installation

mysql_secure_installation

# パスワード要求
> Enter current password for root (enter for none):
  {上記にて調べた初期パスワードを入力}

# パスワードの変更を求められる
> The existing password for the user account root has expired. Please set a new password.
> New password:
  {新しいパスワードを入力}
> Re-enter new password:
  {パスワードを再入力}

※この時、ポリシーに反しているとやり直しさせられる。
ポリシーの初期値はMEDIUMで、長さは8字以上で英字大小/数字/特殊文字(英数以外の記号)を1つ以上ずつ含む必要があるらしい。
例:P@ssword#123

# root ユーザーのパスワードを変更するか?
> Change the password for root ? ((Press y|Y for Yes, any other key for No) :
  {先程変更してるので空Enter}

# 匿名ユーザーを削除するか?
> Remove anonymous users? (Press y|Y for Yes, any other key for No) :
  {'y'を入力してEnter}

# リモートから root ユーザーのログインを禁止するか?
> Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
  {'y'を入力してEnter}

# test データベースを削除するか?
> Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
  {'y'を入力してEnter}

# 権限テーブルをリロードするか?
> Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
  {'y'を入力してEnter}

KVS

memcached

インストール

yum -y install --enablerepo=remi memcached

起動

systemctl start memcached

サービス登録

systemctl enable memcached
サービス登録されたか確認
systemctl list-unit-files -t service | grep memcached

結果

memcached.service                           enabled

Redis

インストール

yum -y install --enablerepo=remi,epel redis

起動

systemctl start redis

サービス登録

systemctl enable redis
サービス登録されたか確認
systemctl list-unit-files -t service | grep redis

結果

redis.service                               enabled

画像処理関連

ImageMagick

インストール

yum -y install ImageMagick

PHP 7.3

本体インストール

yum -y install --enablerepo=remi-php73 php

関連モジュールインストール

※必要に応じてお好みで入れてください。

# 基本的なやつ
yum -y install --enablerepo=remi-php73 php-devel php-pear
yum -y install --enablerepo=remi-php73 php-mysqlnd php-mbstring

# Nginxで使う場合はphp-fpm
yum -y install --enablerepo=remi-php73 php-fpm

# mcrypt
yum -y install --enablerepo=epel libmcrypt
yum -y install --enablerepo=remi-php73 php-mcrypt

# 画像関連
yum -y install ftp://mirror.switch.ch/pool/4/mirror/centos/7.3.1611/cloud/x86_64/openstack-ocata/common/openjpeg2-2.1.2-1.el7.x86_64.rpm
yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/l/libraqm-0.1.1-1.el7.x86_64.rpm
yum -y install --enablerepo=remi-php73 php-gd php-pecl-imagick

# KVS関連
yum -y install --enablerepo=remi-php73 php-pecl-memcache php-pecl-redis

デフォルトでremi-php73を有効化しておくと楽かも

yum-config-manager --enable remi-php73
yum -y install --enablerepo=epel libmcrypt
yum -y install ftp://mirror.switch.ch/pool/4/mirror/centos/7.3.1611/cloud/x86_64/openstack-ocata/common/openjpeg2-2.1.2-1.el7.x86_64.rpm
yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/l/libraqm-0.1.1-1.el7.x86_64.rpm
yum -y install php php-devel php-pear php-mysqlnd php-mbstring php-fpm php-mcrypt php-gd php-pecl-imagick php-pecl-memcache php-pecl-redis php-pecl-apcu php-pecl-zendopcache

初期設定

※設定しないと文字化けしたりします。

# タイムゾーン設定
sed -i "s/;date.timezone =/date.timezone = 'Asia\/Tokyo'/" /etc/php.ini

# mbstring系の設定
sed -i "s/;mbstring.language = Japanese/mbstring.language = Japanese/" /etc/php.ini
sed -i "s/;mbstring.internal_encoding =/mbstring.internal_encoding = UTF-8/" /etc/php.ini
sed -i "s/;mbstring.http_input =/mbstring.http_input = UTF-8/" /etc/php.ini

Composer

インストール

cd /tmp && curl -s http://getcomposer.org/installer | php

コマンド化

mv /tmp/composer.phar /usr/local/bin/composer

phpMyAdmin

2019.11.30現在はバージョン4.9.2
最新版はこちらで確認

インストール

# ダウンロード
cd /usr/local/src/ && wget https://files.phpmyadmin.net/phpMyAdmin/4.7.1/phpMyAdmin-4.7.1-all-languages.tar.gz

# 解凍
tar zxvf phpMyAdmin-4.7.1-all-languages.tar.gz

# ディレクトリをリネーム
mv phpMyAdmin-4.7.1-all-languages phpMyAdmin

# 元ファイルを削除
rm -f phpMyAdmin-4.7.1-all-languages.tar.gz

VirtualHost設定

vim /etc/httpd/conf.d/phpMyAdmin.conf

/etc/httpd/conf.d/phpMyAdmin.conf設定内容

<VirtualHost *:80>
    ServerName mysql.vm
    DocumentRoot /usr/local/src/phpMyAdmin
    # phpMyAdmin専用のログを出力するようにする
    ErrorLog /var/log/httpd/phpMyAdmin/error_log
    CustomLog /var/log/httpd/phpMyAdmin/access_log combined env=!no_log
    <Directory "/usr/local/src/phpMyAdmin">
        Options All
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
ログディレクトリ作成

作っておかないとApacheの再起動でコケる

mkdir /var/log/httpd/phpMyAdmin
Apache再起動
apachectl restart

ホストOSのブラウザから使えるようにする

※この項目はゲストOSではなくホストOS側での操作

hosts設定
sudo vim /etc/hosts

以下の設定を追記/etc/hosts

192.168.33.10 mysql.vm

ブラウザから http://mysql.vm にアクセスするとphpMyAdminのログイン画面が表示されるはずです。

PHPを学習したりWordpressを学習するだけなら、正直XAMPPの方がいいとおもいます。

次回は Windows10でXAMPPをインストールしてPHPファイルを作ってみたいと思います。