色々と使えるコマンド_troubleShootingの取っ掛かりに使える系

アクセスログからipを抽出してランキング化するコマンド

Plesk環境でエラーログからipを抽出して多い順にソートしたかったので組んだ1行コマンドです。
自分用メモ兼ご指摘マサカリ大歓迎です。

cat /var/www/vhosts/Domain_Daoyo/logs/error_log |grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort |uniq -c|sort -30

同時接続数を表示するコマンド

watch -d -n 1 "netstat -alpn | grep -E ':(80|443) ' | awk {'print $5'} | sed -e 's/\:[^.]*$//' | wc -l"

意訳:
watch -d -n 1 “COMMAND”
-n … 指定した秒数ごとに COMMAND を実行します。
-d … 実行結果の差分をハイライト表示します。

netstat -alpn すべてのネットワーク状態をポート付き&名前解決なしで表示します。
grep と awkで5番目のカラムを出力 →Sed でポート番号削除 最後にカウント

参考:https://qiita.com/hidekuro/items/e75c42390eda6a63b445

 

各ドメインのエラーログのファイルをを更新順で表示。リアルタイムで全部更新されてたら顔真っ青になるやつ。

ls -lth /var/www/vhosts/*/logs/error_log

サイズ順の際は
ls -lhS でおk

ディレクトリを多い順に表示する
# du -m | sort -rn | head -100

117827.
113328./var
109083./var/www/vhosts
109083./var/www
105184./var/www/vhosts/jyukusiri.net
100166./var/www/vhosts/domain_name/httpdocs
100139./var/www/vhosts/domain_name/httpdocs/wp-content
 95853./var/www/vhosts/domain_name/httpdocs/wp-content/cache
 95259./var/www/vhosts/domain_name/httpdocs/wp-content/cache/log/000000

 

dbcache.logが100G近くありました。
これって消していいのかしら。。。
追伸_dbcache.logはw3totalcacheのdbのデバッグログでした。

2018/06/18
iowaitが多すぎて現在調査中
85 0.0 0.0 0 0 ? S 2017 104:23 [kblockd/3]
1116 0.0 0.0 0 0 ? D 2017 394:28 [md2_raid1]
1377 0.0 0.0 0 0 ? S 2017 368:16 [jbd2/md2-8]
1382 0.0 0.0 0 0 ? S 2017 13:25 [flush-9:1]

blockでioしまくりってビットコイン系のクラックが怖いZO
緊急課題ですな

特定のファイルがエラーを履いている時にそのファイルのパスを特定する

find /var/www/vhosts/ -name hoge.php -type f 2>/dev/null

pleskが入った状態で納品されたサーバーのMysqlにログイン
mysql -u admin -p$( cat /etc/psa/.psa.shadow )
(あんまりセキュリティ的によくなさそうだけども、、、)

CloudFlareのPageruleの書き方と意図

*マークは別に強調したいわけではなく正規表現の意味なのでそのまま使うこと!

*domain_name/wp-admin/*
Cache Level: Bypass
管理画面はキャッシュされては困ります。。。※1

*domain_name/*&preview=true*
Cache Level: Bypass
手書きでビジュアルエディタで書いてる人向け
CSVやxmlrpc経由で投稿してる人には不要な項目

*domain_name/wp-content/uploads/*
Cache Level: Cache Everything
画像などの素材は全てキャッシュ

※1
wordpressにCloudFlareのプラグインがあるので
それを入れたほうが良さそう。
記事更新時にキャッシュをPurgeしてくれる。
あとWordPress用に最適化してくれるならwp-adminのBypass設定がいらないかも。

そうすると無料プランの『3 Page Rules』の枠が開くので
*domain_name/wp-content/themes/*(.js|.css)
Cache Level: Cache Everything
とかやってもいいかもしれない。
!!未検証なので注意!!

PleskのI/Oを減らすためにWeb統計をオフにする

【環境】

OS CentOS 6.2 (Final)
Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz (8 core(s))
バージョン Plesk Onyx v17.5.3_build1705170317.16 os_CentOS 6
※GMO専用サーバープランです

【症状】

I/Oがだいぶあってロードアベレージが7〜9程度
表示まで余裕で3秒以上かかってますた。

lsofコマンドでケツの方をざっと見てみる。
正直GoogleAnalyticsが高精度なのでPleskの統計は要らない、、、

該当ドメインのホスティング設定へ進み
ウェブ統計 (ウェブ統計へのアクセスを FTP ユーザ名とパスワードで保護する )
の部分のプルダウンよりオフにする設定適用。

ロードアベレージが3以下になりました。

※夕方以降のピークタイムに要観察
※トラフィックは把握しておきたいのでこれも要観察

自分用備忘録_数日後に更新されているか確認

【100G近く】dbcache.logがクッソでかくてコレ消していいのか調査した【容量パンッパン】

サーバーの容量を見てたらすんごく圧迫してるファイルを発見
/var/www/vhosts/domain_name/httpdocs/wp-content/cache/log/000000/dbcache.log

容量100G近くあってもうコレはいかんと。

SSHで繋いで該当ログファイルをtailしてみるとsqlとのやり取りがロギングされており
消しても良さそうだけどほんとに消していいのかヒヤヒヤ。

ググってもマルウェア云々とか出てきてもう顔面真っ青なわけですよ。

https://wordpress.org/support/topic/does-the-dbcache-log-file-can-be-infected-by-malware/

目を皿にしてW3 Total Cacheの設定項目を舐め回すこと3周

見つけました。

Performance → General Setting → Debug mode

コレのDatabase Cacheの欄のチェックを外して
ファイルを削除で解決っ!

ワードプレスの記事やコメントを一つ一つ消していくiMacros

ワードプレスから大量の記事やコメントを消すときの
一番手っ取り早い方法はSQLをいじる方法ですが、
諸事情でリスキーな案件だとそれは出来ない

かといって数百件表示しての一括削除だとタイムアウトしてしまう
そんな時のiMacros。

しかし最近有料化&無料プランは縛りが色々
(50行制限やファイルとして保存できず、current.iimしか使えない)
ときたのでここにメモ。
これをループで回していけばおk

VERSION BUILD=1001 RECORDER=CR
URL GOTO=【消したいURL】
TAG POS=3 TYPE=A ATTR=TXT:完全に削除
TAG POS=4 TYPE=A ATTR=TXT:完全に削除
TAG POS=5 TYPE=A ATTR=TXT:完全に削除
TAG POS=6 TYPE=A ATTR=TXT:完全に削除
TAG POS=7 TYPE=A ATTR=TXT:完全に削除
TAG POS=8 TYPE=A ATTR=TXT:完全に削除
TAG POS=9 TYPE=A ATTR=TXT:完全に削除
TAG POS=10 TYPE=A ATTR=TXT:完全に削除
TAG POS=11 TYPE=A ATTR=TXT:完全に削除
TAG POS=12 TYPE=A ATTR=TXT:完全に削除
TAG POS=13 TYPE=A ATTR=TXT:完全に削除
TAG POS=14 TYPE=A ATTR=TXT:完全に削除
TAG POS=15 TYPE=A ATTR=TXT:完全に削除
TAG POS=16 TYPE=A ATTR=TXT:完全に削除
TAG POS=17 TYPE=A ATTR=TXT:完全に削除
TAG POS=18 TYPE=A ATTR=TXT:完全に削除
TAG POS=19 TYPE=A ATTR=TXT:完全に削除
TAG POS=20 TYPE=A ATTR=TXT:完全に削除
TAG POS=21 TYPE=A ATTR=TXT:完全に削除
TAG POS=22 TYPE=A ATTR=TXT:完全に削除
TAG POS=23 TYPE=A ATTR=TXT:完全に削除
TAG POS=24 TYPE=A ATTR=TXT:完全に削除
TAG POS=25 TYPE=A ATTR=TXT:完全に削除
TAG POS=26 TYPE=A ATTR=TXT:完全に削除
TAG POS=27 TYPE=A ATTR=TXT:完全に削除
TAG POS=28 TYPE=A ATTR=TXT:完全に削除
TAG POS=29 TYPE=A ATTR=TXT:完全に削除
TAG POS=30 TYPE=A ATTR=TXT:完全に削除
TAG POS=31 TYPE=A ATTR=TXT:完全に削除
TAG POS=32 TYPE=A ATTR=TXT:完全に削除
TAG POS=33 TYPE=A ATTR=TXT:完全に削除
TAG POS=34 TYPE=A ATTR=TXT:完全に削除
TAG POS=35 TYPE=A ATTR=TXT:完全に削除
TAG POS=36 TYPE=A ATTR=TXT:完全に削除
TAG POS=37 TYPE=A ATTR=TXT:完全に削除
TAG POS=38 TYPE=A ATTR=TXT:完全に削除
TAG POS=39 TYPE=A ATTR=TXT:完全に削除
TAG POS=40 TYPE=A ATTR=TXT:完全に削除
TAG POS=41 TYPE=A ATTR=TXT:完全に削除
TAG POS=42 TYPE=A ATTR=TXT:完全に削除
TAG POS=43 TYPE=A ATTR=TXT:完全に削除
TAG POS=44 TYPE=A ATTR=TXT:完全に削除
TAG POS=45 TYPE=A ATTR=TXT:完全に削除
TAG POS=46 TYPE=A ATTR=TXT:完全に削除
TAG POS=47 TYPE=A ATTR=TXT:完全に削除

W3 Total Cacheの設定項目を一つ一つ理解する【執筆途中】

間違ってる点があればご指摘下さい(._.)

キャッシュプラグインを入れたはよいものの、急な問題はつきもの。
新しいキャッシュプラグインを触り出してすぐなんかは、
ローカルキャッシュなのか、サーバーサイドなのかどこにキャッシュが
すぐには分からず問題解決まで時間がかかったり、、、。

ということでスクリーンショット多めで、
google翻訳に頼りまくって
設定項目を一つ一つ理解していきたいと思います。

まずはGeneral Settingから

Enhanceは結構面白くて、htaccessの中にも変数が組み込まれて
かなり高速化してます。
htaccessの段階で振り分けちゃうんだから負荷もかなり軽減されます。

Opcode Cacheに興味津津。
php自体を高速化する仕組みらしくモジュールがあるかの確認→
php再起動が必要とのこと

phpの実行結果をキャッシュできるらしい。
かなり高速化できそうだけど、メモリバカ食いしないか心配。
ワードプレス管理画面からphpを高速化するってのもちょっと怖いし
とりあえず要検証といったところでお次へ。

 

DatabaseキャッシュとObjectキャッシュについて
オブジェクトキャッシュの方がWP独自の機能でDatabaseキャッシュの方は
このプラグインの提供する機能かな。

地味に大事なのが両方有効化すると後々問題の切り分けがしずらく、
どちらか一つの方がいいです。
どっちが良いのかというのは要検証ですな。

https://wpdocs.osdn.jp/%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Object_Cache

リバースプロキシマジかっ!ってなりましたが
ワニス(バニス?)というソフトをyumなりapt-getなりでインストール
する必要があるらしくハードルが高いので不要かな。

フラグメントについても直感的に理解できるので割愛。

その下の下記項目は省略
Monitoring →APIキーでRelicと連携して外部から連携
Licensing    →w3 total cache の有料アカウントのこと?

ここでは一番下のソースコードにコメント追記するモードが便利ですね。
訂正:一番下の和訳と↑このコメントは間違ってます。
デバッグの設定項目はこの下(スクショ範囲外)にあります。

General Setting ここまで
一旦休憩

 

 

ライブドアからワードプレスにインポートする手順

これまた自分用メモですが
設定の意図やおまかんな内容が多々含まれるので
検索から来た方は参考にしないでくださいw
作業は自己責任で。

【素材の準備】
ライブドアの管理画面からエクスポート
画像のURLリストを作成(リンク

【WPの準備】
ワードプレスを普通に構築
Movable Type のインポートを実行(サーバーが重いと中断する

中断がいやな場合はMAMPに構築して流し
wp_postsとwp_term_relationshipsをエクスポートして
インポート(しかしココもサーバーが重いと中断してしまうので工夫が必要

なお、文字コードのエラーが出た場合はutf8mb4」から「utf8」に変更する


※この辺はxmlrpc経由で1件1件投げるスクリプト
組んでも良いかもしれんけど、、、

そのあとプラグインのSearch Regexなどで微調整

【WPの各種設定】
i) パーマリンクを揃える
カスタム構造を/archives/%postname%.htmlに変更

functions.phpに下記内容を追記
記事投稿時にパーマリンクにランダム10桁の数字が付与されます

//パーマリンクをライブドア風に
function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
    if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
    $slug = substr(str_shuffle('1234567890'), 0, 8);
  }
  return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );
//パーマリンクをライブドア風にここまで

ii)素材の配置とサムネイルの生成
wp-content/uploads/配下にディレクトリを作って設置
(このディレクトリ以外にしちゃうと後々再度引っ越しなったときに大変になる
どうしても無理な場合はメモったりちゃんと引き継いだりする!

そしてプラグインのAuto Post Thumbnail等でアイキャッチをあてがう
ただ、jpgをうまく取り込めないバグがあるので注意_2018/04/17時点
下記内容をfunctions.phpに追記

function split_combined_mimes_for_apt( $mime_types ) {
  foreach ( $mime_types as $regex => $mime_type ) {
    if ( false !== strpos( $regex, '|' ) ) {
      $keys = explode( '|', $regex );
      foreach ( $keys as $key ) {
        $mime_types[ $key ] = $mime_type;
      }
    }
  }
  return $mime_types;
}
add_filter( 'mime_types', 'split_combined_mimes_for_apt' );

iii)categoryは対応がとれず、.htaccessでも上手くいかないでheader.phpに
スクリプトを書いていく

//リクエストを取得
$url = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$host= 'http://example.example/cat/';
//飛ばしたい先に振り分ける
if (preg_match('/cat_/', $url)) {
header( "HTTP/1.1 301 Moved Permanently" ); 
if (preg_match('/cat_num4999/', $url)) {
header( "Location: $host飛ばしたい先のエンコードURL" ); 
 exit;}

 

 

Centos7+PleskOnyxを色々いじってみた(多分一段落)_自分用メモ

チューニング初心者の僕にはかなり勉強になりました。
(間違ってたらご指摘お願いします。)

‪CentOS Linux 7.4.1708 (Core)
Plesk Onyx v17.5.3
CPU 16core
メモリ32G
最終的にphp-fpm+nginxで動かしてます。

nginx version: nginx/1.11.10

Server version: Apache/2.4.6 (CentOS)
Apache2.4は初めて触りました。

これに50ドメイン近く突っ込みまして
一時期ロードアベレージは50近くw

Apacheの設定ファイルはNginxに移ったので殆ど触ってない

続きは疲れたので後日_2018-04-08

続き
Nginxの設定ファイル(共通項目
/etc/nginx/nginx.conf

diff nginx.conf.dateori nginx.conf

<     worker_connections  1024;
---
>     worker_connections  8192;
19a20,27
>     proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=4h; 
>     proxy_temp_path  /var/cache/nginx_tmp;
> 
> # add 2018 0421 has too long header_fix
> proxy_buffer_size     8k;
> proxy_buffers     100 8k;
> #/add 2018 0421
> 

ドメインごとの設定ファイル(アクセスログを止めたり、エラーログのレベルを設定したるするため
/var/www/vhosts/system/domain_name/conf/

しかし設定ファイルをよく読まないといけません。冒頭に

#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,(以下略

#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
#IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES:
#/var/www/vhosts/system/domain_name/conf/vhost.conf
#/var/www/vhosts/system/domain_name/conf/vhost_ssl.conf

こういう記述があって、
要はこのファイルを編集しても自動生成の際に上書きされてLOSTしますよ〜と言われます。

/var/www/vhosts/system/domain_name/conf/vhost.conf

ではどうすれば良いのかというと。。。
まずは
$ cat nginx.conf | grep include
してみる

include /etc/nginx/fastcgi.conf;
include /etc/nginx/fastcgi.conf;
include "/var/www/vhosts/system/domain_name/conf/vhost_nginx.conf";

とのこと。
これの一番下がpleskGUIからの設定値になります。
なのでそちらを編集しませう。

Plesk Onyx触り始めました

Plesk Onyx
日本語ドキュメントがあまりないので、何かためになることがあれば書いていこうかな〜と

マスターユーザーモードが無いのでウン十ドメイン管理する時はドメインごとに
システムユーザー指定→FTPなどアカウント発行で結構めんどくさい

【sort】無料ブログの画像を一括保存する時に便利なコマンド(Mac)【uniq】

無料ブログから画像をバックアップしようと思って調べ物してたんだけど
結構使いそうなのでφ(..)メモメモ

①某無料ブログの記事データをエクスポート
②恋に落ちるエディタ、サブライムテキストで開く
③正規表現等で画像のURLを抽出
④それを新規作成したテキストファイルに張り付ける

これだと重複がありそうなのでココからコマンドでやろう!

僕の中の暫定最適解は下記コマンド

sort -u imagelist.txt -o outputlist.txt

imagelistファイルから重複を除きソート(uオプション)
それをoutput.txtという新規作成テキストに保存(oオプション)