ラベル

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年12月1日金曜日

uwp ファイルの書き込み デバイス一覧をテキストファイルに書き込み

UWPでのテキストファイルの書き込み

UWPではStreamWriterが使えない。
UWPでは任意のフォルダにテキストを書き出すことができない。
----------------------------------
自PCの全デバイス名をテキストファイルに書き出すコード。

Buttonをひとつ配置

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Devices.Enumeration;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x411 を参照してください

namespace 練習20171130a24UWP_ファイル
{
    /// <summary>
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();         
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {

            string selector = "System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True";
            DeviceInformationCollection collection = await DeviceInformation.FindAllAsync(selector);

            // Create sample file; replace if exists.
            Windows.Storage.StorageFolder storageFolder =
                Windows.Storage.ApplicationData.Current.LocalFolder;
            Windows.Storage.StorageFile sampleFile =
                await storageFolder.CreateFileAsync("sample.txt",
                    Windows.Storage.CreationCollisionOption.ReplaceExisting);

            var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

            using (var outputStream = stream.GetOutputStreamAt(0))
            {
                // We'll add more code here in the next step.

                using (var dataWriter = new Windows.Storage.Streams.DataWriter(outputStream))
                {

                    foreach (DeviceInformation info in collection)
                    {
                        dataWriter.WriteString(string.Format("Name={0} IsEnabled={1} Id={2} \r\n", info.Name, info.IsEnabled, info.Id));

                    }




                        // dataWriter.WriteString("DataWriter has methods to write to various types, such as DataTimeOffset.");

                        await dataWriter.StoreAsync();
                    await outputStream.FlushAsync();
                }
             
            }
            stream.Dispose(); // Or use the stream variable (see previous code snippet) with a using statement as well.

        }
    }
}



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

msn
https://docs.microsoft.com/ja-jp/windows/uwp/files/quickstart-reading-and-writing-files#writing-to-a-file
のテキストファイルへの書き込みの解説通りにコードを組み立てた。

buttonを一つ配置

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Devices.Enumeration;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x411 を参照してください

namespace 練習20171130a24UWP_ファイル
{
    /// <summary>
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();         
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {

            // Create sample file; replace if exists.
            Windows.Storage.StorageFolder storageFolder =
                Windows.Storage.ApplicationData.Current.LocalFolder;
            Windows.Storage.StorageFile sampleFile =
                await storageFolder.CreateFileAsync("sample.txt",
                    Windows.Storage.CreationCollisionOption.ReplaceExisting);

            var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

            using (var outputStream = stream.GetOutputStreamAt(0))
            {
                // We'll add more code here in the next step.

                using (var dataWriter = new Windows.Storage.Streams.DataWriter(outputStream))
                {

                    dataWriter.WriteString("DataWriter has methods to write to various types, such as DataTimeOffset.");

                    await dataWriter.StoreAsync();
                    await outputStream.FlushAsync();
                }
             
            }
            stream.Dispose(); // Or use the stream variable (see previous code snippet) with a using statement as well.

           //書込み終了ダイアログ
           await new MessageDialog("書込み終了", "インフォメーション").ShowAsync();

        }
    }
}

2017年11月21日火曜日

トイレ用ヒーター

冬のトイレの暖房ヒーター。

トイレの照明スイッチとヒータースイッチが同じになるようにしたい。
そうすればトイレに入ったときにすでに暖房が動き出しているし、消し忘れもない。消し忘れても照明がついていれば、消し忘れを発見しやすい。

でも普通のスイッチだと焼ける可能性があるよなぁ。

で、リレー式のスイッチを使おうかとも思ったけれど、600w/hくらいのヒーターならそこまでしなくても「押し釦開閉器」で大丈夫みたいだ。検索かけたら、モノタロウで春日電機というところから単相用で定格通電電流15Aまで、と30Aまでのスイッチが出ているのを見つけた。しかも安い。15Aまでの物で1000円以下。

でも、でかいよなぁ。

2017年11月12日日曜日

擦り傷 絆創膏 モイストヒーリング

2017/11/10
金曜日の午後4時少し前、山を走っていて転んだ。
土の一部に出ているギザギザの石の上にスライディングするような感じで転んでしまって、21cm x 6cmくらいのちょっと深めの擦り傷を右腕に作ってしまった。
転んで手をついた側の右手は軍手をして、その上汗を拭くタオルを持っていたので掌は無傷。長袖を着ていたけど、軍手と長袖の間に入った石に引っかかりながら、その石が袖をまくりながら傷をつけていった感じ。
ついでに書くと、左手は軍手の上から軽い傷、右足の膝が傷プラス直径10cmくらいの青あざ。

帰ってきて、洗面所のシャワーで洗い流した。土もついていたので、いいのかどうかはわからないけど固形石鹸も使って洗い流した。
痛さはズンズン痛い。
その日の午後7時ころ、前からちょっと試してみたかったモイストヒーリング用絆創膏をカワチ薬局で買ってきて貼った。

丸々3日間絆創膏を貼りっぱなしにして、2017/11/13月曜日、夜飯を食べてお風呂に入った後、午後7時ころ洗面所のシャワーで水を使ってきれいに洗い流してから、新しいものに貼り替えた。
この時の状態は傷口の上をきれいに柔らかいぶにょぶにょの新しい組織が覆っているという感じ。
3日間も絆創膏を貼って、中がぐちょぐちょ状態だったので膿んでしまわないか心配だったけど、洗い流したらきれいないい感じの状態になっていた。
最初貼る時にちゃんと洗ったのがよかったのかもしれない。

2017/11/18日
5日ぶりに絆創膏を貼り替えた。絆創膏にはまだ液体がついていた。まだ傷は残っている。でも、もう貼らなくてもいいかも。と思うくらいになっていた。

11月10日と11月13日は
薬局に置いてある中では一番大きなMサイズの
白十字 モイストヒーリングパッド
シートサイズ:8cm×10cm パッドサイズ:4.5cm×6cm
を貼った。
11月18日は
ケアリーヴ 治す力
CN4J ジャンボサイズ:4枚
を貼った。

白十字のは傷口が透けて見えるので安心できる。初めてモイストヒーリングをする人には状態が分かるのでいいかもしれない。すごく薄いので台紙が両面についている。肌に触れない側の台紙は貼った後にはがすこと。そうしないと薄いので絡まってしまう。

ケアリーヴは少しくらい水にぬれてもはがれにくい。傷口は見えない。


モイストヒーリング
傷口を乾かさずに治すことをそう言うみたいだ。
ネット上では高機能絆創膏と書いてあったりする。
買うときには「管理医療機器 家庭用創傷パッド」と書かれているものを買えばいいそうだ。

少し前はサランラップを巻けとか書いてあったよなぁ。
今でもそれでいいのだろうけど・・・。

瑞光メディカルのプライモストのPシリーズが結構ネットを検索すると出ているけど、P1など自分の今のキズをカバーできる大きさの物は3000円ちょっとするし、2回分としてもそんなに安くはないよなぁ。
同じく瑞光メディカルのハイドロコロイド包帯 HCARRを傷口に直接使っている人がいるけども、これはプライモストの上から押さえる物として使う、と製品の説明に書いてあった。紫外線をカットしてくれるからその点でもいいと書いてある。
上から押さえるのならニチバン 防水フィルムロールタイプ 10cm幅 1m巻きを買う人も多くいるみたいだ。ハイドロコロイド包帯 HCARRをこのニチバン 防水フィルムロールタイプで留めている人がアマゾンのレビューでいるみたいだけど、その使い方でいいのか?実物を見てみないとそこいら辺はわからない。

自分のキズは21cm x 6cmくらいの擦りキズで、3枚重ねて貼った。
両端は内側の粘着部分を切って貼って真ん中は上からかぶせて貼るのが良かったのだろうけど、それか、端から順番に貼る時は重ねて貼る部分の下側の粘着部分は切り落として、上になる部分は粘着部分を切り落とさずに貼る。
(そうすれば、貼り合わせ部分を粘着部分で覆える。そういう貼り方をすれば、絆創膏から血が漏れ出てこない。)
端から順番に貼るときに、2番目の絆創膏の両側の粘着部分を切り落としてしまったので、つなぎ目の部分を粘着部分で覆えなかった。でつなぎ目には漏れを防ぐために普通の絆創膏を貼った。

最初のうちは1日に一回張り替えてくれと書いてある。少ししたら2,3日に一回。水できれいに洗って張り替えるそうだ。で、2週間くらいで治る。そうだ。

自分は今のところ日曜日午後3時15分まで貼りっぱなし。
液体でじゅぶじゅぶしている。
洗って貼り替えた方がいいのか。
2週間くらい貼りっぱなしでいいと思っていたから予備の絆創膏は買わないとない。
適当に様子を見ながらやってみる。


2017年10月17日火曜日

vw golf 4 リモコン 電池 鍵

自分のは
CR1620 を2個直列6V仕様。
一つが3Vだから6V。

CR2032仕様のものもあるらしい。
それは一つだけの3V仕様。

電池を交換してもリモコンが効かない。
全く反応しない。
鍵をシリンダーに挿せば機能する。

で、少し時間をおいてリモコンキーのスイッチをオン、オフしたら動き出した。
キーの接触が悪いのかなぁ。

ドア関係のことで、別の問題をついでに書くと、
運転席のドアの開け閉めを認識しない。
ドアについているランプが点かない。
それはDoor Lock Control Moduleのドアの開け閉めを認識するスイッチの動きが悪くなるのがその原因らしい。
分解、掃除の仕方がyoutubeに出ている。

2017年8月15日火曜日

daw dtm vst プラグイン

Komplete
Session Strings Pro
Basses, Cellos, Ensemble, Violas, Violinsから選べる。
設定--歌系用バイオリンの場合。
Sections 1 and 2(近いところで録音(対してオーケストラ定位置で指揮者の場所?での録音はSections 3 and 4))>Contemporary(普通)>Violins>Production(打ち込み)

下の方に3つタブがある。真ん中にkey switchタブがある。

2017年8月11日金曜日

ドラム 音程


基本的に3度でチューニング。だそうだ。
ドミソで合わせるってことか。
ネットで検索かけてたら、適当って人が多いけど、単独ならいいだろうけど、バンドでやる時は全体で合わせないと変な感じになるんじゃないか。
ただ、他に合わせると音が溶け込んでしまうという人もいたりして・・・。
曲にもよるのだろうけど、ちょっと芯をずらしたりいろいろ試すといいのか。
とにかく、「適当」はないだろうなぁ。

ヤマハのサイトには
ハイタムの音程を「ミ」とすると、ロータムは「低いド」に合わせます。以下、さらに低いタムは3度低くフロアタムも3度~4度低くチューニングします。これはあくまでイメージですので、音程を正確にし過ぎると他の楽器と干渉する場合もあります。

音楽ジャンルや環境、用途によって様々ですが、一般的には JAZZはハイピッチ、ROCKはローピッチ、ライブではハイピッチ、レコーディングではローピッチなどといわれていますが、決まりはありません。

ヘッド両面バランスとして、まずは両面を同じ音程にしたあと、好みの音色をつくります。 裏(サイドヘッド)を強めに張るとキレが良くなり、裏を緩めに張るとサスティーンが長くなります。

ヘッドの交換の時は、ヘッドのゆがみや、張りのバランスを取るために対角線で締めていきます。
締める場合は、締めたまま止めるのではなく、必ず締めてからすこし戻します。
ボルトから 5センチほどのポイントを軽く叩いて、倍音の中から 基音を探しながら、同じ音程になるようバランスをとります。

と書いてある。
また、ある人は

フロアタム B
ロータム E♭
ハイタム  G♭
スネア     A
ベースドラム E♭ or B

2017年8月5日土曜日

HiDPI(High-DPI)

今、PC用モニターを買うかどうか迷っていて、調べている。

例えば27インチモニターに4k画面だと、文字やアイコンがすごく小さくなる。

今まではWindows10がHiDPI(High-DPI)未対応だったので、どうしようもなかったのだそうだ。
でも、2017年4月11日にリリースの「Windows 10 Creators Update」 Ver. 1703 からHigh-DPI(高DPI)に対応したそうで、ちょうどいい大きさで表示されるようになったそうだ。
設定はそれぞれのアプリのプロパティで互換性タブをクリック。
その中にある
「高いDPIスケールの動作を上書きします。」
にチェックを入れればいいそうだ。
これでHigh-DPIに対応していないアプリでも大丈夫だそうだ。

自分は4KUHD(3840×2160)どころかWQHD(2560x1440)も持っていないので検証できないのだけど・・・。

本当にCubaseとか、大丈夫になったのか?

以下、以前のメモ。HiDPIの意味をを勘違いして使っているのかな。



例えば27インチモニターに4k画面など、文字やアイコンがすごく小さくなる。

そういう時、Windowsで文字の大きさの調整は
HiDPI(High-DPI)
でやるんだそうだ。

ただ、それに対応したソフトでないと形が崩れてしまうそうだ。
Cubase9などはそれに対応していない。
VOCALOID4 Editor for Cubaseも対応していない。
スタインバーグの掲示板で
Does Cubase 9 support HiDPI (High DPI, Retina)?
I cannot find anything about HiDPI in the official texts and the trailer video.
の質問に、
Wed Dec 07, 2016 5:01 pm
Unfortunately not. We are still working on that but there is no information available when this will be supported.
とスタインバーグの人は言っている。

次策として
Windows 10 Creators Update以降の環境の場合
スケーリングの設定を行うように
と、cubaseのサイトに書いてある。

自分には30インチくらいの2560x1440位ががちょうどいいのか。
調整なしで見るときはドットピッチが0.27mm位が見やすい。


2017年7月30日日曜日

AngularJS RESTful Web Services drupal SPA(Single Page Application) Decoupled  JavaScriptフレームワーク

Augula
drupalの取り込み。(views、コンテンツのデザインを補ったり。)

MS Edgeは正常に機能しないことがあるので、既定のブラウザをchromeに変えておく。

---------------------------------------
Angularとdrupalでデータのやりとりをするためにお互いに理解できる共通の規格が必要。

RESTful Web Services
REST(Representational State Transfer) という規格に従って情報のやりとりをする仕組み。
この仕組みを介してdrupalとAngularの間で情報のやりとりをする。

具体的には、drupalに入っているモジュール
WEB SERVICESグループのモジュールを全部オンにする。
HAL
Serializes entities using Hypertext Application Language.
HTTP Basic Authentication
Provides the HTTP Basic authentication provider
RESTful Web Services
Exposes entities and other resources as RESTful web APISerialization
Provides a service for (de)serializing data to/from formats such as JSON and XML
Install

REST UIーーー後から入れるモジュール
REST UIの設定
admin/config/services/rest/resource/entity%3Anode/edit
Home>>Administration>>Configuration>>Web services>>Rest

GranularityをMEthodにする。

下のGet Delete pachのxmlを除いたすべてをチェック。
GET
Accepted request formats
 hal_json
 json
 xml
Authentication providers
 basic_auth
 cookie
 POST
Accepted request formats
 hal_json
 json
 xml
Authentication providers
 basic_auth
 cookie
 DELETE
Accepted request formats
 hal_json
 json
 xml
Authentication providers
 basic_auth
 cookie
 PATCH
Accepted request formats
 hal_json
 json
 xml
Authentication providers
 basic_auth
 cookie

コンテンツを作る時に
URL PATH SETTINGS
URL alias
を設定しておく。

viewsを作る時にREST EXPORT SETTINGS-Provide a REST exportにチェック。
URLを記入する。
----------------------------------------
ここで設定したdrupalのhal_jsonまたはjsonファイルを取得するには
コンテンツのアドレスの後ろに
?_format=hal_json
?_format=json
をつける。
-----------------------------------------
Angularのインストール

AngularをインストールするのにNode.jsが必要。

Node.js-----サーバーサイドJavaScript
CentOSはEPELリポジトリからインストールできる。
Windowsは、Windows用のインストーラーがある。
インストール後
node -v
npmも使えるようになっているはず
npm -v
で確認。
ただ、angular-cliがangular/cliになって、その時にデフォルトの管理ツールがnpmからYARNというものになった。とか。
Yarn--FaceBook、Googleなどで共同開発している物だそうだ。
モジュールの並列ダウンロードによる高速化、ロックファイルによる依存関係のバージョンの固定など、いろいろと改良されているそうだ。
インストールは
npm install -g yarn
---------------------------------------------

Angularの設置。

自分で0から作ってもいいのだろうけど。
でも、それでは大変なので土台になる型を作ってそこから始める。


Angular QuickStartwを使った立ち上げ方法。
quickstart-master.zipをダウンロードして展開したルートフォルダーにコマンドプロンプトで移動して
npm install
この方法はアプリを立ち上げるたびに、この作業をする。
アプリの起動
npm start




Angular CLIをインストールしてng new アプリ名 で立ち上げる方法。
Angular CLIにはGITが必要らしい。
WindowsにはGit for Windows
Git-2.13.3-64-bit.exe
をインストール。

CentOS
npm install -g angular-cli
(angular-cliがangular/cliになった。のか。)

Windows--コマンドプロンプトで
npm install -g @angular/cli

インストールの確認は
ng --version
-----------------------------------------------------------------
アプリ毎に必要な土台を作る。

アプリの作成は、任意のフォルダーに移動して
ng new アプリ名

アプリの起動
今作った「アプリ名」フォルダに移動
cd アプリ名
して
ng serve
(アプリのビルドとWebサーバーの起動)
または
ng serve --open
(openはブラウザを自動で開くオプション)
すると、
http://localhost:4200/
に最初の画面が表示される。

確認したらctrl+cで抜ける。
抜けた後は当然http://localhost:4200/にはアクセスできなくなる。
-----------------------------------------------------
ライブラリなどのインストール
ここで、
yarn add intl bootstrap ngx-bootstrap --dev
これで、最新安定板が入る。
バージョンを指定するには
yarn add bootstrap@3 --dev
yarn add bootstrap@4 --devとして、バージョン4に安定板がない時には3の安定板か4のアルファ、ベータ版などから選択できるように表示される。
ダウングレードしたいときはそのバージョンを指定する。

npmを使いたい場合は
npm install --save intl@1 bootstrap@3.3.7
saveオプションはjsonファイルに書き込む

----------------------------------------------------
サーバーアップ用ディレクトリdistは
ng build --env=prod
で作られる。
(ここいら辺の事はよくわからない。よく調べてからやった方がいい。データバインドの自動更新の仕方など、オプションによってデベロップ版とプロダクション版で動きが違ってくるみたいだ。)
(ng build --prodだけだとうまくいかない。Environment "" does not exist.とエラーが出る。)

---------------------------------------------------------------
chromeブラウザにデフォルトでデベロッパーツールが入っている。
F12を押すか、Ctrl+Shif+iか、「その他のツール」>「デベロッパーツール」

2017年6月くらいから、
Filter icon missing from Chrome Developer tools console
デベロッパーツールのコンソールからフィルタアイコン、それから、正規表現(Regex)が消えたみたいだ。自分の必要なものだけを取り出して処理の順番を見たいときはどうするの?
普通にスペースで区切って並べて書いてもうまくいかない。

augury
デベロッパーツールのエクステンションとしてchromeにインストールする。
https://augury.angular.io/
ただ、今(2017/08/10)のところAngular4には対応していないみたいだ。

-----------------------------------------
検証しとく

Angular側
HttpModule

Drupal側
jDrupal

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

ディレクトリ構造。など。

src/app/
以下にファイルを作っていく(ファイルができている)。

src/app/app.module.tsなど、
モジュールに関しての情報。
モジュール、コンポーネントをインポート。など。
(.tsはTypeScriptの略)

src/app/app.component.tsなど、
コンポーネントに関しての情報。
taitle = 'タイトル' などが書かれているところ。

src/app/app.component.html
サイトの大枠。

src/app/app.component.css
CSS情報

src/main.ts
モジュールをインポートして起動。


------------------------------------------------
どうして下のようなことを書いたのか忘れた。一応、消さずにとっておく。
srcと同じフォルダ?で、
npm startコマンド

-------------------------------------------------------
Angular推薦IDE(Integrated Development Environment)
WebStorm(個人向け $59 first year)
IntelliJ IDEA(個人向け $149 first year)
Visual Studio Code(無料。プラグインなどを自分で設定する)

------------------------------------------------------
Firebase----いろいろと便利らしい
Ajax--------同一画面での動的なサイト作りができる。(サーバーから一画面毎に画面を送信するのではなく。)
JSON(JavaScript Object Notation)---(小さい、複雑なことも記述できる)データベース
-------------------------------------------------------
ng2-bootstrapはngx-bootstrapに名前が変わっている。
yarn add ngx-bootstrap --dev


2017年7月25日火曜日

PHP OPCODE CACHING opcache CentOS php7.1

CentOS 6.9 php7.1(remiリポジトリ)

drupalインストール後の設定。

phpにopcacheモジュールが組み込まれているかを確認する。
php -m | grep -i opcache

opcacheがインストールされているかどうかの確認。

インストールといっても、設定用のテキストファイルを設置するだけだと思う。
yum list installed | grep opcache

見当たらなかったので、opcacheを探した。

# yum --enablerepo=epel,remi,remi-php71 search opcache
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * remi: rpms.remirepo.net
 * remi-php71: rpms.remirepo.net
 * remi-safe: rpms.remirepo.net
 * updates: ftp.riken.jp
==================================================== N/S Matched: opcache ====================================================
php-opcache.x86_64 : The Zend OPcache
php-pecl-zendopcache.x86_64 : The Zend OPcache
php54-php-pecl-zendopcache.x86_64 : The Zend OPcache
php55-php-opcache.x86_64 : The Zend OPcache
php56-php-opcache.x86_64 : The Zend OPcache
php70-php-opcache.x86_64 : The Zend OPcache
php71-php-opcache.x86_64 : The Zend OPcache

  Name and summary matches only, use "search all" for everything.

opcacheのインストール

yum --enablerepo=epel,remi,remi-php71 install php71-php-opcache
ここで上のように
php71-php-opcache.x86_64
をインストールしてしまったのが間違い。
yum --enablerepo=epel,remi,remi-php71 install php-opcache.x86_64
とすれば普通に今までの
/etc/php.ini
/etc/php.d

/etc/php.d/10-opcache.ini
が入ったのに、上のphp71-php-opcache.x86_64をインストールしてしまったために、
今までの場所にプラスして
/etc/opt/remi/php71/php.ini
/etc/opt/remi/php71/php.d/10-opcache.ini
へphp7.1が2重にインストールされてしまった。(今はアンインストールした。)
その時にインストールされたもの

  Dep-Install audit-libs-python-2.4.5-6.el6.x86_64            @base
    Dep-Install environment-modules-3.2.10-3.el6.x86_64         @base
    Dep-Install libsemanage-python-2.0.43-5.1.el6.x86_64        @base
    Dep-Install php71-php-common-7.1.7-1.el6.remi.x86_64        @remi
    Dep-Install php71-php-json-7.1.7-1.el6.remi.x86_64          @remi
    Install     php71-php-opcache-7.1.7-1.el6.remi.x86_64       @remi
    Dep-Install php71-runtime-1.0-1.el6.remi.x86_64             @remi
    Dep-Install policycoreutils-python-2.0.83-30.1.el6_8.x86_64 @base
    Dep-Install setools-libs-3.3.7-4.el6.x86_64                 @base
    Dep-Install setools-libs-python-3.3.7-4.el6.x86_64          @base
    Dep-Install tcl-1:8.5.7-6.el6.x86_64                        @base

上の赤線のphp71-だけをアンインストールしておいた。
php71-が
/etc/opt/remi/php71/php.d/
ディレクトリを作ってしまう。

で、
最後に
/etc/rc.d/init.d/httpd restart
を忘れずに。
drupalのopcacheエラーを消すにはdrupal側のキャッシュクリアが必要かもしれない。


PECL uploadprogress libraryをインストールする。

画像をアップロードするときに進度具合を表示するライブラリーかな?

PECL uploadprogress libraryを探す。
yum --enablerepo=epel,remi,remi-php71 search PECL-uploadprogress

PECL uploadprogress libraryをインストールする。yum --enablerepo=epel,remi,remi-php71 install php71-php-pecl-uploadprogress.x86_64
上もphp71-だったので、
/etc/opt/remi/php71/php.d/
にもインストールされてしまったので、アンインストールして入れなおした。

yum --enablerepo=epel,remi,remi-php71 install php-pecl-uploadprogress.x86_64


2017年7月22日土曜日

drupal8 theme テーマ カスタム

テーマの置き場所は
/themes/
配布しているものと自分で作ったものとを分けたいときは、
/themes/contrib/
/themes/custom/
に分けるのがなんとなく(開発者の間では)緩い決まりらしい。

テーマを自分で作る時に最低限必要なもの。
/themes/custom/hogepeke/hogepeke.info.yml
中身は
name: hogepeke
type: theme
description: hegepeke thema
core: 8.x
base theme: classy
base themeは何も指定しない場合Stableになるそうだ。
Stableが一番シンプルなものらしい。

その他テーマのバージョン
version: 8.x-1.0
などをいれる。
詳しくは、drupalのサイトで、
Defining a theme with an .info.yml file
Create an .info.yml file
を見ること。


vi centos 全選択

全部を選択
ggVG

gg で先頭に移動
V  大文字Vでビジュアルモード、行選択。
G   大文字Gで最終行。

もう一度Vを押せばビジュアルモードから抜けることができる。

で、sshコンソールの中身をWindowsのテキストに貼り付けられると思ったら、できなかった。
-------------------------------------------------------------
すべてを削除
:%d
----------------------------------------------------------
行の削除
dd

cron 設定 エラー出力

cronの設定で
下のようにしてメールを送らない設定にすると困る時がある。

vi /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
MAILTO=""
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

スクリプトをcronで実行して
/usr/local/bin/pekehoge.sh: line 135: iptables: コマンドが見つかりません
こんなエラーがメールで送られてくることがある。このエラーは、cronログには出てこない。自分で設定をしないとログに出てこない。
(logファイル全部の串刺し検索もしたけど見つからなかった。)
で、
上の/etc/crontabで、メール設定は有効にした状態でエラーをログに出したりエラーメールだけを送る方法。

エラーメールだけがほしい時、cronの設定の最後に
1> /dev/null
とする。標準出力を/dev/nullというゴミ箱に出力する(捨てる)という意味。
"1>"は標準出力、"2>"は標準エラー出力。1の場合は省略できるので
> /dev/null
とも書ける。
自分の設定はとりあえずこれにしておく。cronが見かけ上動いていても、スクリプトの一部のコマンドが機能していないときにメールがほしい。cronが動いているかどうかはcronログをみる。

同じように
 1> /dev/null 2>&1                   標準出力も標準エラー出力も捨てる
 1>> /var/log/pekehoge.log 2>&1    標準出力も標準エラー出力もログファイルに書き出す 
 >> /var/log/pekehoge.log              標準出力はログファイルに書き出し、標準エラー出力はメールする

ログファイルに書き出すときのローテートの設定。
# vi /etc/logrotate.d/pekehoge
/var/log/pekehoge.log
{
    monthly
    rotate 24
    compress
    missingok
}
月ごとにローテートして、24世代保管、gzipで圧縮して、ログファイルが存在しなくてもエラーを出さずに処理を続行









2017年7月18日火曜日

tmpfs RAMディスク CentOS


tmpfs(RAMメモリがデバイスtmpfsとして認識、登録されている。)を使うには。

OS起動時に自動でtmpfsが
/dev/shm
にマウントされる。
一時的にただ単にRAMディスクを使いたければ、これをそのまま使ってもいいのかな?
dev以下を直接使うっていう話もあまり聞かない気がするけど、再起動すると消えるようなものを置くところだし、直接使えばfstabに記述しなくてもいいのだし・・・。
RAMメモリの容量の半分までが動的に割り当てられるそうだ。


tmpfsを/tmpにマウントして使いたいときは、
# vi /etc/fstab
tmpfs /tmp tmpfs defaults 0 0
上のようにサイズを指定しないとメモリの半分が割り当てられる。
容量は動的に動くみたいだ。(ディレクトリに指定すると半分が固定されるとも書いてあるものもあるから、実際の容量を確認しながら使った方がいいと思う。)
容量を固定したければ下のようにする。
tmpfs /tmp tmpfs defaults,size=64m 0 0

なんでこんなことを調べたか。
Brute Force Attackが多くて、ほとんどは無害のアタックなのだけど放っておくべきか、対策を立てるべきか迷っている。
で、とりあえず対策を取って様子を見てみることにした。
ログのチェックをするスクリプトをcronで回してアタックしてくるipをiptablesにdropするように書き出して拒否したいのだけど、下手するとその行為がBrute Force Attack以上の害になってしまうんじゃないかと・・・。
でも、やってみたいという興味もあるし、だから、実験としてやってみる。
で、hddに書き出してもいいのだけど、最初は30秒とか1分おきにcronを回そうと思っているので、負荷による故障を避けるためにラムディスクに書き出してみ用と思った。(cronは2つ同時に回して片方を30秒スリープ掛けることで30秒おきにできるのだそうだ。)
自分の感覚から行くと、2分から3分に一回回しておけばほぼなくなるのではないかと思う。
とかなんとか書きながら、dropするIPアドレスの登録を手動でやっていたらだいぶ攻撃が減った。
1時間に一回くらいになってしまった。
Disconnecting: Too many authentication failures for root
と、一回、sshオリジナル拒否に拒否されるとあきらめる感じ。
こんな感じなら一日に一回cronを回しとけばいいか。
となると、RAMディスクは必要なくなるか?
実際にやってみるとRAMディスクを使うとものすごく処理が速くなったから一日に一回でもRAMディスクを使うことにした。

---------------------------------------------------
drupal8が結構遅いんだよなぁ。
phpなどのページのキャッシュをRAMディスクに置くといいのかな。

置けるものならデータベースをRAMディスクに置くと速くなるだろうけど、突然PCが落ちたときにバックアップがとれないなぁ。



2017年7月13日木曜日

らじるらじるの録音 CentOS

民放、radikoの録音方法は
http://yasutam.blogspot.jp/2014/05/centos-6-radiko.html
に書いた。

ここでrtmpdump, ffmpeg, lame, など
らじるらじる録音に必要なものをインストールをしている。

-----------------------------------------------------------------
らじるらじる(NHKラジオ)の録音

rtmpdumpを使って録音
録音時間の設定 --stop 902(秒)

m4aを再生できない機器でmp3に変換したい場合。
lameなどmp3エンコーダーをインストールして
ffmpeg -i InputFile.flv -ab 128K Output.mp3


NHK FM放送
rec_razirufm.sh

#!/bin/sh

/usr/bin/rtmpdump --rtmp "rtmpe://netradio-fm-flash.nhk.jp" --playpath NetRadio_FM_flash@63343 --app "live" --swfVfy http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf --quiet --live --stop 902 -o /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv
sleep 1m
#-- convert flv to mp4
/usr/bin/ffmpeg -i /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv -acodec copy /tmp/nhkfm_`date +%Y%m%d%H%M%S`.m4a



NHKラジオ第一放送
rec_raziru1.sh

#!/bin/sh

/usr/bin/rtmpdump --rtmp "rtmpe://netradio-r1-flash.nhk.jp" --playpath NetRadio_R1_flash@63346 --app "live" --swfVfy http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf --quiet --live --stop 960 -o /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv
sleep 1m
#-- convert flv to mp4
/usr/bin/ffmpeg -i /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv -acodec copy /tmp/nhk1_`date +%Y%m%d%H%M%S`.m4a



NHK ラジオ第二放送
rec_raziru2.sh

#!/bin/sh

/usr/bin/rtmpdump --rtmp "rtmpe://netradio-r2-flash.nhk.jp" --playpath NetRadio_R2_flash@63342 --app "live" --swfVfy http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf --quiet --live --stop 960 -o /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv
sleep 1m
#-- convert flv to mp4
/usr/bin/ffmpeg -i /tmp/RadiruRec/`date +%Y%m%d`_raziko.flv -acodec copy /tmp/nhk2_`date +%Y%m%d%H%M%S`.m4a


これらのファイルを/usr/local/binに移動。
mv rec_raziru2.sh /usr/local/bin/rec_raziru2.sh

rootでの実行権限をつける
chmod 755 /usr/local/bin/rec_raziru2.sh

cronに登録
radioファイルを作ってそこにrec_raziru2.shを登録する。
vi /etc/cron.d/radio
15 09 * * 3-5 root /usr/local/bin/rec_raziru2.sh
(パスは通っているのだけどユーザーを指定してフルパスで記述しないと動かなかった。なぜだろう?)



2017年7月11日火曜日

コマンドプロンプト PowerShell

PowerShellの名前を忘れるので・・・。メモ。

コマンドプロンプト
PowerShell

PHP Fatal error Uncaught Error:  mysql_系関数が使えなくなった。

mysql5.3.3からMariaDB10.2.6に変えた後からだったか、動かなくなったサイトがあってapacheのlogを確認していたら

[Mon Jul 03 15:03:02 2017] [error] [client 192.168.??.??]
PHP Fatal error:  Uncaught Error: Call to undefined function mysql_connect() in

undefined functionと言われても今まで動いていた関数だし・・・。
検索かけたら、
phpのマニュアルページに
警告
この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。
と書いてある。

そうなんだ。。。
今はPDOを使うのがいいそうだが、書き換えるのは大変そうだ。

で、単純にmysql_ をmysqli_に置き換えてみる。
ただ、置き換えただけでは引数の順番が違ったりしてうまくいかないこともある。

とりあえず動かしてみてしばらく様子を見てみる。

logwatch 設定 logwatch.conf

logwatch送信時に自分で設定したコマンドの結果や自分のスクリプト結果も送れないかと思って調べてみた。

結果:できそうだけど、面倒そうなのでやめた。

logwatchはログ収集専門だろうけど、

hdd空容量表示に
df
を使っているのだろうから他のコマンドも使えるだろう。

参考にしようと思ってdfを扱っている部分を見てみると
/usr/share/logwatch/scripts/services/zz-disk_space.conf
(話は違うがオーバーライドさせたいなら、
/etc/logwatch/conf/services/zz-disk_space.conf
ここに書き込んどいたほうが安全。)
1行で簡単にすむと思ったらそうでもない。
違う方法の方がよさげ。
ログに結果を出してそれを読ませるとか・・・。

ちなみに
/usr/share/logwatch/scripts/services/
に並んでいるサービスのオン・オフ切り替えは、logwatch.confのServiceで設定できる。
---CentOS6のconf----------------------------------------
Service = All
# You can also disable certain services (when specifying all)
Service = "-zz-network"     # Prevents execution of zz-network service, which
                            # prints useful network configuration info.
Service = "-zz-sys"         # Prevents execution of zz-sys service, which
                            # prints useful system configuration info.
Service = "-eximstats"      # Prevents execution of eximstats service, which
                            # is a wrapper for the eximstats program.
-------------------------------------------
Allで全部をオンにしておいて、不必要なものに"-"をつけている。


logwatchの設定ファイル置き場。
優先順位は一番下が一番優先される。
/usr/share/logwatch/default.conf/logwatch.conf
/usr/share/logwatch/dist.conf/logwatch.conf
/etc/logwatch/conf/logwatch.conf
/etc/logwatch/conf/override.conf


実行するにはそのまま
logwatch



logwatch本体
/usr/share/logwatch/scripts/logwatch.pl

Drupal Console on Windows 10

Drupal Consoleは同じ環境のインストールをいくつも作れたりと便利そう。

今のところ自分の環境でうまく動いていない。
drupal initなどは動く。site:newなどが動かない。
その後、ランチャーをアップデートしたらdrupal initがドキュメントルートで動かなくなった。
drupal consoleのフォーラムを見ていると、同じようなことで困っている人がいるみたいだ。ただ、その人たちや自分が正しいことをしているのかどうかはわからない。
いろいろなもののバージョンの関係もあるだろうし・・・。
自分はdrushがあれば十分なので少しの間Drupal Consoleは保留にする。


ここから下は、Windowsのコマンドプロンプト上でlinuxのコマンドを使える状態(Cygwin+git  自分の場合はたまたまこの環境。gitだけでも大丈夫だと思う。)で、そこにのせてphpのComposerコマンド使える状態になってからのインストール方法。

DrupalConsoleを動かすのに2つインストールする必要がある。
1. The DrupalConsole ランチャー
2. DrupalConsole それ自身

-------------その1---------------
Drupal Console ランチャーのインストール。

D:\drupalconsoleなどで、
php -r "readfile('https://drupalconsole.com/installer');" > drupal.phar

Linux系ではでもいい。
curl https://drupalconsole.com/installer -L -o drupal.phar
mv drupal.phar /usr/local/bin/drupal
chmod +x /usr/local/bin/drupal

drupal.pharがD:\drupalconsoleにできているのを確認して同じフォルダにdrupal.batファイルを作る。
drupal.batファイルに
@php "%~dp0drupal.phar" %*を貼り付ける。

環境変数pathにD:\druaplconsoleを追加してWindowsを再起動させる。

DrupalConsole Launcherのアップデート
drupal self-update

ランチャーを使ってDrupal Console を動かすには。
drupal


-------------その2----------------
Composerを使ってDrupal Consoleをインストール。

まずDrupalのドキュメントルートに移動して、
cd /path/to/drupal8.dev

下のコマンドを実行する。
composer require drupal/console:~1.0 --prefer-dist --optimize-autoloader

DrupalComposer projectのテンプレートをダウンロードする。
(リポジトリdrupal-composer/drupal-project:8.x-devをダウンロードする。
これをダウンロードして、インストール、アップデートをすることでConsoleのコマンドが使えるようになる。)

composer create-project drupal-composer/drupal-project:8.x-dev drupal8.dev --prefer-dist --no-progress --no-interaction

DrupalConsoleのアップデートをする。

composer update drupal/console --with-dependencies

---------その3----------


drupal site:new
drupal init
drupal chain


下でうまくいったとかうまくいかなかったとか書いてあるけど、最終的にはいろいろとやりすぎてどれがうまくいってどれがうまくいかなかったのかわからない状態。
まっさらな状態からやり直さないと検証できなくなってしまった。

drupal consoleを始めるには
composerのコマンドで
composer require drupal/console:~1.0
として、ダウンロード、インストール。
(結構時間がかかる。)

drupal init
として、
ファイル群をコピーする。


drushを入れるために作った環境がWindows上にあれば、

composer global require drupal/console:@stable

だけでインストールできる。
と思ったら、うまくいかない。
drupal.batもどこにも見つからない。(後述:batは自分で作るんじゃないのか?)

で、
Drupal Community
Install Drupal Console on window
を見て、その通りにやったらうまくいった(最初からそこを見るべきだったなぁ)。

Install Drupal Console on window

Posted by huythuan on 21 Apr 2016 at 18:52 UTC
I installed drupalconsole on Window 7 as follow:
1. Install XAMPP, or update XAMPP, make sure that PHP version 5.6 or above
2. add path: C:\xampp\php to window path variable (Right click on Computer, > Advanced system settings > Environment Variables > edit path)
type php --version, make sure the result version is 5.6 or above
3. create folder: c:\drupalconsole, cd to this folder on the command , and run this command:
php -r "readfile('https://drupalconsole.com/installer');" > drupal.phar

Make sure that we have file drupal.phar under folder c:\drupalconsole

4. Create drupal.bat file under this folder: c:\drupalconsole, and paste the following code to this file:

@php "%~dp0drupal.phar" %*

5. add path c:\drupalconsole to window variable path (Right click on Computer, > Advanced system settings > Environment Variables > edit path)

6. restart the window, and on the command line type: drupal list, or drupal --version

上の黄土色のところで、環境変数pathにD:\druaplconsoleを追加してしまったのがうまくいかない原因かもなぁ。

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

うまく動かない。

自分のやりたいことは、drupalのインストールをデータベース、モジュール、テーマ、など、設定をしておけばその通りに一気に作ること。
でも、今のところdrupal init など、一部のコマンドしか動かない。
自分のやり方が間違っているのかもしれない。
例えば、
drupalドキュメントルートでdrupalとすると
Drupal Console (1.0.0-rc23)
===========================

Copy configuration files.
[33m  drupal init [39m

Download, install and serve Drupal 8
[33m  drupal quick:start [39m

Create a new Drupal project
[33m  drupal site:new [39m

Install a Drupal project
[33m  drupal site:install [39m

Lists all available commands
[33m  drupal list [39m

Update project to the latest version.
[33m   drupal self-update [39m

と、でるということはsite:newは使えるってことだよなぁ。
でも、オプションも何もつけずに
drupal site:new
としても
 [ERROR] Command "site:new", is not a valid command name.

drupalコマンドのhelpだと、
drupal help site:new

  [Symfony\Component\Console\Exception\CommandNotFoundException]
  The command "site:new" does not exist.



bash cronを止めるスクリプト

自サーバーで常時動いているapacheのプロセスは8つ。

それプラスその時々のapacheのプロセスが立ち上がったり終了したりしている。

で、最近あるプログラムが原因でうまく終了しないプロセスがたまにできてしまう。
それはkillしても消えない。
そうなるとOS自体の再起動になるのだが、一旦つまずいたのを気づかずに放っておくと、cronで起動しているものだからプロセスがどんどん増えていってしまう。

根本的な解決ができるまで、プロセスが増えてしまった時にメールで知らせるのと同時にそのcronを止めるスクリプト。

------------最終型  test.sh-----------------------
#!/bin/bash

#apacheのプロセス数
apanum=`grep -c 'apache' <(ps aux)`

#apacheのプロセス表示
apaer=`ps -u apache -f`

if [ $apanum -gt 100 ]; then

#echo 'more than 100'
mv /etc/cron.d/hoge /etc/con.d/.hoge
ps -u apache -f | mail -s ${apanum} Apache Process hoge@hoge.com

else
#echo 'less than or equal to 100'
#必要ならチェックしたことをログに残しておく。
:
fi

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

cronを止める仕組みは、
/etc/cron.d/hoge
というcronファイルhogeを.hogeと隠しファイルにすると動作が止まるので、その事を利用する。

で、次。
テストとしてapacehのプロセス数の確認で下のようにスクリプトを書いたら動かない
-----------------------
#!/bin/bash

if [ ps aux | grep -c 'apache' > 100 ]; then
echo 'more than 100'
else
echo 'less than 100'
fi

-------------------------
上の赤いところがダメなところだった。
で、こう直した。
------------------------
apanum=`grep -c 'apache' <(ps aux)`
if [ $apanum -gt 100 ]; then
echo 'more than 100'
else
echo 'less than 100'
fi
---------------------------

まず最初にシェルスクリプトでは、'<'とか、'>'を数値比較には使わないらしい。
A>B が A -gt B
A<B が A -lt B
となるそうだ。知らなかった。

あとは、パイプ(とリダクション)はパイプによって渡された後のコマンドが別のプロセスとして動くのでパイプ後のコマンドの結果をスクリプトで使うことはできないのだそうだ。(mailコマンドはパイプでつないでも動いた。)

上スクリプトのエラーとして
./hoge.sh: line 11: [: missing `]'
grep: ]: No such file or directory
が出た。
パイプが認識されていないならこういうエラーになるよなぁ。

この場合、プロセス置換(Process substitution)を使うか、一旦どこか一時ファイルに書き出してそれを読み込むしかないそうだ。
(プロセス置換も一時ファイルに書き出すことを裏(子プロセス)でやっているだけだから、やっていることは自分で書き出すのと一緒だそうだ。(実際、自分のCentOS6では/dev/fd/の下に一時ファイルが作られている。)

プロセス置換の書き方は、   
<(コマンドリスト)   コマンドの結果をファイルに加工されたもの。
>(コマンドリスト)   出力先をコマンドに渡す。

自分の場合、
<(ps aux)
としてps auxの結果をファイルとして出している。
)
(プロセス置換はbashでは動くがshでは動かないそうだ。)

*ここで「/bin/sh」と「/bin/bash」の違いの説明。
「/bin/sh」は「/bin/bash」へのシンボリックリンク。
でも「sh という名前で bash を起動すると、 bash は古くからある sh の起動動作をできるだけ真似しようとします。」ということだそうだ。




2017年7月9日日曜日

ps  プロセス表示 コマンド

psコマンド

例えばオプションで"-f"と"f"とで全然違うオプションになるから注意。
それと、マイナスオプションとマイナス無しオプションを同時に使うとうまく働かないようだ。

例えば、
ps -u apache x
ps x -u apache
とやってもユーザー名は表示されない。マイナス記号無しが優先される?

詳しくは
man ps

root権限で
単に
psとしてもrootで動かしているプロセスも表示されない。

一番よく使うと思われるオプションは
ps aux
これで、すべてのプロセスが表示されるはず。


apacheユーザープロセス表示は
ps aux | grep 'apache'
表示された内容の説明を表示させたければ、
ps aux | egrep 'PID|apache'
PIDのところは
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
など、適当に。

apacheで実行しているプロセス数は
ps aux | grep -c 'apache'

メールで送るには
ps aux | grep -c 'apache'  | mail -s 'apache process number' hoge@hogel.com
-----------------------------------------------------------
マイナス系オプションでは

すべてのプロセスを表示させるには
-e
(-Aと同じ)

apacheユーザーが実行しているプロセスを表示させるには-u
ps -u apache
とする。

何によってそのプロセスが実行されているのかを知るのには
(プロセスに関してできる限り多くの情報を得るには)
-f をつける。
(オプション "f" ツリー形式で表示するとは別?よくわからない。)
(-fより完ぺきな-Fもあるそうだ。)
ps -f

例えば
ps -u apache -f
とすれば、今、apacheユーザーが実行しているプロセス情報を表示。
これは、
ps aux | egrep 'PID|apache'
とほぼ同じ内容。

apacheで実行しているプロセス数
ps -ef | grep -c "apache"ps -u apache -f | grep -c "apache"

apacheで実行しているプロセス数をメールで送る。
ps -ef | grep -c "apache" | mail -s 'apache process number' hoge@hogel.com


ps auxとした時の主なプロセスステータスの意味。
%MEM  メモリ使用率、プロセスが使用している物理メモリ量。(%MEM=RSS+VSZ)
RSS  実質メモリ使用量(仮想メモリを除いた分。)
VSZ  仮想メモリサイズ。

STAT  プロセスの状態
プロセスの状態の説明
STAT列の1文字目はプロセスの状態。
R  実行可能状態なプロセス(実際に実行していないCPU割り当て待ちのプロセスも含む)
S  割り込み可能な待ち状態。主に復帰時間が予想できるもの。sleepやユーザーの入力待ちなど
D  ディスクIO待ちの状態
Z  ゾンビプロセス状態(親プロセスに待たれずに死んでしまった子プロセス)
2文字目以降は以下を表す状態のようだそうだ。

+  フォアグラウンドのプロセスグループ
s  セッションリーダー。httpdのプロセスを見るとrootユーザーで実行されているプロセスがセッションリーダーとなっているのでが分かる
>  優先度が高いプロセス
N  優先度が低いプロセス
l  マルチスレッドのプロセス
スレッド情報を確認し


START:コマンドが起動した時刻




2017年7月6日木曜日

デスクトップ 付箋 Sticky Notes

Sticky Notesは再起動するたびに立ち上げないと出てこない。

自分はそれでは困るのでスタートアップフォルダに登録してOS起動時に自動で立ち上がるようにしておく。

1、ファイル名を指定して実行に shell:startup 。
2、スタートメニューの「Stiky Notes」をshell:startupによって表示されたスタートアップフォルダにドラッグ。

2017年7月5日水曜日

linux CentOS 複数フォルダのファイル群からテキスト文字を検索する。串刺し検索 WindowsではDevasを使っている。

複数ディレクトリのファイル群からテキスト文字を検索するのにWindowsではDevasを使っている。秀丸でgrepを使えばフォルダの串刺し検索ができるのを後から知った。

Linux系では、コマンドで

find ./ -type f -print | xargs grep 検索文字

find . -name "*.php" | xargs grep 検索文字

-type f ディレクトリではなくファイルを探す。(-type d ファイルではなくディレクトリ)
-printはなくてもいい。
xargs 受け取ったファイルの一覧を次のコマンドへ渡す。
grep 受け取ったファイルの中から指定された文字列のある行を抜き出す。

---------------------------------------------------------------------------
xargsの使い方。
(便利そうな使い方を集めた。)

hogedirディレクトリ内のファイルを、/tmpディレクトリ以下に拡張子「.bup」を付けてコピーする。
$ ls hogedir | xargs -I{} cp hogedir/{} /tmp/{}.bup


180日以上更新されていないファイルを削除する
 find . -mtime +180 -type f | xargs rm

ディレクトリに次のファイルが存在する場合。
Filea
Fileb
Filec
FILE と書いた部分が、実際のファイル名に変換される。
$ ls | xargs -I FILE echo "FILE hogehoge"

File_A hogehoge
File_B hogehoge
File_C hogehoge

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