「php」タグアーカイブ

CentOS 7でPHPのアップデートがErrorになる

PHPがアップデートできない!

※この事例は、remiリポジトリを使用しています。またPHP71を対象としています。remiリポジトリを使っていない場合は参考にならないかも知れません。PHP71以外のバージョンでは適宜コマンドの指定を変えてください。ご注意ください!

CentOS 7.5-1804でyum updateを実施しようとしたら、アップデートが出来ませんでした。
手動でPHP以外のアップデートを済ませて再度確認を行った結果、以下のエラーが原因でした。

Error: Package: php-phpmyadmin-sql-parser-4.2.5-1.el7.noarch (epel)
           Requires: php-composer(phpmyadmin/motranslator) < 4
           Installed: php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch (@remi)
               php-composer(phpmyadmin/motranslator) = 4.0
           Available: php-phpmyadmin-motranslator-3.4-1.el7.noarch (epel)
               php-composer(phpmyadmin/motranslator) = 3.4
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

当然、–skip-brokenとかやる気は全く無いので、ググってみると同様の現象に見舞われている方を発見!
そのQAに書かれている内容を見て何となく方向性は判ったのだが、どうも気に掛かる。
やっぱり1個足りない気がする。。。。
危なっかしいので、万が一のことを想定しスナップショット(バックアップ)を取得してから以下の手順を順次実施した。

アップデート手順

まずは、障害を取り除く

まず最初にエラーメッセージ記載されているパッケージを以下のコマンドで削除する。

# yum remove remove php-phpmyadmin-sql-parser.noarch php-phpmyadmin-motranslator.noarch
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be erased
--> Processing Dependency: php-phpmyadmin-motranslator >= 4.0 for package: phpMyAdmin-4.8.2-1.el7.remi.noarch
---> Package php-phpmyadmin-sql-parser.noarch 0:4.2.4-3.el7.remi will be erased
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.8.2-1.el7.remi will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                        Arch      Version                Repository
                                                                           Size
================================================================================
Removing:
 php-phpmyadmin-motranslator    noarch    4.0-1.el7.remi         @remi     53 k
 php-phpmyadmin-sql-parser      noarch    4.2.4-3.el7.remi       @remi    797 k
Removing for dependencies:
 phpMyAdmin                     noarch    4.8.2-1.el7.remi       @remi     24 M

Transaction Summary
================================================================================
Remove  2 Packages (+1 Dependent package)

Installed size: 25 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : phpMyAdmin-4.8.2-1.el7.remi.noarch                           1/3
warning: /etc/phpMyAdmin/config.inc.php saved as /etc/phpMyAdmin/config.inc.php.rpmsave
warning: /etc/httpd/conf.d/phpMyAdmin.conf saved as /etc/httpd/conf.d/phpMyAdmin.conf.rpmsave
  Erasing    : php-phpmyadmin-sql-parser-4.2.4-3.el7.remi.noarch            2/3
  Erasing    : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            3/3
  Verifying  : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/3
  Verifying  : php-phpmyadmin-sql-parser-4.2.4-3.el7.remi.noarch            2/3
  Verifying  : phpMyAdmin-4.8.2-1.el7.remi.noarch                           3/3

Removed:
  php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi
  php-phpmyadmin-sql-parser.noarch 0:4.2.4-3.el7.remi

Dependency Removed:
  phpMyAdmin.noarch 0:4.8.2-1.el7.remi

Complete!

Dependencies ResolvedとDependencies Removedの項目にも書かれているが、phpMyAdminもトランザクションの影響で削除されている。
こういう時、yum -yオプションは避けた方が良いだろう。

必要なパッケージを再度インストールして更新する。

とりあえず、参考にしたサイトに記載されていた内容でインストールしてみた。その手順が以下になる。

# yum install --enablerepo=remi,php71 php-phpmyadmin-sql-parser.noarch php-phpmyadmin-motranslator.noarch
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * remi: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be installed
---> Package php-phpmyadmin-sql-parser.noarch 0:4.3.2-1.el7.remi will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                         Arch       Version              Repository
                                                                           Size
================================================================================
Installing:
 php-phpmyadmin-motranslator     noarch     4.0-1.el7.remi       remi      20 k
 php-phpmyadmin-sql-parser       noarch     4.3.2-1.el7.remi     remi     166 k

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 187 k
Installed size: 915 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch.r |  20 kB   00:00
(2/2): php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch.r | 166 kB   00:00
--------------------------------------------------------------------------------
Total                                              685 kB/s | 187 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/2
  Installing : php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch            2/2
  Verifying  : php-phpmyadmin-motranslator-4.0-1.el7.remi.noarch            1/2
  Verifying  : php-phpmyadmin-sql-parser-4.3.2-1.el7.remi.noarch            2/2

Installed:
  php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi
  php-phpmyadmin-sql-parser.noarch 0:4.3.2-1.el7.remi

Complete!

やっぱり、phpMyAdminがインストールされていない!
phpMyAdminを明示的に入れる必要があるわけで、以下のコマンドでインストールを行う。

# yum install --enablerepo=remi,php71 phpMyAdmin.noarch
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.iij.ad.jp
 * remi: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.9.0.1-1.el7.remi will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch          Version                      Repository   Size
================================================================================
Installing:
 phpMyAdmin        noarch        4.9.0.1-1.el7.remi           remi        5.3 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 5.3 M
Installed size: 26 M
Is this ok [y/d/N]: y
Downloading packages:
phpMyAdmin-4.9.0.1-1.el7.remi.noarch.rpm                   | 5.3 MB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : phpMyAdmin-4.9.0.1-1.el7.remi.noarch                         1/1
  Verifying  : phpMyAdmin-4.9.0.1-1.el7.remi.noarch                         1/1

Installed:
  phpMyAdmin.noarch 0:4.9.0.1-1.el7.remi

Complete!

無事入りました!
ちなみに、こちらはremiを使ってPHP71の事例となっていますが、その他のバージョンに関しては適宜バージョン指定を変えてくださいね。

concrete5 インストール

背景

concrete5をインストールしたのは覚えていたのですが、インストール方法が解らなくなったので、改めてインストールし直すという恥ずかしぃ〜思いをしながら、まとめ直すとにしました。

対象環境

ここではCentOS 7上に環境を構築します。
多少のパッケージインストール方法は省かせていただきますが、一般的な作業だけ省いているので、概ね問題ないでしょう(^^)

対象OS:CentOS 7.5.1804 (多分、7.xなら同じかと思います。)
他のパッケージ類は適宜インストールしますので、ここでの情報は以上となります。
ちなみにご自身の環境がどうなっているのか分からなければ以下を確認下さい。

# more /etc/centos-release
CentOS Linux release 7.5.1804 (Core)

ちなみに、作業は全てrootユーザで行います。
一般ユーザでもsudoなんかを使いながら作業を行なえば実現可能ですが、面倒なんで(^^;

準備作業

いつものことながら、インストールする前の準備運動ならぬ下地造りから入ります。

毎度お馴染みのepel-releaseリポジトリの設定ですね。

# yum install epel-release

yum updateコマンドで全体をアップデートして置いた方がよいのですが、私の環境はNVIDIAのドライバをインストールしていたりいろいろと下手なパッケージを更新するとハレーションが発生する可能性があるので、敢えて行いませんが。。。やった方が良いです。

下地造りの前準備?が出来たところで実際に必要なパッケージをインストールします。

yum install httpd mariadb mariadb-server php php-gd php-mbstring php-mcrypt php-mysql php-xml gd

と、いきなり間違えました(^^;
単純にインストールすると、PHPのバージョンが古かったはずなので、上記の方法は辞めて以下の方法でインストールを行います。

まずremiで提供されているリポジトリを使えるようにします。

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

mariadbのインストール

# yum install mariadb mariadb-server

Apache Web Server (httpd)のインストール

# yum install httpd

PHP5.6のインストール

concrete5 バージョン8以降ではPHPのバージョン 7.2以降を推奨しておりますが、私の環境は既に5.6の環境である程度構築されていたので、PHP5.6をベースにします。

# yum install --enablerepo=remi,remi-php56 php php-gd php-mbstring php-mcrypt php-mysql php-xml

PHPの古いバージョンが入っていた場合には適宜削除してインストール仕直す必要が生じます。(頑張ればなんとかなるなんて思わない方が良いですよw)

unzipのインストール

きっと入ってますよね。でも一応ね。

# yum install unzip

以上で準備作業は完了です。

concrete5本体のインストール

いつも思うんですけど、本来インストールしようとしているパッケージのインストール作業って、それ程大変じゃないんですよね。どちらかというと下地の準備の方が面倒なんですよね。
そこまできちんとして書いてくれれば嬉しいのですが。。。
そういった意味では、リポジトリって良くできてますよね。
と言っても、勝手にPHPのバージョンが上げられちゃったりすると困るので、結局こうなるのですが。。。

さて、前置きが長くなりましたが、本体のインストールです。

concrete5はWeb上で動作します。また、データベースを利用します。
ということで、httpdとMariaDBをセットアップしておく必要があるわけです。

httpdサービスを起動する。

Webサービスを利用できるように準備します。
毎度のことではありますが。。。

# systemctl start httpd
# systemctl enable httpd

MariaDBサービスを起動する。

データベースサーバを起動します。

# systemctl start mariadb
# systemctl enable mariadb

データベースサーバはこれで起動しますが、この後にデータベース自体を構築します。

データベースの作成

以下のコマンドを実行し、データベースを作成します。
なお、データベースの作成に関して、各種パラメタをサンプルです。実際のデータベース作成時には、ユーザIDやパスワードを十分に考慮して設定してください。

# mysql -u root -p
> CREATE DATABASE `concrete5` CHARACTER SET 'utf8';
> CREATE USER 'concrete5'@'localhost' IDENTIFIED BY 'concrete5';
> GRANT ALL ON concrete5.* TO 'concrete5'@'localhost';
> quit

Firewallの設定

ファイアーウォールが有効になっていると思いますので、HTTPプロトコルが通過できるように設定を施します。

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

concrete5本体の設置

以下のURLをブラウザで開いて、最新版をダウンロードしましょう。
http://www.concrete5.org/download

Firefoxでダウンロードすると「ダウンロード」フォルダーに保存されますよね。

 

ここから適当なフォルダーへ移動して、解凍して、移動して、パーミッションの設定をイジイジして。。。。という流れを行います。

# mkdir /home/tmp
# mv /root/ダウンロード/concrete5-8.4.3.zip /home/tmp
# cd /home/tmp
# unzip concrete5-8.4.3.zip
# mkdir /var/www/html/contents
# mv concrete5-8.4.3/* /var/www/html/contents
# cd /var/www/html
# chown -R apache:apache contents
# chcon -R -t httpd_sys_script_rw_t contents

以上で設置完了です。

うぅーーーーーーー長い!

でも一応のインストールは出来たはずです。
ここからは、順次設定を進めます。

試しに、インストールしたconcrete5を覗いてみましょう!
以下のURLを指定すると閲覧できます。
(リモートで作業を行っている場合はIP

http://localhost/contents/

こんな画面が表示されれば、一応のインストール作業は完了です。

各種設定

言語設定

言語設定を変更します。
「日本語(日本)」を指定します。
#お好きにどうぞ!

環境チェック

実は、ここで「MSQL PDOエクステンションが有効です。」の項目がエラーになっていた。
インストール漏れはなく、設定もされていた。
結論は、Apacheが起動した状態でphp-pdoをインストールしたため、Apacheがphp-pdoを認識していなかったことが原因であった。
Apacheを再起動(systemctl restart httpd)を行うことで、認識した。

ここでは、チェックだけなので、問題がなければ「インストールを続ける」とし次へ進める。
ここで問題があった場合には、必要なパッケージをインストールするなどの対応が必要となる。

サイト情報登録

ここではサイトに関する情報を登録する。
「名前」はサイトの名称となります。
「管理者メールアドレス」は登録会員向けの発信元メールアドレスにもなります。その他、障害通知などもくるのかな?
「管理者パスワード」は編集する際などにログインする場合に使うパスワードになります。データベースのパスワードとは別にした方が良いでしょう。
データベースの各項目にはデータベース作成時に指定した内容を指定します。
今回の例では、
サーバー:localhost
MySQLユーザ名:concrete5
MySQLパスワード:cocrete5
データベース名:concrete5
となっていますが、実際のユーザ名パスワードデータベース名は十分の考慮の上設定してください。
セキュリティ上、上記の設定は宜しくありません。

「concrete5をインストール」ボタンでインストールが開始されます。

しばらく待ちます。

終わったら。。。

これで、concrete5のインストールは完了です。

「サイトを編集」ボタンをクリックすると、編集画面へ遷移します。

編集画面

編集画面をログアウトするには、右上のメニューボタンからログアウトすることが出来ます。

また再度ログインする際には、管理者ユーザが設定されています。
管理者のIDは「admin」です。
パスワードは、設定画面で設定したパスワードとなります。

ログインが上手く行かない場合には、ファイアーウォールを一度停止してみるとか、SELinuxを一度Permissiveにしてみるなどを試してみてください。

今回は以上です。
お疲れさまでした。

その内、操作方法などもアップしてみたいと思います。

MantisをCentOS 7へインストールする。

Mantisのインストールは比較的に楽だということで、インストールしてみた。

最初は順調にインストール出来たのだが、データベース絡みのセキュリティに引っ掛かったために大幅に時間をロスすることとなった。

CentOS 6までならばその問題に遭遇することなくインストール出来るようです。

CentOS 6でも下記のインストール方法でインストール出来るはずですが、CentOS 7では少しだけ設定が追加になりますので、その点も記載しながらインストール方法をまとめます。

インストール準備

まずは動作環境について整理します。

対象OS:7.3.1611
Web:Apache 2.4.6
mariadb:15.1
php:5.4.16

今回は、OSのみインストール済みでした。各種パッケージは順次インストールします。

今回インストールを行ったマシンのH/W環境は以下の様な感じです。
4コア程度の安価なマシン。
メモリは16GB入れていますが、4GBとかでも十分に動くでしょう。
HDDは。。。たまたま無かったので、空いていたSSD500GBを使いましたが、基本的にそんなスペックは必要ありませんw
実際に必要な環境は調べていませんが、各々で必要に応じて調べてください。

インストール作業

これからインストール作業を開始します。

nkfを入れたりしないのであれば多分必要ないのですが、何かとデフォルトのリポジトリだけだと足りなくって、結局入れることになるのがEPELリポジトリなんですよねw

そこで、面倒なことは先に済ませておこうということで、EPELリポジトリを登録しておきます。

EPELリポジトリ

# yum install epel-release

デフォルトで使うとか使わないとか・・・あるけど、取りあえず無視します。必要な人は、一通りインストールが終わった後で設定してください。

Apache

yumを使って簡単にインストールします。

# yum install  httpd mod_ssl

いろいろと設定を行うところはありますが、Mantisを入れることが目的ですから、簡単なインストール方法だけです。
セキュリティ面など詳細な設定を行いたい方は、別途調べてください。

Apacheを起動します。

# systemctl start httpd

CentOS 6では、

# service httpd start

自動起動の設定を行います。

# systemctl enable httpd.service

CentOS 6では、

# chkconfig httpd on

なんとなく、CentOS 6と7の違いがわかると思います。
これ以降はsystemctrl/service/chkconfig関連のCentOS 6および7による違いに関しては省略し、CentOS 7の設定方法のみ記載します。

nkf

文字コード変換ツールのnkfをインストールします。
どこのサイトにもMantisインストールに際し必要という記載は無かったのですが、readme.txtなどの日本語が入っているファイルでSJISが使われているところがあったのでインストールしました。
普通は使いませんが、必要になった時の為と思ってください。
要らない人は無視してください。

こちらも簡単に。。。

# yum install nkf

PHP

こちらも簡単にyumでインストールします。

# yum install php php-mysql php-mbstring

ntpとwget

時間を管理するためにNTPをインストールします。
またついでになりますが、wgetをインストールします。
wgetはファイルをダウンロードする際に使用しますが、今回は直接使用しません。
Mantisが使うために必要になるみたいです。

# yum install ntp wget

ここで少しタイムゾーンの設定だけしておきます。

多分、Mantisをこのまま入れてしまうと、時間の設定がゴチャゴチャするのかも知れません。意外と問題ないのかも知れませんが、取り敢えず。

# vi /etc/php.ini

内容は以下です。
タイムゾーンを指定しています。

[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo

該当箇所を修正してください。

mariadb

さて、CentOS 7からMySQLがmariadbに変更となっていることは既にご承知のことと思います。

ということで、以下のコマンドを実行してみてください。

# yum list installed | grep mariadb
mariadb-libs.x86_64             1:5.5.56-2.el7

OSのインストール手順によってこの辺りの環境はことなりますが、私の環境ではmariadb-serverが不足していました。

ということで、mariadb-serverをインストールします。

# yum install mariadb-server

続いて、mariadbを起動します。

# systemctl status mariadb
●mariadb.service - MariaDB daabase server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
# systemctl enable mariadb.service
# systemctl start mariadb.service

 

データベースの作成

mantisで使用するデータベースを作成します。

※MySQLのバージョンは大丈夫ですか?バージョンが古い場合、この後の作業を進めてしまうと後で面倒なことになります。十分注意してください。

mysqlへアクセスします。

mysql -u root

DBを作成します。

mysql> CREATE DATABASE bugtrackerdb;
mysql> CREATE USER mantisuser@localhost IDENTIFIED BY 'db_user';
mysql> GRANT ALL ON bugtrackerdb.* TO mantisuser;

※db_userについては、適当な名称を指定してください。
※その他mantisuserやbugtrackerdbについても適当に名称変更してください。

CentOS 6では、この設定だけで基本的にDBへのアクセスが許可されるのですが、CentOS 7ではもう少し作業を行います。

 

Mantisインストール

下準備が上記までの手順で完了しました。
ここからがMantisインストールの本丸です。

下記URLへブラウザでアクセスします。

https://sourceforge.net/projects/mantisbt/

「Download」のボタンをクリックすることでダウンロードされます。

ダウンロードを適当なディレクトリへ保存します。

ダウンロードしたファイル:mantisbt-2.5.0.zip

ファイルを解凍します。

unzip mantisbt-2.5.0.zip

解凍して得られたディレクトリを移動します。

mv mantisbt-2.5.0 /var/www/html/mantisbt

所有権の変更を行います。

chown apache:apache -R /var/www/html/mantisbt

ブラウザで以下のアドレスにアクセスします。

https://127.0.0.1/mantisbt/admin/install.php
※必ずローカルでアクセスしてください。外部からIPアドレスを指定しても上手く出来ない気がします。

 

CentOS 6であれば、これで上手く行くはずなのですが、CentOS 7ではエラーが発生します。

ブラウザ画面ではこれ以上何をやっても駄目でした。
パスワードを変更してみたりいろいろと手をつくしましたが、結局はlocalhostでアクセスを行える様にする際にパスワードをきちんと登録してあげる必要があるみたいです。
他の解決方法もあると思いますが、私はそれで解決しました。

では具体的に解決します。

ブラウザの「戻る」ボタンで戻ります。
駄目なら再読込みするなど元の画面に戻ります。

MySQLへ再度アクセスして、以下のコマンドを実行すると登録されているユーザ一覧が表示されます。

select Host, User, Password from mysql.user;
MariaDB [(none)]> select Host, User, Password from mysql.user;
+-----------------------+------------+-------------------------------------------+
| Host                  | User       | Password                                  |
+-----------------------+------------+-------------------------------------------+
| localhost             | root       |                                           |
| localhost.localdomain | root       |                                           |
| 127.0.0.1             | root       |                                           |
| ::1                   | root       |                                           |
| localhost             |            |                                           |
| localhost.localdomain |            |                                           |
| %                     | mantisuser |                                           |
| localhost             | mantisuser | *60E011DB435E0C2761CFC05F4D78A3FA39B912BD |
+-----------------------+------------+-------------------------------------------+
8 rows in set (0.00 sec)

ここで注目するのは、mantisuserが2つあります。

localhostと%になっている行が2つあります。

片方は何かパスワードが設定されているようですが、もう片方の%になっている方はパスワードが設定されていません。

そこにパスワードを設定します。

SET PASSWORD FOR mantisuser = PASSWORD('****');

****には適当なパスワードを指定してください。

同じようにlocalhost側のmantisuserにもパスワードを再設定します。

SET PASSWORD FOR mantisuser@localhost = PASSWORD('****');

 

先程と同じようにブラウザの画面で登録を行います。

そうするとエラーが取れました。

少し画面を省略しますが、最後のところに以下の記載が確認できます。

「Continue」をクリックすると、ログイン画面が表示されます。

初期のIDとパスワードは

ID:administrator
パスワード:root

になっています。

ログインすると以下の画面が表示されます。

 

新しいIDとパスワードを設定します。

まだ、メールの設定が出来ていませんが、一応の設定を済ませます。

「更新」しますと、再度ログイン画面が表示され新しいパスワードでログインを求められます。

再度ログインを行うと以下の画面が表示されます。

 

日本語化されていない場合は、以下の設定をconfig/config_inc.phpへ追加します。

$g_default_language = 'japanese';

以上でMantisのインストールは完了です。

メールの設定はまた別の機会に記載します。