twentynineteenの子テーマを作成
ワードプレスではじめて子テーマというのを作ってみた。使った親テーマはデフォルトテーマのtwentynineteen。以下を参考にした(簡潔にまとまっててよかった)。
【WordPress】テーマTwenty Nineteen の子テーマを作る方法 – TN2019
1. テーマのディレクトリ(themes)の下に適当な名前のディレクトリを作る
2. 作成したディレクトリ以下にfunctions.phpとstyle.cssという名前でファイルを作る
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がよいような気がする。
管理画面のテーマの外観/テーマで、さっき作ったテーマがあるので、有効化すると作った子テーマが使える。
「ん」の発音
日本人が「ん」を発音するとき、後ろに来る音により3通りの発音になる。
- ちんぽ → /m/ (p,b,mの前、唇が閉じる/m/の音)
- ちんちん→/n/ (t, d, n, r, dzの前。唇は閉じない/n/の音)
- ちんこ→/ŋ/ (k,gの前、唇は閉じず鼻から息が抜ける/ŋ/の音)
参考
この使い分けは日本語ネイティブは意識せず自動的に行っている。というか、違う言い方をすると、とても言いにくい。"ちんこ"の「ん」を/m/で発音すると"ちむこ"になっちゃうし。
英語ネイティブが theを母音の前はジ、子音の前はザって発音するのも自動的らしいが、the appleがザアッポーよりジアッポーの方が言いやすいのかイマイチピンとは来ない
データベース選択不可
テスト用に2つ目のワードプレスをインストールをしていたんだが、初期化画面でデータベース接続のエラーになる。
データベース選択不可データベースサーバーに接続できました (ユーザー名とパスワードには問題ありません) が、データベース wordpress2 を選択できませんでした。* 本当に存在していますか ?* ユーザー root にはデータベース wordpress2 を使用できる権限がありますか ?* 一部のシステムでは username_wordpress2 のようにデータベースの接頭辞にユーザー名がつけられています。これが問題になっている可能性はありませんか ?
しばらく悩んだのだが、自分が作ったデータベース名がwordpressdb2で、入力したのがwordpress2で、名前が違うだけという凡エラーだった・・・書いてるままのエラーだったね・・・
怪我の功名で、firewalldのmariadbのポート開きっぱなしだというのを発見できたのでよしとしよう・・・(テスト時だけオープンにしとくつもりが--permanentつけてremoveしてなかったので再起動時に開いたままになってた)
アクセスの多いURL(ワードプレス)
昨日、AWStatsを入れてみたのだが、アクセスの多いURLトップ10は以下のようになっていた。
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)によって使用される証明書は信頼できない証明書に設定され、接続は安全でありません。
マイクロアドのネット広告のようだ。
よくある証明書の期限切れというわけではないみたいだが、何でやろ?
すぐ直るだろと思っていたら、何日も警告が出続けてうざい。
社会的地位もあるサイバーエージェントやマイクロアドさんが悪さするとは思えないので、信頼することにして、検査せずにアクセス許可する設定にした。
ESETの設定→詳細設定→Webとメール→SSL/TLSの既存の証明書のリストの編集で...
と思ったが設定しても警告出続ける。ESETの設定わからん、あまりいじりたくない。もう数日放置する。誰かが解決してくれるだろう期待。
参考
ESET、WEBサイト証明書が取り消されました。閲覧ありがとうござ... - Yahoo!知恵袋
ESETの"Website certificate is revoked"エラーは「ウェブサイト証明書の取り消し」!
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
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
アクセスできたぜ!
全公開だと何なので後でDigest認証かけといた。
定期実行
以下が作られており、デフォルト1時間おきに、統計ファイルが更新されるようになっている
/etc/cron.hourly/awstat
古いログも読ませる
何か順番?とかもあるようなので、一度以下の場所にある統計データを削除
/var/lib/awstats/xxx.txt
logresolvemerge.pl というツールを使って、apacheのaccess_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=参考]→リンク文字指定
脚注
((~))