centos7_lamp_configs

Samples of configuration files for LAMP environment on CentOS 7

For more information, please see https://docs.google.com/document/d/12VbZYST8h0rxLE18c0xdS_PHvkq-AcLYVa-ONuPe5dU

CentOS 7.x LAMP環境構築マニュアル

インストール用のOSイメージをダウンロード

CentOS 7

CentOS 7はそれまでのCentOSからかなり変更されている。

VirtualBoxの準備

Machine -> Newで仮想マシンの作成を開始し、以下を設定してCreateをクリック。

項目名 設定例
Type Linux
Version CentOSの64bitの場合はRed Hat (64-bit)を選択
Memory 1GB以上
Hard disk Create a virtual hard disk nowを選択

仮想ディスクの作成ダイアログが出てくるので以下の設定でCreateをクリック。

項目名 設定例
保存先 ゲストマシンの容量を確認して適切なディスク上に指定する。
File size 20GB以上
Hard disk VDI
Memory 1GB以上
Storage on physical hard disk どちらでも良い。
Fixed sizeのほうがパフォーマンスはいいらしい。

出来上がった仮想マシンを右クリックして「Settings」を開き、OKをクリック。

項目名 設定例
Storage Controller: IDE
Emptyをクリックし、右のAttributesのOptical DriveのCDマークをクリックし、Choose Virtual Oprical Disk Fileを選択し、ダウンロードしたCentOSのディスクイメージを選択する。
Network Adapter 1
Attached to: Bridged Adapterを選択する。
Host-only adapterでもよい。その場合は192.168のIPになる。

仮想マシンをダブルクリックして起動。

CentOSのインストール

Install CentOS 7を選択してインストーラーを起動。 インストールディスクのチェックはSKIPする。 インストラーの手順にしたがってインストール(最小限のインストール)し、再起動する。

項目名 設定例
ソフトウェア 最小限のインストール
ネットワークとホスト名 「オン」にして、ホスト名に任意の名称を入力。
インストール先 内容を確認して「完了」をクリック。

以上が終わると、「インストール開始」ボタンが有効になる。 インストール実行中にrootユーザーのパスワードを設定する。「完了」ボタンは2回クリックしないと行けないので注意。 最小構成のインストールの場合は数分で終わる。

以降、特に指定のない限りはrootユーザーで行うこと。

CentOSの初期設定

ネットワークの設定

ネットワークはインストール時に有効になっているので、特に設定することはない。 ipコマンドでIPアドレスを確認しておく。

[root@centos7 ~]# ip addr

ログイン用ユーザーを作成

[root@centos7 ~]# useradd webmaster
[root@centos7 ~]# passwd webmaster

SSHはデフォルトで設定されているので、移行はSSHクライアントで接続して作業する。

最低限必要なパッケージのインストールと設定

[root@centos7 ~]# yum install ntp vim wget
[root@centos7 ~]# vi /etc/bashrc
以下を最後の行の1つ前に追加
alias ll='ls -la'
alias la='ls -A'
export LANG=C
export EDITOR=vim
export LS_COLORS=$LS_COLORS':di=33'
alias vi='vim'
----------
[root@centos7 ~]# vi /etc/vimrc

以下を最後の行に追加
" ORIGINAL SETTINGS
set nowrap
set nu
set ic
hi Comment ctermfg=2

set noswapfile
set nobackup

" Indents
function SetIndentWeb()
    set tabstop=2
    set softtabstop=2
    set shiftwidth=2
endfunction

set tabstop=4
set softtabstop=4
set shiftwidth=4
autocmd BufNewFile,BufRead *.html,*.css,*.js :call SetIndentWeb()

set autoindent
set smartindent
set expandtab
"set noexpandtab

set iminsert=0
set imsearch=0
----------
[root@centos7 ~]# source /etc/bashrc

リポジトリの追加

以下のリポジトリはよく使うのでインストールしておく。

remi repoはデフォルトでは無効なので、有効なリポジトリにしておく。

[root@centos7 ~]# vi /etc/yum.repos.d/remi.repo
  5 [remi]
  9 enabled=1
 12
 22 [remi-php56]
 27 enabled=1

まずは基本システムのアップグレード

[root@centos7 ~]# yum update

LAMP環境の構築

LAMP環境作成に必要なパッケージのインストール

[root@centos7 ~]# yum install httpd php php-bcmath php-captchaphp php-cli php-common php-dba php-devel \
php-apc php-embedded php-enchant php-fpdf php-fpdf-doc php-fpm php-gd php-geshi php-imap php-interbase \
php-intl php-ldap php-libdmtx php-libvirt php-libvirt-doc php-magickwand php-magpierss php-mbstring php-mcrypt \
php-mysqlnd php-oauth php-odbc php-pdo php-pear php-pecl-imagick php-pecl-memcache php-pecl-memcached \
php-pecl-ncurses php-pgsql php-php-gettext php-process php-pspell php-recode php-shout php-simplepie \
php-snmp php-soap php-tidy php-xml php-xmlrpc php-zipstream mysql-server mysql-client memcached samba mailx
2015.12.07

PHP 7.0がリリースされたので、インストールオプションを変更。(remi repository) ただし、いくつか未対応のエクステンションがあるので、今後変更されていく可能性がある。 特にMemcacheのエクステンションが入っていない。

[root@centos7 ~]# yum install httpd php php-bcmath php-cli php-common php-dba php-devel php-apc php-embedded php-enchant php-fpm php-gd php-geshi php-imap php-interbase php-intl php-ldap php-libdmtx php-mbstring php-mcrypt php-mysqlnd php-odbc php-pdo php-pear php-pecl-imagick php-pgsql php-php-gettext php-process php-pspell php-recode php-simplepie php-snmp php-soap php-tidy php-xml php-xmlrpc php-zipstream mysql-server memcached samba mailx
2016.04.07時点でのインストールパッケージ

php-pecl-memcacheがremi repoからインストール出来るようになっている。

[root@centos7 ~]# yum install httpd php php-bcmath php-captchaphp php-cli php-common php-dba php-devel \
php-apc php-embedded php-enchant php-fpdf php-fpdf-doc php-fpm php-gd php-geshi php-imap php-interbase \
php-intl php-ldap php-libdmtx php-magpierss php-mbstring php-mcrypt php-mysqlnd php-oauth php-odbc php-pdo \
php-pear php-pecl-imagick php-pecl-memcache php-pecl-memcached php-pgsql php-php-gettext php-process \
php-pspell php-recode php-shout php-simplepie php-snmp php-soap php-tidy php-xml php-xmlrpc php-zipstream \
mysql-server mysql-client memcached samba mailx

基本フォルダの設置

[root@centos7 ~]# chown -R webmaster:webmaster /var/www

セキュリティの設定

まずSELINUXの設定を切る。

[root@centos7 ~]# cp /etc/selinux/config /etc/selinux/config.orig
[root@centos7 ~]# setenforce 0
[root@centos7 ~]# getenforce
Permissive
[root@centos7 ~]# vi /etc/selinux/config
SELINUX=disabled

次にfirewalldをOFFにする。 CentOS 7ではiptablesに変わり、アクセス制限にfirewalldを使用している。

[root@centos7 ~]# systemctl stop firewalld
[root@centos7 ~]# systemctl disable firewalld

ここで一旦rebootして設定を反映する。

NTP(時刻)の設定

設定を書き換える前にオリジナルをバックアップ。

[root@centos7 ~]# cp /etc/ntp.conf /etc/ntp.conf.orig

NTPの設定は以下を参考にする。

ntp.confを書き換えたらntpdを起動または再起動。

[root@centos7 ~]# systemctl enable ntpd
[root@centos7 ~]# systemctl start ntpd

Samba(Windowsファイル共有)の設定

設定を書き換える前にオリジナルをバックアップ。

[root@centos7 ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

Sambaの設定は以下を参考にする。

設定を書き換えたらsmbを起動または再起動。

[root@centos7 ~]# systemctl enable smb
[root@centos7 ~]# systemctl start smb
[root@centos7 ~]# systemctl enable nmb
[root@centos7 ~]# systemctl start nmb

Windowsからアドレスバーに以下を入力して共有ディレクトリが閲覧出来るか確認。 またファイルの作成、内容の変更、削除が正常に行われるか確認する。

\\{サーバーのIPアドレス}

PHPのセットアップ

設定を書き換える前にオリジナルをバックアップ。

[root@centos7 ~]# cp /etc/php.ini /etc/php.ini.orig

PHPの設定は以下を参考にする。

Apache(ウェブサーバーのセットアップ)

設定を書き換える前にオリジナルをバックアップ。

[root@centos7 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig

ディレクトリを作る。

[root@centos7 ~]# mkdir -p /etc/httpd/vhosts /var/www/vhosts /var/www/logs/httpd /var/www/session
[root@centos7 ~]# chown -R webmaster:webmaster /var/www

mod_phpの設定を変更する。 デフォルトのsession.save_path/var/lib/php/sessionとなっているので、Apacheの耳垢ユーザーでは書き込めない。/var/www/sessionに書き換える。

[root@centos7 ~]# vi /etc/httpd/conf.d/php.conf
 60     #php_value session.save_path    "/var/lib/php/session"
 61     php_value session.save_path    "/var/www/session"

Apache 2.4ではNot Foundの場合に/usr/share/httpd/noindex/のファイルが使われるので、使われないようにする。

[root@centos7 ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bk

Apacheの設定は以下を参考にする。

またApache 2.4からは設定ファイルが細かく分割されている。デフォルトで問題となりそうなのはiconsディレクトリ。常にエラーログに記録されることが気になるなら以下のファイルのalias設定をコメントアウトすることをおすすめする。

[root@centos7 ~]# vi /etc/httpd/conf.d/autoindex.conf
 21 #Alias /icons/ "/usr/share/httpd/icons/"

設定を書き換えたらApacheの設定ファイルの書式を確認して、起動または再起動。

[root@centos7 ~]# systemctl enable httpd
[root@centos7 ~]# apachectl configtest
[root@centos7 ~]# systemctl start httpd

MySQL Serverのセットアップ

ここではMySQL 5.7のセットアップ方法を紹介します。

設定を書き換える前にオリジナルをバックアップ。

[root@centos7 ~]# cp /etc/my.cnf /etc/my.cnf.orig

MySQL 5.7ではrootのデフォルトパスワードが勝手に生成されてしまう。 /root/.mysql_secretに記載されているとのこと。ない場合は/var/log/mysql.logに記載が残っているので確認してみる。 また5.6からパスワードポリシーが厳しくなっている。開発環境用はあまり厳しすぎると使いにくいので、かなりゆるく設定する。

MySQLの設定は以下を参考にする。(パスワードに対する制限をかなりゆるくしている)

またはrootでの操作はデフォルトのパスワードを変更した後でないと出来ないようになっているので、まずrootでログインした後はパスワードを変更することから始めなければならない。

[root@centos7 ~]# sytemctl enable mysqld
[root@centos7 ~]# sytemctl start mysqld
[root@centos7 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>

データベースとユーザーの作り方に関しては従来の方法で行える。
[root@centos7 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE mydb CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON mydb.* TO mydb_user@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql>

自動起動設定

以下のデーモンはsystemctlコマンドで自動起動設定(enable)をしておく。 自動起動設定はOS起動時に自動的に立ち上がるソフトウェアを指定すること。

最後の設定

ここで一旦rebootして、すべて正常に起動できるかを確認する。

[root@centos6 ~]# reboot