CentOS7 + Apache2.4 + MySQL5.7 + PHP7
CentOS7 + Apache2.4 + MySQL5.7 + PHP7
CentOS7
1. 一般ユーザ作成
rootしかない狀態なので、一般ユーザを作成します(hoge)
$ useradd hoge $ passwd hoge
ユーザー一覧確認
$ cat /etc/passwd
ユーザー名、グループなどの確認
$ id hoge
グループ名=ユーザー名となっているので、必要であればグループ名は適宜変更(developer)
$ groupmod -n developer hoge
2. sudo設定
作成した一般ユーザー(hoge)にsudo権限付與
visudoで/etc/sudoersを開き、下記の行のコメントアウトを外す
$ visudo %wheel ALL=(ALL) ALL
3.ユーザーをwheelグループに追加
$ usermod -G wheel hoge
4. su設定
wheelグループのみにする
下記の行のコメントアウトを外す
$ vi /etc/pam.d/su auth required pam_wheel.so use_uid
5. 日本語化(ロケールの変更)
$ localectl set-locale LANG=ja_JP.UTF-8
ロケール確認
$ localectl status System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp106 X11 Layout: jp
6. SELinuxの停止
下記の行を設定する
$ vi /etc/selinux/config SELINUX=disabled
7. firewalld
CentOS7からファイアウォールの設定が「iptables」から「firewalld」に変更となっています
現在の設定の確認(デフォルト)
$ firewall-cmd --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
httpを追加して、設定反映
(80番ポートを開けたい)
$ firewall-cmd --add-service=http --permanent success $ firewall-cmd --reload success
再度、確認。
$ firewall-cmd --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:
8. 再起動
shutdown -r now
リポジトリの設定
インストールに使うリポジトリの設定をします。
CentOSには、公式のリポジトリが用意されていて、通常のyumコマンドで利用可能ですが、保守的で最新のソフトウェアやバージョン更新が行われないので、epelやremiというパッケージをインストールして、各リポジトリにある最新のソフトウェアを利用します。
1. epelパッケージのインストール
$ yum install epel-release.noarch
[epel]の部分のenable=1を、enable=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=0
2. remiのインストール
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[remi]の部分のenable=1を、enable=0 に書き換える
$ vi /etc/yum.repos.d/remi.repo [remi] name=Remi‘s RPM repository for Enterprise Linux 7 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/7/remi/$basearch/ mirrorlist=http://rpms.remirepo.net/enterprise/7/remi/mirror enabled=0
Apache2.4
1. インストール
$ yum install httpd
2. 起動
$ systemctl start httpd.service
※自動起動の設定
$ systemctl enable httpd.service
MySQL5.7
CentOS7では、mariaDB(MySQL互換のDB)がデフォルトでインストールされている場合があるので、MySQLと競合を起こさないように削除します。
1. mariaDB、既存MySQL削除
$ yum remove mariadb-libs $ yum remove mysql*
2. インストール
※適宜URLは最新に変更すること
$ yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm $ yum -y install mysql-community-server
3. バージョン確認
$ mysqld --version mysqld Ver 5.7.15 for Linux on x86_64 (MySQL Community Server (GPL))
4. 起動
systemctl start mysqld.service
※自動起動の設定
systemctl enable mysqld.service
5. rootユーザーの初期パスワード
MySQL5.7では、初回起動と同時にrootユーザーにランダム文字列のパスワードが設定され、ログに出力される。
$ cat /var/log/mysqld.log | grep ‘password is generated‘ 201*-**-15T09:53:28.904448Z 1 [Note] A temporary password is generated for root@localhost: _aBC12#/dEF:
6. 初期設定
mysql_secure_installationコマンドで設定していきます。
※新しいルートのパスワードは、大文字、小文字、數字、記號の全てが入っている必要があるので註意
$ mysql_secure_installation Enter password for user root: //ログに出力されていた初期パスワードを入力 Set root password? //ルートのパスワードを変更しますか? Yでパスワード設定 Remove anonymous users? //誰でもログイン可能になっているが消しますか? Yで消しとく Disallow root login remotely? //リモートからrootログインを許可しませんか? Yでしない Remove test database and access to it? //テストデータベース消していいですか? Yで消す Reload privilege tables now? //設定をすぐに反映しますか? Yで反映 All done!
7. MySQL接続確認
$ mysql -u root -p Enter password:
8. my.cnf 設定
mysql> SHOW VARIABLES LIKE ‘char%‘; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
my.cnfに以下を設定します
- ストレージエンジンを、InnoDB、データファイル?ログファイルをテーブルごとに設定
- 文字コードをutf8に
vi /etc/my.cnf [mysqld] default-storage-engine=InnoDB innodb_file_per_table character-set-server = utf8 collation-server = utf8_general_ci [mysql] default-character-set = utf8 [client] default-character-set = utf8
mysql> SHOW VARIABLES LIKE ‘char%‘; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.02 sec) mysql> SHOW VARIABLES LIKE ‘innodb_file_per_table‘; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ 1 row in set (0.00 sec)
PHP7
1. libmcrypt
mcryptのインストールに必要なので先にインストール
$ yum --enablerepo=epel install libmcrypt
2. インストール
FastCGIで動かせるPHP-FPM、キャッシュ周りのOPcache、APCuはインストールしておきます(後述)
$ yum --enablerepo=remi-php70 install -y php php-cli php-devel php-common php-mbstring php-mysql php-fpm php-gd php-mcrypt php-opcache php-pdo php-xml
$ php -v PHP 7.0.17 (cli) (built: Mar 14 2017 15:14:30) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.17, Copyright (c) 1999-2017, by Zend Technologies
3. php.ini 設定
初期ファイルのバックアップ
$ cp /etc/php.ini /etc/php.ini.bk
php.iniに以下を設定します
$ vi /etc/php.ini [PHP] # レスポンスヘッダにPHPのバージョンを表示しない expose_php = Off # 全てのログを出力 error_reporting = E_ALL # ブラウザでエラーを表示しない display_errors = Off # エラーをログに殘す log_errors = On # エラーログの長さを設定 log_errors_max_len = 4096 # エラーログ出力先 error_log = "/var/log/php_errors.log" # 文字エンコーディング default_charset = "UTF-8" [Date] # タイムゾーン date.timezone = "Asia/Tokyo" [mbstring] # デフォルト言語 mbstring.language = Japanese # 內部文字エンコーディング mbstring.internal_encoding = UTF-8 # HTTP入力文字エンコーディングのデフォルト mbstring.http_input = auto # 文字エンコーディング検出順序のデフォルト mbstring.detect_order = auto
4. 動作確認
ドキュメントルートにphpinfoを出力するphpファイルを作成します。
※/var/www/html/ …ドキュメントルート
$ vi /var/www/html/info.php <?php // すべての情報を表示します。デフォルトは INFO_ALL です。 phpinfo();
CentOS7 + Apache2.4 + MySQL5.7 + PHP7