6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Software Collections(SCL)のyumパッケージでLAMP環境を構築する

Last updated at Posted at 2018-03-07

前回はCentOSの主なyumレポジトリとしてRemi、EPEL、Software Collectionsについてまとめてみました。

今回はSoftware Collections(以下SCL)のyumを使ってLAMP環境を構築してみようと思います。
まずは事前準備としてSCLのyumレポジトリを登録します。

yum --enablerepo=extras install centos-release-scl

※なおこの記事ではCentOS 6.9で検証したものをご紹介しています。

MySQL

今回はMySQL 5.7をインストールしてみたいと思います。
まずは試しにyum search mysqlしてみます。
いろいろ出てくるのですが主要なものを抜き出すと、以下の3つのパッケージがあることがわかります。 

mysql55.x86_64 : Package that installs mysql55
rh-mysql56.x86_64 : Package that installs rh-mysql56
rh-mysql57.x86_64 : Package that installs rh-mysql57

それぞれのパッケージをyum infoコマンドで確認してみると、どのパッケージも"centos-sclo-rh"のレポジトリに格納されていることがわかります(下記の"Repo"のところです)。通常であればOracleが公開しているレポジトリをインストールする必要がありますが、SCLを使えばそれも不要です。

yum info rh-mysql57.x86_64
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Available Packages
Name        : rh-mysql57
Arch        : x86_64
Version     : 2.3
Release     : 3.el6
Size        : 6.4 k
Repo        : centos-sclo-rh
Summary     : Package that installs rh-mysql57
License     : GPLv2+
Description : This is the main package for rh-mysql57 Software Collection, which installs
            : necessary packages to use MySQL 5.7 server.
            : Software Collections allow to install more versions of the same
            : package by using alternative directory structure.
            : Install this package if you want to use MySQL 5.7
            : server on your system.

ここからはSCLのドキュメントを参考に進めていきます。

ドキュメントのとおり、こいつをyum install rh-mysql57でインストールするとMySQLクライアントであるrh-mysql57-mysqlrh-mysql57-mysql-serverもインストールされます。

インストール先は/opt/rh/rh-mysql57です。SCLではどうやら他のyumパッケージと区別するためなのか/opt/rhの下にパッケージ名のディレクトリを作ってそこにインストールされるようです。

/opt/rh/rh-mysql57の下には下記のようになっています。

[root@localhost rh-mysql57]# ll
total 20
drwxr-xr-x.  3 root root 4096 Mar  7 06:04 .
drwxr-xr-x.  3 root root 4096 Mar  7 06:04 ..
-rw-r--r--.  1 root root 1045 Nov 16  2016 enable
dr-xr-xr-x. 19 root root 4096 Mar  7 06:04 root
-rw-r--r--.  1 root root  453 Oct 24 19:13 service-environment

そしてrootの下はこうなっています。

r-xr-xr-x.  2 root root 4096 Nov 16  2016 bin
dr-xr-xr-x.  2 root root 4096 Nov 16  2016 boot
drwxr-xr-x.  2 root root 4096 Nov 16  2016 dev
drwxr-xr-x.  2 root root 4096 Nov 16  2016 home
dr-xr-xr-x.  3 root root 4096 Mar  7 06:04 lib
dr-xr-xr-x.  3 root root 4096 Mar  7 06:04 lib64
drwxr-xr-x.  2 root root 4096 Nov 16  2016 media
drwxr-xr-x.  2 root root 4096 Nov 16  2016 mnt
drwxr-xr-x.  2 root root 4096 Nov 16  2016 opt
dr-xr-xr-x.  2 root root 4096 Nov 16  2016 proc
dr-xr-x---.  2 root root 4096 Nov 16  2016 root
dr-xr-xr-x.  2 root root 4096 Nov 16  2016 sbin
drwxr-xr-x.  2 root root 4096 Nov 16  2016 selinux
drwxr-xr-x.  2 root root 4096 Nov 16  2016 srv
drwxr-xr-x.  2 root root 4096 Nov 16  2016 sys
drwxrwxrwt.  2 root root 4096 Nov 16  2016 tmp
drwxr-xr-x. 13 root root 4096 Mar  7 06:04 usr

CentOSのルートと同じ構造になっています。おなじみのmysqlコマンドやmysqldumpコマンドは/opt/rh/rh-mysql57/root/usr/binに格納されています。このように、SCLでは/opt/rh/パッケージ名/root配下に仮想ルートを作成して、その下にコマンドファイルやライブラリがインストールされていくようです。

また、/opt/rh/rh-mysql57/enableの中身はこうなっています。

# For binaries
export PATH="/opt/rh/rh-mysql57/root/usr/bin${PATH:+:${PATH}}"
# For header files
export CPATH="/opt/rh/rh-mysql57/root/usr/include${CPATH:+:${CPATH}}"
# For libraries during build
export LIBRARY_PATH="/opt/rh/rh-mysql57/root/usr/lib64${LIBRARY_PATH:+:${LIBRARY_PATH}}"
# For libraries during linking
export LD_LIBRARY_PATH="/opt/rh/rh-mysql57/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
# For man pages; empty field makes man to consider also standard path
export MANPATH="/opt/rh/rh-mysql57/root/usr/share/man:${MANPATH}"
# For Java Packages Tools to locate java.conf
export JAVACONFDIRS="/etc/opt/rh/rh-mysql57/java:${JAVACONFDIRS:-/etc/java}"
# For XMvn to locate its configuration file(s)
export XDG_CONFIG_DIRS="/etc/opt/rh/rh-mysql57/xdg:${XDG_CONFIG_DIRS:-/etc/xdg}"
# For systemtap
export XDG_DATA_DIRS="/opt/rh/rh-mysql57/root/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
# For pkg-config
export PKG_CONFIG_PATH="/opt/rh/rh-mysql57/root/usr/lib64/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"

パスを通したり必要な変数を定義したりしています。先程の仮想ルート配下のパスを参照していますね。

次にドキュメントの通り、scl enable rh-mysql57 bashコマンドを実行します。

ドキュメントには

Start using the software collection

とだけ書いてありますが、実行内容としては、上記のenableファイルを読み込んでbashに登録するようです。$PATHを見てみましょう。

[root@localhost vagrant]# echo $PATH
/opt/rh/rh-mysql57/root/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin

PATHが通っているのでmysqlコマンドを直接実行できますね。
マニュアルによると次はサービスの起動です。

service rh-mysql57-mysqld start

いつもどおりのservice mysqld startではないので注意が必要です。
psコマンドで確認してみます。

 3533 ?        S      0:00 /bin/sh /opt/rh/rh-mysql57/root/usr/bin/mysqld_safe --datadir=/var/opt/rh/rh-mysql57/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/rh-mysql57-mysqld/mysqld.pid --basedir=/opt/rh/rh-mysql57/root/usr --user=mysql
 3759 ?        Sl     0:00 /opt/rh/rh-mysql57/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mysql57/root/usr --datadir=/var/opt/rh/rh-mysql57/lib/mysql --plugin-dir=/opt/rh/rh-mysql57/root/usr/lib64/mysql/plugin --log-error=/var/opt/rh/rh-mysql57/log/mysql/mysqld.log --pid-file=/var/run/rh-mysql57-mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

先程は/opt/rh/rh-mysql57/root配下にいろんなものが格納されると説明しましたが、これを見る限り必ずしもそういうわけではないようです。pidやsockファイルはそれぞれ/var/lib/mysql/mysql.sock/var/run/rh-mysql57-mysqld/mysqld.pidですし、datadirも/var/opt/rh/rh-mysql57/lib/mysqlとなっているので注意が必要です。

Apache Httpd

SCLのhttpdは2.4が提供されています。apacheの2.4のyumはあまり見かけない気がするので、それだけでもSCLを使う価値があるかもしれないですね。

こちらもSCLのドキュメントをみながらインストールしていきます。

yum install httpd24
scl enable httpd24 bash
service httpd24-httpd start

基本的な手順はMySQLと同じです。
apachectlコマンドでコンパイルセッティングを見てみます。

[root@localhost ~]# apachectl -V
Server version: Apache/2.4.27 (Red Hat)
Server built:   Oct 24 2017 14:22:43
Server's Module Magic Number: 20120211:68
Server loaded:  APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.1, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/opt/rh/httpd24/root/etc/httpd"
 -D SUEXEC_BIN="/opt/rh/httpd24/root/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/opt/rh/httpd24/root/var/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

今度は/opt/rh/httpd24というディレクトリにインストールされています。
設定ファイルは/opt/rh/httpd24/root/etc/httpd配下です。

PHP

最後にphpについて見ていこうと思います。
今回は7.0をインストールしてみます。
https://www.softwarecollections.org/en/scls/rhscl/rh-php70/

ちなみに7.1も配布されていますが、CentOS 6は対応しておらず、CentOS 7から対応しているようです。

yum install rh-php70
scl enable rh-php70 bash

今度は/opt/rh/rh-php70/というディレクトリにインストールされます。
php -iで詳細を見てみます。

php -i
phpinfo()
PHP Version => 7.0.10

System => Linux localhost.localdomain 2.6.32-696.18.7.el6.x86_64 #1 SMP Thu Jan 4 17:31:22 UTC 2018 x86_64
Build Date => Nov  3 2016 08:05:15
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/opt/rh/rh-php70
Loaded Configuration File => /etc/opt/rh/rh-php70/php.ini
Scan this dir for additional .ini files => /etc/opt/rh/rh-php70/php.d
Additional .ini files parsed => /etc/opt/rh/rh-php70/php.d/20-bz2.ini,
/etc/opt/rh/rh-php70/php.d/20-calendar.ini,
/etc/opt/rh/rh-php70/php.d/20-ctype.ini,
/etc/opt/rh/rh-php70/php.d/20-curl.ini,
/etc/opt/rh/rh-php70/php.d/20-dom.ini,
/etc/opt/rh/rh-php70/php.d/20-exif.ini,
/etc/opt/rh/rh-php70/php.d/20-fileinfo.ini,
/etc/opt/rh/rh-php70/php.d/20-ftp.ini,
/etc/opt/rh/rh-php70/php.d/20-gettext.ini,
/etc/opt/rh/rh-php70/php.d/20-iconv.ini,
/etc/opt/rh/rh-php70/php.d/20-json.ini,
/etc/opt/rh/rh-php70/php.d/20-phar.ini,
/etc/opt/rh/rh-php70/php.d/20-posix.ini,
/etc/opt/rh/rh-php70/php.d/20-shmop.ini,
/etc/opt/rh/rh-php70/php.d/20-simplexml.ini,
/etc/opt/rh/rh-php70/php.d/20-sockets.ini,
/etc/opt/rh/rh-php70/php.d/20-sysvmsg.ini,
/etc/opt/rh/rh-php70/php.d/20-sysvsem.ini,
/etc/opt/rh/rh-php70/php.d/20-sysvshm.ini,
/etc/opt/rh/rh-php70/php.d/20-tokenizer.ini,
/etc/opt/rh/rh-php70/php.d/20-xml.ini,
/etc/opt/rh/rh-php70/php.d/20-xmlwriter.ini,
/etc/opt/rh/rh-php70/php.d/20-xsl.ini,
/etc/opt/rh/rh-php70/php.d/20-zip.ini,
/etc/opt/rh/rh-php70/php.d/30-wddx.ini,
/etc/opt/rh/rh-php70/php.d/30-xmlreader.ini

php.iniは/etc/opt/rh/rh-php70配下にありました。

また、ためしにphp-fpmも入れてみたいと思います。

yum install rh-php70-php-fpm.x86_64
service rh-php70-php-fpm start
Starting php-fpm:                                          [  OK  ]

マニュアルではrh-php70を入れればfpmも入ってくるような書き方ですが、fpm用のパッケージは別にインストールしなければなりませんので、ちょっと注意が必要です。

なお、mod_php的なパッケージは配布されていないようなので、mod_phpで動かしたい場合はSCLではちょっと都合が悪いです。ご注意ください。

まとめ

ということでSCLを使ってLAMP環境を構築してみました。
サービス名などが通常とちょっと違うので戸惑うかもしれませんが、インストール自体はSCLのページを見ながらやれば簡単です。

また設定ファイルの場所も変わったりしていますが、/opt/rh/配下や/var/opt/rh,/etc/opt/rhなどの下にあると思われますので、psコマンドで起動オプションを確認してみたりしてください。

参考になれば幸いです。

6
7
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
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?