ラベル

Server (108) work (77) Idea (68) Car (31) PC (29) DAW (28) other (19) MakingWEBsite (18) 趣味 (18) health (13) CentOS (11) drupal (11) (9) android (4) スマホ (4) communication (3) drupal7 (3) hint (3) meno (3) モバイル (3) 歯医者 (3) 第二種電気工事士 (3) 英語 (3) PC Server (2) drupal8 (2) ms access (2) uwp C# (2) めし (2) 整備 (2) 音楽 (2) MIDI (1) diy (1) 会計 (1) 動画再生 (1) 生活 (1) 郵便 (1) 食べ物 (1)

2017年6月27日火曜日

CentOS Composerを使ってdrupal8をインストール Composerのインストール

drupalを扱うのに
drush   (細かいことはできないがシンプルで使いやすい。普段のアップデートとかに便利。本体のダウンロード、データベースの作成も含めたインストールもできる。)
Drupal Console (スクリプト通りにインストールさせられる。同じ環境を数多く作りたいとか、少しずつ設定を変えてインストールしたいとか、そういうのに便利なのかな。あとは、サイトを数多く管理している人には便利なのかもしれない。)
composer  (phpのツール。pearのようなもの。依存関係を解決してインストールするもの。drupalも含めた広い範囲の依存関係を解決しながらインストールできる。)    
がある。

で、今回、
Composerを使ってdrupal8をインストールする。

主にdrupalサイトのUsing Composer to manage Drupal site dependenciesを見ながらやった。

最初にcomposerのインストールから、
(getcomposer.orgのダウンロードページ、その中のCommand-line installationに説明がある。)
適当なディレクトリで
composerのインストーラーをcomposer-setup.phpという名前にしてネットからコピー。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

インストーラーを実行して実行ファイルを作成する。
php composer-setup.php

いらなくなったcomposer-setup.phpを削除する。
php -r "unlink('composer-setup.php');"

/usr/local/bin/にcomposerという名前で移し、どこからでも使えるようにする。
mv composer.phar /usr/local/bin/composer

最後に動作確認(composerのバージョンなどの表示)
composer

--------------------------------------------------------------------------------------
drupal8のインストール

Available starting templates
featuredrupal-composer/drupal-projectdrupal/drupal ^8.3.0
open sourceyesyes
directory structuredocroot is subdirdocroot is repo root
installer-paths configyesyes
repositories configyesyes
updates scaffold filesyesno
includes drushyesno
includes drupal consoleyesno
This table is from "Using Composer to manage Drupal site dependencies" of drupal's site.

表にあるように
drupal-composer/drupal-project
(ドキュメントルート下のwebといサブディレクトリにdrupalコアがインストールされる。)
drupal/drupal
(ドキュメントルートにdrupalのコアがインストールされる。)
の2種類のインストール方法がある。

とりあえず、drupal-composer/drupal-projectの方をやってみる。
下のコマンドでサイトがダウンロードされる。
composer create-project drupal-composer/drupal-project:8.x-dev /var/www/html/hogedru --stability dev --no-interaction

rootで進めると
Do not run Composer as root/super user! See https://getcomposer.org/root for details
といわれるが、ルートを抜けれるように止まるオプションがあるわけでもなく、どんどんインストールが進む。インストール後に所有者をapacheなどにしておけばいいのかな。
Package operations: 102 installs, 0 updates, 0 removals
と、結構な数がインストールされた。
/var/www/html/hogedru
にcomposer.jsonやdrushディレクトリ、その他が作られている。
/var/www/html/hogedru/web
がdrupal8のドキュメントルートになっている。


composer.jsonを見てみると、
drupal.orgのリポジトリURLが追加されている。

    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    ],


下の2行は、安定板がなければ、開発版を使う。安定板があれば安定板を優先して使う。という意味。devの他にはstable, RC, beta, alpha。
"minimum-stability": "dev",
    "prefer-stable": true,

スクリプトの実行。
pre-install、pre-update、post-install、post-updateの中で好きなタイミングでスクリプトを書いて実行できる。

   "scripts": {
        "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold",
        "pre-install-cmd": [
            "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
        ],
        "pre-update-cmd": [
            "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
        ],
        "post-install-cmd": [
            "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
        ],
        "post-update-cmd": [
            "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
        ]
    },


インストールパスを指定する。
"extra": {
        "installer-paths": {
            "web/core": ["type:drupal-core"],
            "web/libraries/{$name}": ["type:drupal-library"],
            "web/modules/contrib/{$name}": ["type:drupal-module"],
            "web/profiles/contrib/{$name}": ["type:drupal-profile"],
            "web/themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/contrib/{$name}": ["type:drupal-drush"]


ここで、インストール。
今、/var/www/html/hogedruの下にwebディレクトリがあって、それがdrupal8のルートになっている。

/var/www/html/hogedru
で、
composer install
すると、
composer.jsonの記述に従ってダウンロード、インストールされる。

その後、drushのインストールか、手動でmysqlデータベースを作って、いつものdrupal8インストール作業を開始する。

hogedruをルートとしたサイトが作られたのかと思ったが、hogedru/web/の中にdrupal本体が入っている。どういうこと?やってみないとわからない。

drupal/drupalのインストールは
composer create-project drupal/drupal /var/www/html/hogedru
こっちの場合は、htmlディレクトリにdrupalドキュメントルートhogedruが作られる。
これもインストール後にドキュメントルートにいろいろなファイルが作られる。
余計なファイルはいらないというのであれば、composerを使ってのインストールはやめた方がいいかもしれない。

-------------------------------------------------------------------------------------
composerを使ってモジュール、テーマをセットする。

composer require drupal/<modulename>
例えば:  composer require drupal/token

すると自動でcomposer.jsonがアップデートされる。

{
    "require": { 
        "drupal/token": "1.x-dev"
    }

composerはモジュールをダウンロードするけど、インストールはしない。
有効にするにはdrushを使うこと。
drush en <modulename> -y
モジュールのステータスを見るには
drush pm-list
を使うこと。
-------------------------------------------------------------------------------------
drupalでComposerを使ってみて。
まだよくわかっていない時点での感想。

使った感じではdrush8だけを使った方がシンプルでいいのかなぁ。
drupal8になってモジュールの互換性などを検証してインストールすることがdrush8でできないから、そういうところでcomposerを使う。ということになるのか?

同じ構造のdrupalの複製を簡単に作れる。というところがいいのかなぁ。composer.jsonに構造を書いて
composer install
で作って、それをコピーペーストして・・・。(そういう使い方でちゃんと使えるのかどうかは未検証。)

それで、それをdrushを使ってデータベースの設定とdrupal本体の最終インストールを自動で行う。

ちょこちょことモジュールを変えていろいろと試したいときは、いちいちモジュールをダウンロードして、インストールしてとやるよりは時間はかからないよなぁ。

--------------------------------------------------------------------------------------

----上の事を書き出す前にここに書いたこと。
今、drupal8のインストールをcomposerでやってみようと思ってネットで調べ始めた。

調べる前は、drupal7からdrupal8になってSymfonyが採用されたのでdrushと同じようなものが平行して開発されていて、それがComposerというもの。と思っていたのだけど、どうやらComposerって、phpのComposerの事を言っているんだよなぁ。とわかってきた。(後述: ComposerとConsoleを混同していた。ConsoleがSymfony用に開発されたものらしい。)

最初は、phpのComposerとdrupalのComposerは別物なのに名前が一緒か?と思っていたけど、同一の物だった。

とにかくComposerはphpのライブラリとかツール間の依存関係を調べてインストールすることのできるツールだから、drupal8もphpだし、symfonyなども含めた広い範囲でコントロールできるから便利に使いましょう。ということらしい。
Composer開発者側からしたら、drupal用の依存関係ものはデフォルトで入れる予定はないだろうから、そこは、drupalの開発側
がdrupal用のリポジトリを作って、それをComposerに組み込んで使うようにしているらしい。

drushの事もちょっと前にインストールしたばかりで何も知らないけど、drushはdrupalように開発されたものだから、それはそれで便利な機能もあるんでしょう。
なんてったって、composerは、yumみたいに依存関係とインストール専門らしいし・・・。できることは限られているし。




2017年6月25日日曜日

CentOS6での Drushを使ってのDrupal8のインストールとアップデートdrushのインストール mysql 5.1.73 から mariadb 10.2.6 へ変更

ここでのメモの順番は
CentOS6での
drushのインストール。
Drushを使ってのDrupal7、8のアップデート。
Drushを使ってのDrupal8のインストール。
mysql 5.1.73 から mariadb 10.2.6 へ変更(drushを使ってのdrupal8のインストールがmysql5.1.73ではできなかったため)
Drushをつかってのテーマ、モジュールのダウンロード、有効化。

とりあえず、drupal7のアップデートをしたいので、drushを使えるようにしてみる。
(今まで手動でやっていた。)
drushのインストールは、ダウンロードするだけのようなもの。
それでも少し時間が経つとどこにダウンロードしてどこに配置したかを忘れるので、yumでインストールできればそれに越したことはない。
でも、yumでインストールできるのはCentOS7からみたいだ。

CentOS6では
リポジトリを入れたうえで(導入済みだった)
# yum info drush
# yum info drush  --enablerepo=epel-release
# yum info drush  --enablerepo=epel-testing
上の3つを確認したがパッケージが見つからない。

なので、yumは使わずに普通にインストールする。
drushを適当なディレクトリにダウンロード。
# wget http://files.drush.org/drush.phar

ダウンロードしたファイルの動作確認。
# php drush.phar core-status
 PHP configuration      :  /etc/php.ini
 PHP OS                 :  Linux
 Drush script           :  /tmp/drush.phar
 Drush version          :  8.1.12
 Drush temp directory   :  /tmp
 Drush configuration    :
 Drush alias files      :

実行権限をつける。
# chmod +x drush.phar

drush.pharをdrushに変えて/usr/local/bin/以下へ移動させる。
# mv drush.phar /usr/local/bin/drush

以上でインストール完了。

実際に動くかどうかの確認。
Drupalルートディレクトリに移動して
メインテナンスモードにしてみる。
Drupal 8: drush sset system.maintenance_mode TRUE
Drupal 7: drush vset maintenance_mode 1


Drush8を使ってDrupal7のアップデートをする。


最初にバックアップを取る。

メインテナンスモードにする。
drush vset --exact maintenance_mode 1

drush cache-clear all

アップデートする。
drush pm-update drupal

メインテナンスモードを解除する。
drush vset --exact maintenance_mode 0

drush cache-clear all

Drush8を使ってDrupal8のアップデートをする。


アップデートの有無を確認。
drush ups

メインテナンスモードにする。
drush sset system.maintenance_mode 1

drush cr

drupal8のアップデート
drush up drupal

モジュールのアップデート
drush up module_name

(セキュリティアップデートのあるモジュールだけをアップデートする
drush up --security-only)

次に、データベースとエンティティのアップデート。
drush updb
drush entup

メインテナンスモードを解除する。
drush sset system.maintenance_mode 0
drush cr

drupal8をdrush8でインストールする。

まず、drushを使って、drupalの最新安定板を自分の付けたい名前hegedruでダウンロードする。
cd /var/www/html
drush dl drupal --drupal-project-rename=hogedru
(drush dl drupalでダウンロード時はパージョン付のdrupalファイル名になる。)
(drush dl drupal-8 --select    バージョンを指定して、異なるバージョンから選択。)

hgedruのディレクトリに移動して
cd hogedru

ここからdrupal8のインストール。

drush si --account-name="drupal_usr_name" --account-pass="drupal_usr_password" --account-mail="usr_mail@example.com" --db-url="mysql://root:password@localhost:3306/database_name" --site-mail="hogehoge@example.com" --site-name="Dru8testsite"

で、インストールされる。
最後、ページにアクセスする前に
chown -R apache:apache /var/www/html/hogedru
とするのを忘れないように。

金型を作っておけば手動でのインストールよりはるかに楽。

下の2つの構文も参照
drush site-install standard --account-name='ac_usr_name' --account-pass='pass_word' --account-mail='ac_mail_address' --db-url='mysql://[db_user]:[db_pass]@localhost/[db_name]' --site-mail='site_mail' --site-name='hogedrusite'

drush si standard --db-url=mysql://[db_user]:[db_pass]@[ip-address]/[db_name]

ここから下はエラーが出たところの修正に関して
drush si.......とインストール時の上のコマンドを打った後、
データベースにログインできないというエラーが出た。
これは、mysqlのポート番号をlocalhostの後に入れていなかったのが原因。
--db-url="mysql://root:password@localhost:3306/hogedru"
これで、エラーがなくなりデータベースが作られた。

他のエラー
このmysqlのバージョンは5.1.73。これでは低いから5.5.3以上のバージョンにしろとエラー。
一応自分mysqlバージョンの再確認。
mysql --version
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1
ほんとだ。


バージョンを上げるのにmysqlのまま上げるか、mariaDBにするか少し迷う。
mariaDB5.5はmysql5.5をベースに開発されたものだそうで、そこ(ver5.5)ではほぼ互換だが、それ以降、別物になってきているそうだ。
現在の最新版
MySQL 5.7.18(リリース日:2017/04/10)
mariaDB 10.2(CentOS6用)

少し迷ったがmariaDBにしてしまう。
mariaDBにするなら、5.5の方が安全だろうけど、10.2を入れてみる。

一応データベース全体のバックアップをsqlで取っておく。(とらなくても大丈夫。データは残る。でも万が一の時のためにとっておく。)

mysqldump --single-transaction --all-databases --events --default-character-set=binary -u root --password=password | gzip > mysql.whole.sql.gz

それと
/etc/my.cnf
のバックアップもとっておく。

mysqlの削除をしておく。(しなくてもよさげだけど。)
その前に、MriaDBの何のパッケージを入れるのかを知るために、または、インストールに失敗して元に戻すときのために今インストールされているmysqlのパッケージを調べておく。

yum list installed | grep mysql
mysql.x86_64                           5.1.73-8.el6_8               @updates
mysql-devel.x86_64                     5.1.73-8.el6_8               @updates
mysql-libs.x86_64                      5.1.73-8.el6_8               @updates
mysql-server.x86_64                    5.1.73-8.el6_8               @updates
php-mysqlnd.x86_64                     7.1.6-1.el6.remi             @remi-php71

で、サービスをストップさせてmysqlを削除
/etc/init.d/mysqld stop
yum remove mysql
Removing:
 mysql x86_64 5.1.73-8.el6_8 @updates 2.4 M
Removing for dependencies:
 mediatomb x86_64 0.12.1-1.el6 @/mediatomb-0.12.1-1.el6.x86_64 2.5 M
 mysql-devel x86_64 5.1.73-8.el6_8 @updates 388 k
 mysql-server x86_64 5.1.73-8.el6_8 @updates 25 M

mediatombも一緒に削除されるとかで、一瞬迷ったけど、最近は使っていないし必要になればまた入れればいいと思って一緒に消すことにした。

次にMariaDB用リポジトリのファイルを作る。
https://downloads.mariadb.org/mariadb/repositories/
ここで表示されたCentOS6用のリポジトリファイルの内容は以下

# MariaDB 10.2 CentOS repository list - created 2017-06-27 05:31 UTC # http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

これを
/etc/yum.repos.d/mariadb.repo
にコピーする。

MariaDBのインストール。
インストール前に確認しとく
yum info MariaDB-devel MariaDB-client MariaDB-server MariaDB-libs

MariaDB-libsは、今、必要ないみたいだ。
必要ないということは、mysql-libsを削除する必要がある。
そのためにmysql-libsに依存しているpostfixを消せと言われたとかといろいろと厄介なことが少し前まであったようだ。でも今は大丈夫だった。

インストール
yum install MariaDB-devel MariaDB-client MariaDB-server

Installing:
 MariaDB-client x86_64 10.2.6-1.el6 mariadb 48 M
 MariaDB-compat x86_64 10.2.6-1.el6 mariadb 4.0 M
     replacing  mysql-libs.x86_64 5.1.73-8.el6_8
 MariaDB-devel x86_64 10.2.6-1.el6 mariadb 7.1 M
 MariaDB-server x86_64 10.2.6-1.el6 mariadb 109 M
Installing for dependencies:
 MariaDB-common x86_64 10.2.6-1.el6 mariadb 196 k
 galera x86_64 25.3.20-1.rhel6.el6 mariadb 8.8 M


MariaDB起動
/etc/init.d/mysql start

これで、MariaDBは今のところ全部正常に動いている。

drushを使ってモジュール、テーマのダウンロード有効化

Adaptive Themeみたいなモジュール(at_tools)と対になっているテーマは、ダウンロード以外はwebサイトから操作した方がいいと思う。

taxonomy_menuモジュールと adaptivetheme テーマ、それとAdaptive Themeに必要なat_toolsをダウンロード
drush dl taxonomy_menu at_tools adaptivetheme

ダウンロードが終わったら、
chown apache:apache -R ルードディレクトリ
を忘れずに。

テーマ、モジュールを有効にするには

オフラインにするときは(オンラインは mode 0)
Drupal 8:drush sset system.maintenance_mode 1
              drush sset system.maintenance_mode TRUE
Drupal 7: drush vset maintenance_mode 1
Drupal 6: drush vset site_offline 1

まず、drupalのキャッシュをクリア。
drupal 8 : drush cache-rebuild
drupal 7 : drush cc all

drushのキャッシュをクリア。
drush cc drush

その後で、モジュール、テーマの有効化
drush en adaptivetheme(Adaptive Themeの場合はサブテーマを設定するから下(*)のやり方の方がいい。)
drush en pathauto
drush en taxonomy_menu
drush en -y adaptivetheme  ------>機能しない
-y, --yes
(出てくるプロンプトすべてに yes )
-s, --simulate 
(関連するアクションすべてをシミュレートする。システムに実際の変更は加えない)。

(*)Adaptive Themeの場合は、サブテーマをdrushで設定できる。
drush adaptivetheme "テーマ名" テーマディレクトリ名------------>機能しない





2017年6月21日水曜日

CentOS6 phpのバージョンを5.3.3から7.0か7.1にアップする php version from 5 to 7

7.1を入れる前の自分のCentOS6のphpバージョンは、5.3.3
バージョンを上げてもほぼ問題なく動いている。

drupal8はphp5.5.9以上が必要。

CentOS6のphpを普通にyumでupdateすると5.3.3より上にいかない。

で、どうするか。
それ以上のバージョンを使うためには、fedora用の物をCentOS用にyumインストールできるリポジトリepel(Extra Packages for Enterprise Linux)と、最新のphpモジュールなどをCentOSで使えるようにしたyumが使えるremi(Remi Colletという人が管理しているからだそうだ。)が必要になる。

本当は、この際、古いCentOS6を7へアップして解決すればそれが一番いい。
でも、CentOS7のphpは5.4番台だからCentOSを6から7へバージョンアップしただけでは解決しない。だったら、とりあえずCentOS6のままphpのバージョンを上げようかと思った。
バージョンは中途半端に5.5に上げるよりもphp7.1にしてしまった方がいいだろう。
Windowsのxamppの7.1.4は問題なく動いているから7.1で大丈夫だろう。

ただ、ここで問題がある。
自分はepelもremiもインストール済みなのだが、それらはphp7.0などが出る前のものでバージョンが古い。
だから、/etc/yum.repos.d/remi.repoにremi-php71などの情報が書かれていない。(自分の場合[remi-php56]まで)。または、/etc/yum.repos.d/以下にremi-php71.repoファイルがない。
だから、epel、remiのデータの更新をしておく必要がある。

その前に自分のOSバージョンの確認
# cat /etc/centos-release
CentOS release 6.9 (Final)
現在、epel-release-6-8.noarchが最新で、それををインストールする。
(最初、epel-release-6-9.noarchとか、その上のものをを探してしまった。でも今入っているのが6-8でそれが現時点で最新。だからepelに関しては更新する必要なし。remiだけ更新する。)

更新の仕方
リポジトリはテキストファイルなので、簡単なものは自分で書ける。
でも、epelとremiはrpmでインストールできる。パッケージングした方が管理がちゃんとできるからその方がいい。

最初に現在インストールされているリポジトリを表示させる

# yum repolist all
(直接ファイルを見た方が見やすいかな。)

その中から、関係あるリポジトリのバージョンを調べる。
# rpm -qa | grep epel
epel-release-6-8.noarch     =>この下の確認でわかるのだが、最新版が入っている。
# rpm -qa | grep remi
remi-release-6.5-1.el6.remi.noarch

これからインストールするリポジトリのバージョン確認をする。
最初にepel
# rpm -qip http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-9.noarch.rpm
Name        : epel-release                 Relocations: (not relocatable)
Version     : 6                                 Vendor: Fedora Project
Release     : 8                             Build Date: Mon 05 Nov 2012 12:54:41 PM JST
これ、6-8だから今入っているのと同じ。2012年から変わってない。つまり今の自分のは最新。

次にremi
# rpm -qip http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
warning: http://rpms.famillecollet.com/enterprise/remi-release-6.rpm: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Name        : remi-release                 Relocations: (not relocatable)
Version     : 6.8                               Vendor: Remi Collet
Release     : 2.el6.remi                    Build Date: Fri 10 Feb 2017 10:27:59 PM JST
For PHP 5.6 you must enable the remi-php56 repository:
    yum-config-manager --enable remi-php56

For PHP 7.0 you must enable the remi-php70 repository:
    yum-config-manager --enable remi-php70

For PHP 7.1 you must enable the remi-php71 repository:
    yum-config-manager --enable remi-php71
こっちは6.8-2で今の自分のものよりバージョンが上がっているしremi-php71が入っている。ということでこっち(remi)だけ更新すればいいと思う。

インストールされているリポジトリ削除のテスト(epelは更新しないことになったので削除しない。ただ、削除テストをすることで依存関係を知ることはできる。)
# rpm -e --test epel-release-6-8.noarch
error: Failed dependencies:
        epel-release >= 6 is needed by (installed) remi-release-6.5-1.el6.remi.noarch
上のことから、remi-release-6.5-1.el6.remi.noarchを削除してからepel-release-6-8.noarchを削除する。

# rpm -e --test remi-release-6.5-1.el6.remi.noarch

削除
rpm -e remi-release-6.5-1.el6.remi.noarch
/etc/yum.repos.d/remi.repoが消えていることを確認しておく。
rpm -e epel-release-6-8.noarch  (epelは更新しないことにしたので削除しない。)

最新リポジトリのインストール

もし、epelを更新するなら(更新しても同じ物になるはず。)
# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

remiのインストール
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
(Remi's RPM repositoryというサイトのMaintained Enterprise Linux (RHEL / CentOS / Other clones)の下のリンク。Enterprise Linux 6 - repository auto-configuration package : remi-release-6.rpm)

remi-php54.repo
remi-php70.repo
remi-php71.repo
remi.repo
が/etc/yum.repos.d/に追加されたことを確認。

インストール後は、
リポジトリのファイル/etc/yum.repos.d/remi.repoなどで
enabled=0
の設定になっていることの確認をする。

次にphp7.1のインストール

その前にphp5.3.3をどうするか
php5.3.3をアンインストールするかどうか。
php5.3.3はphp7.1に上書きされるみたいなのだけど、
php5.3.3を削除しておいた方が安全なのかなぁ。
どこかのサイトで、php7は別ディレクトリにインストールされると書いてあるのを見た覚えがある。5を削除すれば5の位置に7が丸々入るのか。
上書きした場合phpの設定は引き継ぐのか。
自分の決定。
上書きをするといらないファイルが残って悪さをする可能性もあるからとりあえずきれいさっぱりphp5.3.3を削除することに決めた。

アンインストールする前に、
# rpm -qa | grep php
をやって、今インストールされている物をメモしておく。

で、アンインストール
/etc/init.d/httpd stop
/etc/init.d/mysqld stop
yum remove php-*

php7.1のインストールするものを決める
今、php5.3.3でインストールされていたのが
# rpm -qa | grep php       (# yum list installed | grep php)
php-gd-5.3.3-49.el6.x86_64
php-xml-5.3.3-49.el6.x86_64
php-5.3.3-49.el6.x86_64
php-devel-5.3.3-49.el6.x86_64
php-pdo-5.3.3-49.el6.x86_64
php-mbstring-5.3.3-49.el6.x86_64
php-cli-5.3.3-49.el6.x86_64
php-mysql-5.3.3-49.el6.x86_64
php-process-5.3.3-49.el6.x86_64
php-common-5.3.3-49.el6.x86_64
php-pear-1.9.4-5.el6.noarch

今の環境と同じものを作りたいのだから、
これのphp7.1バージョンをそのままインストールしてみる。

インストールする前に一つ一つの情報をinfoコマンドで確認する。
yum --enablerepo=epel,remi,remi-php71 info php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear
これを見れば、現在インストールされているもの(Installed Packages)と、remiからインストール可能なもの(Available Packages)が一覧になって表示される。

知りたい情報を表示させることもできる。(以下の2つの例はremiアップデート前の状態)
# yum --enablerepo=epel,remi info php71
Available Packages
Name        : php71
Arch        : x86_64
Version     : 1.0
Release     : 1.el6.remi
Size        : 2.1 k
Repo        : remi
Summary     : Package that installs PHP 7.1
License     : GPLv2+
Description : This is the main package for php71 Software Collection,
            : that install PHP 7.1 language.
(これはphp71がリポジトリremiの中に書かれてなくても表示される。)

# yum --enablerepo=epel,remi info php
Installed Packages
Name        : php
Arch        : x86_64
Version     : 5.3.3
Release     : 49.el6
Size        : 3.5 M
Repo        : installed
Available Packages
Name        : php
Arch        : x86_64
Version     : 5.4.45
Release     : 13.el6.remi
Size        : 2.8 M
Repo        : remi

php7.1のインストール

yum --enablerepo=epel,remi,remi-php71 install php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear

Installing:
 php               x86_64     7.1.6-1.el6.remi      remi-php71   2.8 M
 php-cli          x86_64     7.1.6-1.el6.remi      remi-php71   4.1 M
 php-common  x86_64     7.1.6-1.el6.remi      remi-php71    992 k
 php-devel      x86_64     7.1.6-1.el6.remi      remi-php71    1.3 M
 php-gd          x86_64     7.1.6-1.el6.remi      remi-php71    67 k
 php-mbstring  x86_64     7.1.6-1.el6.remi      remi-php71    977 k
 php-mysqlnd   x86_64     7.1.6-1.el6.remi      remi-php71    203 k
 php-pdo         x86_64     7.1.6-1.el6.remi      remi-php71    105 k
 php-pear        noarch     1:1.10.4-2.el6.remi  remi              367 k
 php-process    x86_64     7.1.6-1.el6.remi      remi-php71      61 k
 php-xml          x86_64     7.1.6-1.el6.remi     remi-php71     174 k
Installing for dependencies:
 gd-last           x86_64      2.2.4-1.el6.remi     remi               126 k
 libwebp           x86_64      0.4.3-3.el6            epel               210 k
 php-json        x86_64       7.1.6-1.el6.remi     remi-php71       53 k
こんな感じで入った。

/etc/init.d/httpd start
/etc/init.d/mysqld start
で、drupal7のサイトは普通に立ち上がった。

他のサイトが飛んでしまっていた。
何年も前に作ったサイトで、どんな設定だったかをを忘れてる。
phpのバックアップを取っておくべきだった。

-------------------------------------------------------------------------
リポジトリepelとremiは
どちらも普段はoff(enabled=0)にしておく。
理由は本来のパッケージとごちゃ混ぜになってしまったり、アップデートしなくていいものがアップデートされたりするからだ。
offにすると、php上位バージョンをインストール後は、いちいち
yum --enablerepo=remi,epel update php*
で、php関係のアップデートの確認が必要になる。
面倒だけどしようがない。(yumのcronアップデートを使えばいいのだろうけど、cronはUpdate後にPCがおかしくなっていても気づかずにいたことがあったのでそれはやらない。)

--------------------------------------------------------------------------
drupalで推薦されているphpのバージョンが書かれている場所。

\drupal-8.3.3\core\INSTALL.txt
に、
 PHP 5.5.9 (or greater). For better security support it is
  recommended to update to at least 5.5.21 or 5.6.5.
と書いてある。
drupalのサイトには
PHP Built-in Web Server (Development Only)
PHP Built-in Web Server is included as a CLI SAPI tool in PHP versions 5.4.0 and above.
と書いてある。セキュリティを考慮しなくてもいいなら5.4.0でも動くよってことなのかな。
drupal7 PHP 5.2.5 or higher (5.4 or higher recommended)
だそうだ。
-----------------------------------------------------------------------------------
何かの時のために、削除した時の情報を残しておく。
# yum remove php-*
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-common.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-devel.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pear.noarch 1:1.9.4-5.el6 will be erased
---> Package php-process.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                 Arch                              Version                                    Repository                        Size
=============================================================================================================================================================
Removing:
 php                                     x86_64                            5.3.3-49.el6                               @base                            3.5 M
 php-cli                                 x86_64                            5.3.3-49.el6                               @base                            6.2 M
 php-common                              x86_64                            5.3.3-49.el6                               @base                            2.9 M
 php-devel                               x86_64                            5.3.3-49.el6                               @base                            3.0 M
 php-gd                                  x86_64                            5.3.3-49.el6                               @base                            324 k
 php-mbstring                            x86_64                            5.3.3-49.el6                               @base                            2.1 M
 php-mysql                               x86_64                            5.3.3-49.el6                               @base                            216 k
 php-pdo                                 x86_64                            5.3.3-49.el6                               @base                            168 k
 php-pear                                noarch                            1:1.9.4-5.el6                              @base                            2.2 M
 php-process                             x86_64                            5.3.3-49.el6                               @base                             65 k
 php-xml                                 x86_64                            5.3.3-49.el6                               @base                            307 k

Transaction Summary
=============================================================================================================================================================
Remove       11 Package(s)

Installed size: 21 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Erasing    : php-mysql-5.3.3-49.el6.x86_64                                                                                                            1/11
  Erasing    : php-devel-5.3.3-49.el6.x86_64                                                                                                            2/11
  Erasing    : 1:php-pear-1.9.4-5.el6.noarch                                                                                                            3/11
  Erasing    : php-5.3.3-49.el6.x86_64                                                                                                                  4/11
  Erasing    : php-cli-5.3.3-49.el6.x86_64                                                                                                              5/11
  Erasing    : php-pdo-5.3.3-49.el6.x86_64                                                                                                              6/11
  Erasing    : php-process-5.3.3-49.el6.x86_64                                                                                                          7/11
  Erasing    : php-gd-5.3.3-49.el6.x86_64                                                                                                               8/11
  Erasing    : php-xml-5.3.3-49.el6.x86_64                                                                                                              9/11
  Erasing    : php-mbstring-5.3.3-49.el6.x86_64                                                                                                        10/11
  Erasing    : php-common-5.3.3-49.el6.x86_64                                                                                                          11/11
warning: /etc/php.ini saved as /etc/php.ini.rpmsave
  Verifying  : php-mbstring-5.3.3-49.el6.x86_64                                                                                                         1/11
  Verifying  : php-pdo-5.3.3-49.el6.x86_64                                                                                                              2/11
  Verifying  : php-mysql-5.3.3-49.el6.x86_64                                                                                                            3/11
  Verifying  : php-xml-5.3.3-49.el6.x86_64                                                                                                              4/11
  Verifying  : php-cli-5.3.3-49.el6.x86_64                                                                                                              5/11
  Verifying  : 1:php-pear-1.9.4-5.el6.noarch                                                                                                            6/11
  Verifying  : php-5.3.3-49.el6.x86_64                                                                                                                  7/11
  Verifying  : php-gd-5.3.3-49.el6.x86_64                                                                                                               8/11
  Verifying  : php-devel-5.3.3-49.el6.x86_64                                                                                                            9/11
  Verifying  : php-process-5.3.3-49.el6.x86_64                                                                                                         10/11
  Verifying  : php-common-5.3.3-49.el6.x86_64                                                                                                          11/11

Removed:
  php.x86_64 0:5.3.3-49.el6           php-cli.x86_64 0:5.3.3-49.el6            php-common.x86_64 0:5.3.3-49.el6       php-devel.x86_64 0:5.3.3-49.el6
  php-gd.x86_64 0:5.3.3-49.el6        php-mbstring.x86_64 0:5.3.3-49.el6       php-mysql.x86_64 0:5.3.3-49.el6        php-pdo.x86_64 0:5.3.3-49.el6
  php-pear.noarch 1:1.9.4-5.el6       php-process.x86_64 0:5.3.3-49.el6        php-xml.x86_64 0:5.3.3-49.el6

---------------------------------------------------------------------------------
OPcacheに関してのPHP7.1は
http://yasutam.blogspot.jp/search?q=PHP+OPCODE+CACHING+opcache++++CentOS++php7.1





2017年6月17日土曜日

drupal 8 物の置き場所リストを作る 片づけ

物が捨てられなくて、使わないものでいっぱいになっている。
使わないものは捨てて、きれいさっぱりになって、いつでも探し物がさっと探せる状態になりたい。

でも、一気にそれは無理だし、きれいさっぱりも、なればなったで面白くないような気もする。

とりあえず、今の散らかっている状態のままで、かったぱしから物とその置いてある場所を(できれば写真とともに)登録して、物のリストから一発で探したいものを探し出せるようにしたい。
適当なところにポーンと物を置いて、その場所を置き場所としてパソコンに登録しておけば、整理させている状態と同じだ。

登録して置けば、パソコン上で移動させてその通りに現物の移動をすればいいわけだし、散らかっているのはもちろん嫌だけど、自分で物のありかを把握できてない方がもっと嫌なわけで、それと、片づけるために置く場所にこだわるのもなんだか別な意味で効率悪そうだし。
 物を登録して、その後PC上で動かしながら、いい場所を探していくのが楽しいかもなぁ。と思った。


で、簡単に作ってみる。
MS Accessが簡単で柔軟。
でも、スマホで撮った写真をそのままアップロードさせたい。
そうなるとサーバーに置いてapacheなどから使おうとすると、PHPとかJAVAとかになるのか。
ぱぱっと作りたいということで、drupal8 にした。

作り方
タクソノミーにボキャブラリー「片づけ」を作る。
片づけの中のターム、
家-
   -A部屋
    -机
     -A引出し
     -B引出し
    -戸棚
   -B部屋
    -本棚
などと作る。

「物の名前」というコンテンツタイプを作って、そこにタクソノミのタームをあてはめられるフィールドを作る。
フィールドは一つのフィールドと無限に作れるフィールドの二つを作る。
一つは現在物が置いてある場所。もう一つは以前に置いてあった場所を入力できるようにしておく。

Taxonomy menuモジュールを入れて左サイドメニューにタクソノミー「片づけ」を表示させる。
設定
Home  Administration  Structure  Taxonomy menu Configuration
で、MenuはTools、Parent menu linkは<Tools>
タクソノミーをviewsを使って表示させたかったのだけど、親ターム子タームまでならできる。けど、親ターム子ターム孫タームまでなると、うまく段差をつけて表示させることができない。(ちなみに親ターム子タームだけなら、viewsでコンテンツのフィールドのターム毎にグループ化した後で、リレーションシップで、Parent termを選択。あとは、表示させるところをいろいろいじると、どうにかなる。)


テーマの選択。
drupalのオリジナルテーマは、いろいろな機能がついていて自分のやりたいことに合わないと少し使いにくい。

単純な構造だから、自分で一から作ってもそんなに大変ではないと思う。
ただ、Bootstrapを使ったら、シンプルで結構よかったので、一旦それに決めた。
が、Taxonomy menuの表示がうまくいかない、で、Adaptive Themesを使ったらうまくいったので、Adaptive Themesを使うことにした。
(Adaptive Themesは表示に時間がかかるかも。シンプルなテーマを自分で作ったほうがいいのか。)

配置
部屋ごとに置いてある物を探す
  taxonomy menuを使って左サイドメニューに表示させる。
物のリストから、物を探す。
  右側のサイドメニューに「物の名前」コンテンツのリストをviewsを使って表示させる。
それぞれの結果が真ん中のメインコンテンツに表示される。

修正点
Adaptive Themesの問題点。
メインコンテンツにviewsで作ったブロックを入れたら、下に、ユーザー名とそのユーザーの登録期間が大きく表示される。これは邪魔だから取り除きたい。
その方法
\themes\adaptivetheme\at_core\templates\user\user.html.twig

user__title がユーザー名
content がユーザー登録期間
を表しているので、その表示関連部分をコメント化。


admin/config/system/site-information
で、site nameを書き換えても表示が自分で書き換えたものにならずに"drupal"と表示されてしまう。これは、どのテーマを使っても同じ。
解決方法は
\sites\default\settings.php

 $config['system.site']['name'] = 'My Drupal site';
を有効(#を取って)にして、My Drupal siteを自分のサイト名に変更する。
変更後にサイト上で文字化けする時はファイルのテキストがUTF-8になっているかどうかの確認。

drupalのフォーラムではbugだ。と言っている人もいる。
これに対して
drupalドキュメントの
10.1. Concept: User Interface, Configuration, and Content translation
から、10.5まで読めと言っている人もいる。(自分は面倒だから読んでいない)

また、このサイトネームを修正するのではなくて削除したいときは、
Adaptive Themesの場合
\themes\adaptivetheme\at_core\templates\block\block--system-branding-block.html.twig

            {%- if site_name -%}
              <strong class="site-branding__name"><a href="{{ path('<front>') }}" title="{{ 'Home'|t }}" itemprop="url" rel="home" class="site-branding__name-link">{{ site_name }}</a></strong>
            {%- endif -%}
ここの部分をコメント化すればいい。
(site_nameがdrupalの中でサイトネームの変数になっている。)

右下の"Design by Adaptivethemes.com"を取り除く。
テーマの設定でExtensions> Markup Overrides の "Show attribution message"のチェックを外す。


2017年6月12日月曜日

Windows10、xamppの環境でDrush8を使えるようにする drushを使ってのupdate

CentOSではdrushをyumから簡単にインストールできるそうだ。

Drupal8からDrushと同じような働きをするDrupal Consoleというものも出てきたそうだ。(Drushをインストールできる環境なら、そのままDrupal Consoleもインストールできる。使ってみたらこっちの方がいろいろできて便利かな。)

ここからWindows xamppでdrushを構築する話

なぜ、WindowsにDrushを入れようと思ったか。
drupal8のアップデートを手動でやると面倒。
で、Drush8を使って一発でアップデートをしたいと言うのがdrushを入れる理由。
もともとWindows環境は外とつながるわけでもないからアップデートする必要はなかったのだけど、うまく動かないところがあって、アップデートしたら動くようになるのかなぁと思ったのが最初。

-----------------------------------------------------------------------------
drushは、linuxのコマンドが使えることを前提に設計してあるので、linuxコマンドが使えないWindowsのコマンドプロンプト上でdrushを操作してもエラーが結構出る。((アップデート時に)解凍できないとか、ダウンロードができないとか)。

それなので、最初にWindowsコマンドプロンプト上でdrushに必要なlinuxコマンドが使える環境を作る必要がある。

エラーが出るたびに足りなさそうなコマンドを追加していってもいいのだけど、(実際、自分はそのようにしてやって、えらく時間がかかってしまった。)
必要なパッケージを選択して、まとめてインストールできる便利なツールがある(drupalサイト内のCommunity Documentation>Installing Drush on Windowsに書いてあった。----8年前の古い記事だったので最初は読まなかったのだけど、これが一番役に立った)。

それがCygwin。(同じようにWindows上でlinuxコマンドを使えるもので単体インストールできるのはGit for Windows。どっちをどう入れるかをよく考えてからインストールした方がいい。Gitの方が一般的というか、面倒でないと思う。ここではgitをCygwinのパッケージとしてインストールしている。)
Windowsが64bit版なら、これの64bit版をダウンロード、インストールして、必要なパッケージを選んでインストール。
必要なパッケージは
ncurses
Git 
bsdtar
cURL
あとは、wgetも入れておく(cURLがあれば必要ないとおもう。両方ともに入ってないと、wgetかcURLを入れろとエラーが出る。)。

自分は
D:\cygwin64
にインストールした。

インストール後に、
D:\cygwin64\binの
cygwin1.dll

C:\Windows\System32
にコピー。
システム環境変数のpathを選択して、編集から新規で
D:\cygwin64\bin
D:\cygwin64\usr\bin
D:\cygwin64\usr\local\bin
を追加。
システム環境変数の新規で、
適当な名前ld_library_pathとかとつけて、
D:\cygwin64\lib
D:\cygwin64\lib\w32api
D:\cygwin64\usr\local\lib
を追加。(最低限、色のついているのだけやっておけばOkay。)
--------ここから上はインストール後に追加した文章
ここまでやった後でdrushを下のようにしてインストールするとエラーもなくスムーズに事が進む。



検索をかけるとdrushのインストールの方法がいろいろあるようだ。
で、どうしようかと思っているのだけど、最近の主要なやり方のComposerを使ってのインストールをしてみようと思った。

Composer---PHP のライブラリ管理ツール(pearなどと同じようなもの)。
インストール方法。

getcomposer.org
から、
Composer-Setup.exe
をダウンロード、インストール。

プログラム本体
composer.phar
1.4.2 (2017-05-17)
を同サイトから直接ダウンロードして手動でセットアップすることもできる。

-------------------------------------------------------
curlが使える環境なら、
まずは、インストールしたいディレクトリに移動して、
curl -sS https://getcomposer.org/installer | php
または
php -r "readfile('https://getcomposer.org/installer');" | php

その場で実行するには
php composer.phar
とする。このように因数なしで実行するとコマンド一覧が表示される。

(ここから下のcurlは上のCygwinでインストールされていれば、入れる必要なし。)
drushでdrupalのアップデートなどをするときに、wgetかcURLがコマンドプロンプトのコマンドから使えないと、エラーになるのでここで、cURLを使えるようにしておく。
curl.haxx.se/download.html

Win64 - Generic
Win64 x86_64 7zip 7.54.0 binary SSL SSH Viktor Szakáts 1.83 MB
をダウンロード、解凍。
そのbinフォルダーのアドレスをユーザー環境変数に登録しておく。
-------------------------------------------------------

composerをインストールしたら、コマンドプロンプトを(管理者として)立ち上げて、
composer global require drush/drush
(drush8を指定でインストールしたいときには
composer global require drush/drush:8.*)
とすると、最新安定板のDrushがインストールされる。
(今、インストールされたdrushは
Drush Versionとコマンドを打つと、
Drush Version   :  8.1.12)

drushはmysqlのコマンドを操作するので、mysql.exeのパスをユーザー環境変数に登録しておかないとエラーが出る。
D:\xampp\mysql\bin
(D:\xampp\phpもパスが通ってなかったら通しておく)
をユーザー環境変数に登録しておく(システム環境変数に登録でも構わないと思う。というか、そっちの方が面倒なことになる可能性が低いと思う。この時はあっちこっちいろいろと試していて、たまたまユーザー環境変数に登録していた時だった。)。
登録したら、コマンドプロンプトを再起動して
path
とコマンドを打って、登録したパスが登録されているかを確認する。
------------------------------------------------------
drushの使い方

drupalのサイトを動かしている状態で、そのサイトのルートディレクトリに移動する。
そこで、例えば
drush status
とコマンドを打てばdrupalの状態が表示される。

drushでのdrupalアップデート一連の操作
バックアップを取る必要があるかどうかの確認メインテナンスモード開始
drush sset system.maintenance_mode 1
drupalアップデート開始
drush pm-update drupal
とか
drush up
メインテナンスモード終了
drush sset system.maintenance_mode 0

drush環境を作るのが少し面倒だけど、作ってしまえばコアの一発アップデートはすごく快適だ。

drushを使ってのダウンロード
drush dl drupal
(最新安定版drupalのダウンロード)drush dl rules
(rulesモジュールのダウンロード)
同時に2つ以上のダウンロードも可。

drupal8のインストール

コマンドプロンプトで

drush si --account-name="drupal_usr_name" --account-pass="drupal_usr_password" --account-mail="usr_mail@example.com" --db-url="mysql://root:password@localhost:3306/database_name" --site-mail="hogehoge@example.com" --site-name="Dru8testsite"

Windows開発環境のmysqlにはrootのパスワードを作らない。
(忘れるから)
でも、パスワードがないとdrupalのインストールでこけるときがあるので、(パスワードがない時の設定を忘れるから。だと思う。)
他のユーザーに簡単なパスワードをあてて登録しておく。
そのmysqlユーザーでdrupalをインストール。
パスワードを忘れたときはdrupalの設定を見れば書いてある。


2017年6月9日金曜日

drupal8 content コンテンツ image 写真の大きさ

写真の大きさをそろえて(決めて)アップしたいとき。
Contentの本文bodyにアップしたいときは、
Insert module
(でも、drupal8のモジュールはまだ、alpha版。)
を使うそうだ。
よくわからないけど、drupal7ならckeditor moduleを使えるのか?と思ったら、drupal8はデフォルトでckeditorを使っているらしい。
ckeditorはWYSIWYG(What You See Is What You Get--見たまま表示される)とかなんとか書いてあったから、もしかしてと思って、アップロードする前の写真の右下をドラッグしたら、大きさを自由に変えることができた。
便利だけど、知らない人はそれに気が付かないよなぁ。
知らない人のためには、Insert moduleを使って、製作者側で大きさを決めた方が親切かもしれない。

あとは、本文でなくてもいいなら、
Content types > Manage fields
で、
+Add field
そこでFIELD TYPEのimageを選択すると、そこで写真の大きさの上限下限を決めることができる。
きっちり決めたいときはManege displayタブをクリックして、
自分が作ったイメージフィールドの右側のgear wheel buttonをクリックすると、
イメージスタイルから、イメージの大きさを選択することができる。

このイメージの大きさは自分で設定することができる。
admin/config/media/image-styles
で、+Add image style。

ファビコン favicon svg ico

ペイントツールのサイズ変更から、
32x32 ピクセルを選択。
1つだけを使うときは、32x32ピクセルを使いまわす。
ieが16x16
fire fox、Chrome、safariなどは32x32
大きければ縮小表示してくれるそうだ。
でも、縮小されて、形が変なことになることもあるから16x16と32x32のマルチアイコンにするといいそうだ。

時間があれば16x16も作っておく。

pngからicoに変換しておく。(変換してくれるサイトは検索するといっぱい出てくる。)

で、drupal 8にアップロード。
自分の使っているテーマの設定からファビコンをアップロードできる。
アップロード場所は
sites/default/files
になっている。

管理用テーマのファビコンも変えておく。