マイ忘備録

フィリピン関連のメモ、ワードプレス関連のメモなど

twentynineteenの子テーマを作成

ワードプレスではじめて子テーマというのを作ってみた。使った親テーマはデフォルトテーマのtwentynineteen。以下を参考にした(簡潔にまとまっててよかった)。
【WordPress】テーマTwenty Nineteen の子テーマを作る方法 – TN2019
1. テーマのディレクトリ(themes)の下に適当な名前のディレクトリを作る
2. 作成したディレクトリ以下にfunctions.phpとstyle.cssという名前でファイルを作る
f:id:tagayshin:20190517191400p:plain

3. それぞれ以下のように編集して保存する
functions.php

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}

何を書いているのかよくわからないが、まぁとりあえずコピペ。<?の閉じタグみたいなのもいらないっぽい。

style.css

/*
Template:twentynineteen
Theme Name:test theme (twentynineteen child)
*/

Templateに親テーマのディレクトリの名前を記述する。

これが最小構成のようだ。編集したファイルの保存の改行コードはLF(Linuxサーバの場合)、日本語を使う場合は文字コードUTF-8がよいような気がする。
管理画面のテーマの外観/テーマで、さっき作ったテーマがあるので、有効化すると作った子テーマが使える。
f:id:tagayshin:20190517192151p:plain

「ん」の発音

日本人が「ん」を発音するとき、後ろに来る音により3通りの発音になる。

  • ぽ → /m/   (p,b,mの前、唇が閉じる/m/の音)
  • ちん→/n/  (t, d, n, r, dzの前。唇は閉じない/n/の音)
  • こ→/ŋ/  (k,gの前、唇は閉じず鼻から息が抜ける/ŋ/の音)

参考

東外大言語モジュール|日本語|発音|実践編

同じ「ん」でも、実は違うんです。

#1509. 日本語における語中軟口蓋鼻音の脱音素化

 

この使い分けは日本語ネイティブは意識せず自動的に行っている。というか、違う言い方をすると、とても言いにくい。"ちんこ"の「ん」を/m/で発音すると"ちむこ"になっちゃうし。

 

英語ネイティブが theを母音の前はジ、子音の前はザって発音するのも自動的らしいが、the appleがザアッポーよりジアッポーの方が言いやすいのかイマイチピンとは来ない

簡単シンプル! "the" の発音が「ザ」か「ジ」かの判別方法と使い分け方 | DMM英会話ブログ

データベース選択不可

テスト用に2つ目のワードプレスをインストールをしていたんだが、初期化画面でデータベース接続のエラーになる。

f:id:tagayshin:20190517172322p:plain

データベース選択不可
データベースサーバーに接続できました (ユーザー名とパスワードには問題ありません) が、データベース wordpress2 を選択できませんでした。
* 本当に存在していますか ?
* ユーザー root にはデータベース wordpress2 を使用できる権限がありますか ?
* 一部のシステムでは username_wordpress2 のようにデータベースの接頭辞にユーザー名がつけられています。これが問題になっている可能性はありませんか ?
データベースのセットアップ方法が分からない場合はホスティングサービスに連絡してください。それでもダメならWordPress サポートフォーラムでヘルプを見つけられるかもしれません。

しばらく悩んだのだが、自分が作ったデータベース名がwordpressdb2で、入力したのがwordpress2で、名前が違うだけという凡エラーだった・・・書いてるままのエラーだったね・・・

怪我の功名で、firewalldのmariadbのポート開きっぱなしだというのを発見できたのでよしとしよう・・・(テスト時だけオープンにしとくつもりが--permanentつけてremoveしてなかったので再起動時に開いたままになってた)

アクセスの多いURL(ワードプレス)

昨日、AWStatsを入れてみたのだが、アクセスの多いURLトップ10は以下のようになっていた。
f:id:tagayshin:20190516142219p:plain

1. /wp/wp-admin/admin-ajax.php
2. /wp/wp-login.php
3. /wp/xmlrpc.php
4. /wp/wp-content/themes/cocoon-master/lib/analytics/access.php
5. /wp/wp-content/themes/cocoon-master/webfonts/icomoon/fonts/icomoon.ttf
...

さすがに今月2000回もログインしてないので、どうも知らない人が俺のワードプレスの管理者画面に勝手に入ろうとしているようだ(のかな?)
ログイン画面のURLを変更すると効果てきめんのようだが、デフォルトでその機能はない(プラグインを追加するか自分でコードを記述する必要がある)らしい。とりあえず、管理者ログインのパスワードを無茶長くしときました。
参考 WordPress管理画面のログインパスワードの変更 | WordPressの使い方

とりあえずやったことはそれだけ。
1のadmin-ajax.phpは必要なファイルでアクセス制限をかけてはいけないものらしい。3のxmlrpc.phpは制限かけてもいいが、一応使うらしいので保留。
参考
https://nelog.jp/attacked-php-files
ブルートフォース攻撃 - WordPress Codex 日本語版
WordPressにおけるxmlrpcへの脆弱性対応のお願い | スマートコネクト マネージドサーバ

"universe.send.microad.jp" Webサイト証明書が取り消されました

 数日前から、はてなブログにアクセスするたびに、ESETの警告がバンバン出る。

Webサイト証明書が取り消されました

このサーバ(universe.send.microad.jp)によって使用される証明書は信頼できない証明書に設定され、接続は安全でありません。

 

f:id:tagayshin:20190516125427p:plain

マイクロアドのネット広告のようだ。

よくある証明書の期限切れというわけではないみたいだが、何でやろ?

f:id:tagayshin:20190516132150p:plain

すぐ直るだろと思っていたら、何日も警告が出続けてうざい。

社会的地位もあるサイバーエージェントマイクロアドさんが悪さするとは思えないので、信頼することにして、検査せずにアクセス許可する設定にした。

 ESETの設定→詳細設定→Webとメール→SSL/TLSの既存の証明書のリストの編集で...

と思ったが設定しても警告出続ける。ESETの設定わからん、あまりいじりたくない。もう数日放置する。誰かが解決してくれるだろう期待。

 

 参考

ESET、WEBサイト証明書が取り消されました。閲覧ありがとうござ... - Yahoo!知恵袋

ESETの"Website certificate is revoked"エラーは「ウェブサイト証明書の取り消し」!

ESETさんが接続をブロックする

 

AWStatsを使ってみた

ApacheなどのWebサーバのログ解析ツールではこんなのが有名らしい。

レンタルサーバーのログ解析ツール(アクセス解析ツール)比較

Analog
Webalizer
AWStats(Advanced Web Statistics)
Access Analyzer
Piwik


何となくAWStatsというのを使ってみた。
環境 CentOS7.6 + Apache2.4.6

公式サイト
AWStats - Open Source Log File Analyzer for advanced statistics (GNU GPL)

インストール、初期設定

主にここを参考にインストール、設定をすすめた
Setup AWStats (Apache Log Analyzer) on CentOS, RHEL & Fedora

[root@xxx ~]# yum install awstats

設定ファイル /etc/awstats/xxx.conf

/etc/awstats 以下にawstatsの設定ファイルがあるので、コピーして自分のファイルを1つ作る。
ドメイン名がhogehoge.comならawstats.hogehoge.com.conf
awstats.model.conf以外のconfファイルは、awstats_updateall.pl などで呼び出されてしまうので使わないconfファイルは消すか、名前を.conf以外にしておく。

編集した内容

LogFile="/var/log/httpd/access_log"
SiteDomain="hogehoge.com"
DNSLookup=1
LoadPlugin="tooltips"

ログ統計の作成 awstats.pl

awstats.pl に上で編集したconfファイルを指定して実行すると、awstatsの統計ファイルが作成される。一回目はログ全部読むのでけっこう時間がかかる。2回目以降は早い。

[root@xxx ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=hogehoge.com -update

統計ファイルは以下のディレクトリに作成される
/var/lib/awstats

Apache側のアクセス制限等設定

以下のようなURLでブラウザからawstatにアクセスできる
https://hogehoge.com/awstats/awstats.pl?config=hogehoge.com

デフォルトのままだとブラウザからのアクセスは拒否される。こんなメッセージが表示される↓

Forbidden

You don't have permission to access /awstats/awstats.pl on this server.

awstat.confを編集して、とりあえず誰でもアクセスできるようにする。
以下のファイルを編集。以下を追加。Allow from allはApache2.2系の書き方でダメみたい。AWStatsの記事をググってると古い記事が多く、アクセスできなくてしばらくはまった。
/etc/httpd/conf.d/awstat.conf

<Directory "/usr/share/awstats/wwwroot">
    Options None
    AllowOverride None
    Require all granted
   ...

Access Control - Apache HTTP Server Version 2.4


apacheを再起動すると、

[root@xxx ~]# systemctl restart httpd

アクセスできたぜ!
f:id:tagayshin:20190515203533p:plain

全公開だと何なので後でDigest認証かけといた。

定期実行

以下が作られており、デフォルト1時間おきに、統計ファイルが更新されるようになっている
/etc/cron.hourly/awstat

古いログも読ませる

何か順番?とかもあるようなので、一度以下の場所にある統計データを削除
/var/lib/awstats/xxx.txt

logresolvemerge.pl というツールを使って、apacheaccess_logからはじまる名前のファイルを結合。その後、結合したファイルを指定してawstats.plを実行。処理にけっこう時間がかかる。

/usr/share/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* > /root/merged_access_log
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config="hogehoge.com" -LogFile="/root/merged_access_log"

AWStats Documentation - Other tools

awstats.pl の引数の-LogFileでlogresolvemerge.plを渡す方法↓もあるみたいだけど、これは何かうまく動かなかったので、上のように一度logresolvemerge.plでログを結合してから、次にawstats.pl を実行した。
/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config="hogehoge.com" -LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/httpd/access_log* |"

ログローテーション

apacheアクセスログがローテーションすると、ログの取りこぼしがおこる。ローテーションをトリガーに、awstats.plを起動するようにしておく
以下のファイルに、prerotateでawstats.plを呼び出すように追記。(ちゃんと動いてるのか自信がない)
/etc/logrotate.d/http

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    prerotate
        /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=hogehoge.com -update
    endscript
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

Apacheのアクセス制限で少しはまって、古いログを読み込ませるのでも少しはまって、何だかんだ半日ぐらいかかった。
何か読み返してみても分かりにくいが、まぁいいか、忘備録ということで。




[PR]アンヘレスで愛人

ImageMagickでEXIFをチェック、削除する

参考 bcmathとimagickのインストール(CentOS7) - マイ忘備録

exif存在チェック
[root@xxx]# identify -verbose img3.jpg | grep exif

exifを削除して別のファイルを作成
[root@xxx]# convert -strip img1.jpg img3.jpg

exifを削除して上書き
[root@xxx]# mogrify -strip img3.jpg

指定したディレクトリ以下のjpgファイルでexifデータがあるものを一覧する

シェルスクリプト初心者の俺がググりながら作ったスクリプト

#!/bin/sh

target_dir=`pwd`
#target_dir="/var/www/html/wp/wp-content/uploads"

find ${target_dir} -iname "*.jpg" | while read fn
do
    identify -verbose ${fn} | grep -q exif
    if [ $? = 0 ]; then
      echo ${fn}
    fi
done
  • " /bin/sh^M: bad interpreter: No such file or directory"エラーのときはshファイルの行末コードチェック *1
  • カレントディレクトリを変数に代入するには `pwd`
  • findの-inameオプションは大文字小文字区別しない
  • パイプの後の | while read xxx みたいな感じでループがかける
  • grepコマンドのqオプションは標準出力しない。*2
  • grepコマンドの戻り値はマッチした行があれば0なければ1 *3
  • 直前のコマンドの結果は変数$?に入っている

ifとかループとかの書き方もググらないと書けないし、シェルスクリプトの基本みたいなの教科書みたいなので一回一通り勉強した方がいい気がした

はてな記法メモ

URLのリンク文字を指定

[https://hoge.com/hogehoge:title]→タイトル
[https://hoge.com/hogehoge:title=参考]→リンク文字指定

脚注

((~))