phpMyAdminもいいけどSequel Proは感動する

共用サーバー使ってると、MySQLの管理をするのにphpMyAdminを使うのが基本になるわけだけど、最初からセットアップされてたらそれ使うけど、そうじゃないとき、インストールはちょっとめんどくさい。
自分でサイト内にインストールするとき、セキュアな対策も考えつつアップしないといけない。

こないだVPSをセットアップしてて、phpMyAdminが動かん!とか言ってたら友達が、これいいですよ、って紹介してくれたのが、

Sequel Pro
https://www.sequelpro.com/

なんと!無知な自分を恥じるわ♪

インストールして起動したらこんな画面出た。

Sequel Pro
ピクピク!ってなったのはSSH接続で使えるっていうところ。
SSHログインしてからMySQL呼ぶという流れをそのままUIでやってくれてるということなんだろう。
なのでMySQLのポート開けなくていいという利点があるらしい。もちろん、サーバーに管理ツールをセットアップしなくて済むから楽チンだ。
こんな便利なツールがあったのかー。

Sequel Pro
接続して information_schema の CHARACTER_SETS の内容を見たところ。
うーん、phpMyAdminと変わらない。(当たり前か?)

これはほんとにありがたいツール。
今後は共用サーバーのもこれで統一して管理できそう。

module load で PHPのバージョン切り替えたら httpd.conf も書き換える

前回、PHP7.1からPHP5.6にするとき、module load で切り替えたらOKだった。
でも、PHP5.6からPHP7.1にするとき、一応、切り替わるのだが、phpinfo() では 5.6のままになってしまう。

なぜ?? 調べる。結構悩んだが、よく見りゃちゃんと書いてある。

httpd.conf では、conf.d ディレクトリ以下にある .conf ファイルを全部読み込むように書かれている。

httpd.conf

Include conf.d/*.conf

conf.d 以下の php56-php.conf では、56のモジュールを読み込むよう書かれている。

php56-php.conf

<IfModule prefork.c>
  LoadModule php5_module modules/libphp56-php5.so
</IfModule>

conf.d 以下の php71-php.conf では、56用がない場合には、71のモジュールを読み込むよう書かれている。(共存はできない)

php71-php.conf

# Cannot load both php5 and php7 modules
<IfModule !mod_php5.c>
  <IfModule prefork.c>
    LoadModule php7_module modules/libphp71.so
  </IfModule>
</IfModule>

なので、56用の記述があるかぎり、そっちのモジュールが読み込まれてしまうから、ApacheはPHP5.6を動かしていたのだね。
それに、56と71 両方の.confが読まれると、ダブっている記述もあるので好ましくない。

よって、httpd.conf の記述を変更して、個別に .conf を列記し、必要なバージョンのPHPだけ有効にすることで、7.1に切り替えることができた。

httpd.conf

#Include conf.d/*.conf ← 初期の記述は無効に
#Include conf.d/php56-php.conf ← 5.6は無効に
Include conf.d/php71-php.conf
Include conf.d/vhosts.conf
Include conf.d/welcome.conf

YumでPHPのバージョン切り替えるの簡単だった

預かったサイトのWordPressは、過去に配布されていた古い高機能テーマを使っていてメンテされておらず、WordPressのアップデートしていいものやら分からないので、新しいテーマを作って置き換えることにした。

で、今回やっと立ち上げたVPS環境にサイトをごっそり入れてみたものの、最初に入れているPHP7.1では、管理画面にアクセスすると、500エラーになってしまった。
ログを見ているとfatalやらwarnやら、コアファイルでたくさんメッセージが出ているから、これはもう、PHP5.6にしてWPをアップデートしない限りどうしようもないなと思って調べたら、Yumだと単に5.6を追加でインストールして、module loadを使えばいいってことで、これは楽だなと感動。

(1) PHP 5.6をインストール(7.1の時と同様)

(2) さりげに php -v とかすると出てこない(汗)which php も効かない。(module loadしないと有効にならない)

(3) 念のため php71をunloadしてからphp56をloadしてみた。

module unload php71
module load php56

めでたし。php -v で5.6になっていることを確認。which php も効いた。

これでWordPressの管理画面にアクセスすると無事、表示された。

CentOS6 に yum で PHP7.1 を入れた成功事例とその依存関係

実務忙しくてVPSセットアップするのしばらく放置してたけど、やっと時間できたからPHP入れるところから再開した。
それで、もっと簡単に出来るとタカをくくっていたけど、意外と大変で、ちゃんと入るまで2、3日掛かってしまった。
でも学習というのは素晴らしいもので、ごにょごにょやっているうちに理解は自然と深まっていい体験だった。
なんでCentOS 6 なのかというと、さくらのVPSで標準になっていたのと、世の中の情報が多くて枯れていそうなのと、初心者にはいいかな?と思ったからだけど、結果的には別に 7 でも良かった気はする・・。

最初から言いだすと紆余曲折あって訳わからなくなるので、コアの部分だけ書いておく。
なお、前提として、CentOS 6系のEPELリポジトリRemiリポジトリは別途インストール済み。

最終的にはこんな感じの命令ですんなり入った。

yum install gd-last php71 php71-php php71-php-cli php71-php-common php71-php-gd php71-php-mbstring php71-php-mcrypt php71-php-pdo php71-php-mysqli php71-php-xml

でもいきなりこれだけでは入らない。

/etc/yum.repos.d/ の中に、各種リポジトリ用の設定ファイルがあり、まず、
CentOS-Base.repo というのがあるが、その中の着目部分だけを抜粋して書くけれども、次のようにした。

-- CentOS-Base.repo --

[base]
enabled=1

[updates]
enabled=1

[extras]
enabled=1

[centosplus]
enabled=1

[contrib]
enabled=1

全ての項目の enabled の値を 1 にした。初期で書かれていないものには付け加えた。
最後の方の項目を有効にすべきなのかどうかは、あまりよく分かっていないけどとりあえず全部有効にした。

次に、epel.repo

-- epel.repo --

[epel]
enabled=1

たぶん初期状態でこうなっていると思うけど、そのまま enabled=1 にしておく。

それから、remi.repo

-- remi.repo --
[remi]
enabled=1
priority=10
includepkgs=php* mysql*

初期状態で enabled=0 だったので変更し、新たに priority を書き加え、初期よりも優先順位を高くした。
また、includepkgs にphp関連とmysql関連を指定して、それらのパッケージだけ、remiを参照するように設定。

さらに、remi-php71.repo (7.1を入れるから71)

-- remi-php71 --

[remi-php71]
enabled=1
priority=10

remiの設定と同様、enabled=0 だったので変更し、新たに priority を書き加え、初期よりも優先順位を高くした。
もしかしてこの場合の優先順位は書かなくてもいいのかな? ちょっと分からない。

最後に、remi-safe.repo

-- remi-safe.repo --

[remi-safe]
enabled=1

初期状態でこうなので、そのままにしておく。

以上、つまりはphp7.1関連のパッケージはremiリポジトリを参照するように仕向け、それ以外のパッケージは適宜、他のリポジトリを参照するような設定になっている。
この設定をしたうえで冒頭にある命令を行うと、すんなり入った。

参考までに、mysql5.7 も入れたので、mysql-community.repo の設定も行なっている。

-- mysql-community.repo --

[mysql-connectors-community]
enabled=1

[mysql-tools-community]
enabled=1

[mysql57-community]
enabled=1

初期状態がどうだったか、よく分からなくなってしまったが、一応、このようにそれぞれ有効に設定している。

この状態でインストール成功した際の依存関連のメッセージは下記の通り。(命令の通りあくまでPHP関連のみ)
テキストエディタにコピーしたものをキャプチャして画像で貼っておく。

dependencies

このあと追加で、php71-php-pear をインストールしたら、同時に php71-php-process も入った。

 

で、ここに到るまでなんでごにょごにょしてしまったかというと、

(1) ほぼ最初に読んだあるブログに書かれていたリポジトリの設定を、意味わからず適当に解釈して書いたので中途半端になっていた。

(2) コマンドラインでリポジトリの有効・無効を書く方法がよく紹介されているけれども(例えば下記のような)

yum install --enablerepo=remi-php71 --disablerepo=base php71 php71-php

リポジトリの設定を正しく書いていればこの書き方は不要なんだけど、なんとなく(笑)書いてしまって、(1)の作業内容との組み合わせがおかしくなっていたんだと思う。
また、–enablerepo の方だけを書いている記事も多いので、リポジトリ設定で enable になっているものはそのまま適用されてしまうから、そういうミスマッチもあったのだろうと思う。

(3) 依存関係でエラーになった場合に、エラーメッセージの意味がよく分かってなかった。
依存しているパッケージは、一連のプログラムだけでなく、共有ライブラリ(.so)などもあって、最初、それらを個別に全部入れていかないといけないのか?と思って途方に暮れたわけなんだけど、上記のように取りに行くリポジトリが正しく設定(あるいはどれが優先とか)されていれば、基本的なパッケージ名を指定するだけで関連パッケージは勝手に入るので、個別のことを考えなくても良かったのだ。

という訳で、PHPやMySQLに関してはセットアップ完了できた。

あと、phpMyAdmin に関する話もあるが、それは次回の記事に書こうと思う。

CentOSの勉強

いままでサーバーといえば共用サーバーの生活で、案件もほとんどが共用サーバーだったわけなので、今回、VPSをセットアップしながら改めてOS(Linux)のことなんて全然わかってなかったなーと思った次第。

そういえば以前、サーバーを勉強する時に買った本は「Mac OS X 10.4 Tiger UNIX的システム構築」というもので10年くらい前になる。
もともとWindows使ってた自分がMacに行ったのは、サーバーと同じようなUNIX環境でローカル環境作れるから勉強になるだろうと思ったのがきっかけ。だからTigerの時にUNIX周辺のことを少し勉強した。
結構、この本は使い出があって、UNIXコマンドとかViコマンド忘れた時とか、Apacheの設定する時とかに参照して重宝した。

で、よく考えたらLinuxというものを最初から勉強したことがない。VPS触る段になってようやく気づく(笑)
なので、CentOSを勉強しようと思って本を買ってみた。

CentOS 6
できるPRO CentOS 6 サーバー

いまは 7 の時代だけど、たまたまVPSの初期OSが6だったからこれにしただけ。
まあとりあえずなんでも良い。(とはいえコマンドとかだいぶ違うみたいね)
まだ読んでないので、しばらく読んでまた発見することでもあればブログに書きたいと思う。