LoginSignup
5
5

More than 5 years have passed since last update.

CentOS7-minimal上に社内向け各種OSSシステム構築 -- (2) (L)EMP

Last updated at Posted at 2016-06-15

はじめに

(1) OSインストールと初期設定でLEMPのうちの"L"は済みましたので、残りのE(Nginx)、M(MySQL)、P(PHP)を入れていきます。
はい、"MariaDB"ではなく"MySQL"です。
実は日本語全文検索に対応するため、MariaDBはソースからインストールする必要があったのですが、それがどうしてもうまく行かなくて。なのでパッケージでのインストールでもpluginで対応できるMySQLとしました。

Nginx

公式ページのドキュメント http://nginx.org/en/linux_packages.html#stable のとおりの手順で入れていきます。
まずリポジトリファイルを作成します。

$ sudo vi /etc/yum.repos.d/nginx.repo

下記内容を記載します。

/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/[OS]/[OSRELEASE]/$basearch/
gpgcheck=0
enabled=1

[OS]は"rhel" / "centos"、[OSRELEASE]には"5" / "6" / "7"をそれぞれ指定、となっているので、具体的には

baseurl=http://nginx.org/packages/centos/7/$basearch/

となります。
あとはyumでインストールして、サービスを起動、自動起動の設定を行うだけ。

$ sudo yum install -y nginx
$ sudo systemctl start nginx
$ sudo systemctl enable nginx

2018年6月時点では1.14.1-1がインストールされました。
ブラウザでデフォルトポートにアクセスして初期画面が表示されたらOKです。

nginx1.10.0-index_html.png

初期画面が表示されない場合、firewallでhttp通信が許可されていない可能性があります。

$ systemctl status firewalld
[...]
   Active: active (running) since ...  (←firewall動作中)
[...]
$ sudo firewall-cmd --list-services --permanent
ssh dhcpv6-client

上記の場合、httpがサービスとして設定されていないので、下記コマンドで追加します。

$ sudo firewall-cmd --add-service=http --zone=public --permanent
success

確認。

$ sudo firewall-cmd --list-services --zone=public --permanent
ssh dhcpv6-client http

再度ブラウザでデフォルトポートにアクセスしてみてください。

MySQL

公式ページのドキュメント http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html を参考に入れていきます。
まず http://dev.mysql.com/downloads/repo/yum/ のページから「Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package」のダウンロードページを表示し、下図のリンク先(=ダウンロードするrpmパッケージのURL)を確認します。
Fig220.png
あとは

  • そのrpmパッケージをダウンロード
  • リポジトリをインストール
  • そのリポジトリからMySQLをyumでインストール
  • サービス起動
  • サービス自動起動設定

でMySQLは入ります。

$ sudo wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ sudo yum localinstall -y mysql57-community-release-el7-8.noarch.rpm
$ sudo yum install -y mysql-community-server
$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld

管理者ユーザーの初期パスワードを確認します。

$ sudo grep 'temporary password' /var/log/mysqld.log
2016-06-15T02:19:06.523104Z 1 [Note] A temporary password is generated for root@localhost: gd+yc.Gmf4eG
$

今回は"gd+yc.Gmf4eG"が初期パスワードのようです。初期パスワードでログインし、管理者ユーザーパスワードを変更します。

$ mysql -u root -p
Enter password:
[...]
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, 0 rows affected (0.01 sec)
> exit
$

その後、

$ sudo mysql_secure_installation

でデータベースの各種初期設定を行います。管理者ユーザーパスワードは先ほど変更してますので、変更する必要はないですし、その他は基本'y|Y'で応答して行けばOKです。

PHP

remiリポジトリの追加

まずepelリポジトリをyumで追加。

$ sudo yum install -y epel-release

以下はsudoではうまく行かなかったので、管理者ユーザーで行いました。

$ su -
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

remiリポジトリを追加します。

$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

以下が作成されていればOKです。

$ sudo ls /etc/yum.repos.d/remi* -l
-rw-r--r-- 1 root root 1177 12月  9 18:14 /etc/yum.repos.d/remi-php70.repo
-rw-r--r-- 1 root root  449 12月  9 18:14 /etc/yum.repos.d/remi-safe.repo
-rw-r--r-- 1 root root 2340 12月  9 18:14 /etc/yum.repos.d/remi.repo

PHP7インストール

PHP5.6にするか迷うところですけど、強気に7。
(5.6のサポートはあと1年チョイ後の2017/08/28までですので。)

$ sudo yum install -y --enablerepo=epel,remi-php70 php php-mbstring php-pear php-fpm php-mcrypt php-mysql php-gd php-ldap php-imap
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm

PHP-FPMの設定

「その設定は不要」と記載したページ http://satakeh.hatenablog.com/entry/2014/11/13/072048 もありますが、内容が難しいので大勢になびいて /etc/php.ini ファイルを下記のとおり修正します。

$ sudo vi /etc/php.ini
/etc/php.ini
[...]
;cgi.fix_pathinfo=1   ←コメントアウト
cgi.fix_pathinfo=0
[...]

ApacheではなくNginxを入れましたので、ユーザー・グループを'apache'から'nginx'に変更します。

$ sudo vi /etc/php-fpm.d/www.conf
/etc/php-fpm.d/www.conf
[...]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
;user = apache   ←コメントアウト
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache   ←コメントアウト
group = nginx
[...]

Nginxの設定

設定ファイルを下記のとおり修正します。

$ sudo vi /etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/default.conf
server {
    listen       80;
    #server_name  localhost;
    #server_nameはうっかりして変更し忘れてると後々悩むこともあるため、きちんと設定します
    server_name  [hostname or ip address];
[...]
    location / {
        root   /usr/share/nginx/html;
        #index  index.html index.htm;
        index  index.html index.htm index.php;
    }
[...]
    location ~ \.php$ {
        #root           html; うーん、何となく僕は変更してるんですが、このままでよいのかも?
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
[...]
}

'-t'オプションで設定ファイルをチェックして、問題がなければnginxとphp-fpmをリスタートさせます。

$ sudo nginx -t
$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm

動作確認用のphpページファイル作成。

$ sudo vi /usr/share/nginx/html/testphp.php
/usr/share/nginx/html/testphp.php
<?php
    phpinfo();
?>

ブラウザで http://[hostname]/testphp.phpにアクセスして正常にページが表示されればOKです。
Fig230.png

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5