CentOS7 + Apache2.4 + MySQL5.7 + PHP7

Posted corper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 + Apache2.4 + MySQL5.7 + PHP7相关的知识,希望对你有一定的参考价值。

CentOS7 + Apache2.4 + mysql5.7 + php

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 [email protected]: _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的主要内容,如果未能解决你的问题,请参考以下文章

centos7.2下编译安装apache2.4

Centos7 apache2.4.29(httpd) 安装

centos7下apache2.4反向代理

CentOS7 + Apache2.4 + MySQL5.7 + PHP7

centos7 + Apache2.4 + python3.5 +mod_wsgi4.5.15 + Django1.10安装指导

centos7下apache2.4.6虚拟主机配置