7,166
edits
No edit summary |
No edit summary |
||
(125 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
*たんなるメモ | |||
いろいろお便利なコマンド | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
apt list '~c' | |||
apt purge '~c' | |||
apt --purge autoremove -y | |||
</syntaxhighlight> | |||
*たんなるメモ | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
npm --omit=dev --omit=optional ls --all | |||
</syntaxhighlight> | |||
*debian bookwormメモ | |||
大きな変更。そろそろ来ると思ってたが rsyslog がなくなり systemd journal を使う。merged-/usr が必須。このあたりは時代の流れ。自分のOSSビルド環境で /bin から /usr/bin に変わったプログラムのシンボリックリンク切れが起きて結構はまったw | |||
https://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html | |||
python系の変更には注意して運用する。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
5.2.2. python インタプリタは externally-managed としてマークされます | |||
Debian が提供する python3 インタプリタパッケージ (python3.11 および pypy3) は、PEP-668 に従って externally-managed とマークされるようになりました。Debian で提供されるバージョンの python3-pip はこれに伴って、--break-system-packages オプションが指定されない限り、Debian の python インタプリタ環境へ手作業でのパッケージインストールを拒否します。 | |||
Debian ではパッケージ化されていない Python アプリケーション (あるいはバージョン) をインストールする必要がある場合、(pipx Debian パッケージにある) pipx を使ってのインストールを推奨します。pipx は他のアプリケーションやシステムの Python モジュールから隔離された環境をセットアップし、アプリケーションとその依存関係をその環境へインストールします。 | |||
Debian ではパッケージ化されていない Python ライブラリモジュール (あるいはバージョン) をインストールする必要がある場合、可能であれば virtualenv へインストールするのを推奨しています。virtualenv は Python 標準ライブラリモジュールの venv (python3-venv Debian パッケージ内)、あるいは Python サードパーティツールの virtualenv (virtualenv Debian パッケージにあります) で作成できます。例えば、pip install --user foo を実行するのではなく、任意の virtualenv にインストールするのに mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo を実行します。 | |||
詳細については /usr/share/doc/python3.11/README.venv を参照してください。 | |||
</syntaxhighlight> | |||
*avahi-browse や avahi-resolve が答え返さない問題 | |||
ホスト名に勝手にシリアル番号を付ける問題に対応した設定が原因だった。どちらが運用上いやなのかを考えて、avahi-browse や avahi-resolve は捨てて mdns-scan 使うw | |||
勝手にシリアル番号追加問題の回避策 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
cache-entries-max=0 | |||
</syntaxhighlight> | |||
*Ubuntu無題w | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
#!/bin/sh | |||
systemctl stop snapd.socket | |||
systemctl stop snapd | |||
systemctl disable snapd | |||
systemctl disable snapd.socket | |||
systemctl stop snapd.failure.service | |||
systemctl disable snapd.failure.service | |||
systemctl stop snapd.snap-repair.service | |||
systemctl disable snapd.snap-repair.service | |||
systemctl stop snapd.mounts-pre.target | |||
systemctl disable snapd.mounts-pre.target | |||
</syntaxhighlight> | |||
*雑多なメモ | |||
忘れてた。久しぶりに boot してこないと console をつなげたら...fsck中... | |||
そのままメンテナンスモードからマルチユーザモードにしてしまったら、いわゆるデバイス番号が変わってたw UUID でマウントしてるから問題は起きなかったが、昔々大チョンボしたパターンw | |||
おまじないは忘れずにw | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
tune2fs -c -1 -i 0 /dev/sda2 | |||
</syntaxhighlight> | |||
*雑多なメモ | |||
binary file 探す。(今までは find でいろいろ駆使しながらやってたがこれがシンプルね) | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
grep -rIL . | |||
</syntaxhighlight> | |||
*雑多なメモ | |||
SSDを容量のギリギリまでつかうのなら discard 付けとけ。でないと遅杉。fstrim じゃぁ追いつかねぇw | |||
*make の j オプション | |||
これにしておけば良いらしい | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
make -j$[$(nproc)+1] | |||
</syntaxhighlight> | |||
*smartmontools アプデ | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
update-smart-drivedb --trunk --no-verify | |||
</syntaxhighlight> | |||
メジャーメーカーなのにまだ db にないのもあるな。(中華SSDもけっこうdbにはいってるw) | |||
*雑多なメモ | |||
<syntaxhighlight lang="text" enclose="div"> | |||
pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override. | |||
</syntaxhighlight> | |||
なんか kernel option に enable_mtrr_cleanup がいるっぽい。 | |||
ちょっと古いPC(Win11非対応機種の値崩れ品w)に限界までメモリー積んだ(DDR3驚くほど安いねw)ので、ちょっと古い(入手できる最新にはあげたが...)BIOSが原因っぽい。 | |||
*BIOS update 後ブートしない | |||
FAQらしい。EFI bootloader を再インストールする必要がある。外部メディアから resuce モードで boot してうんぬん。 | |||
https://wiki.debian.org/GrubEFIReinstall | |||
楽な方法もあった。BIOS 関連のメニューに "Run UEFI Application" なる設定があれば、起動EFIパーティションにあるはずの grubx64.efi を指定して OS を boot して、grub-install /dev/sda, update-grub すればよい。BIOSいじってて、また boot しなくなって焦っていろいろやってみたら出来たw | |||
*USB 3.x のストレージなのに遅い | |||
lsusb で確認しても 5Gbps なのでちゃんと認識はしている。5Gbps といえば ATA と遜色ないスピードなのに桁違いに遅い。いろいろホゲると... lsblk -t でみたら RQ-SIZE が 2 だ。これじゃパフォーマンスでない。美しい設定方法を探したがわからず(udev使うとかで出来るのかもしれないが)野蛮な方法で変更した。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
echo 16 > /sys/block/sdX/queue/iosched/fifo_batch | |||
echo 3 > /sys/block/sdX/queue/iosched/writes_starved | |||
echo 5000 > /sys/block/sdX/queue/iosched/write_expire | |||
echo 500 > /sys/block/sdX/queue/iosched/read_expire | |||
echo 64 > /sys/block/sdX/queue/nr_requests | |||
echo 128 > /sys/block/sdX/queue/read_ahead_kb | |||
echo 0 > /sys/block/sdX/queue/add_random | |||
#echo 0 > /sys/block/sdX/queue/iostats | |||
</syntaxhighlight> | |||
*disk増設した | |||
macos で GUID なパーティション切ってたので gdisk でtype 変えた(Linux filesystem 8300) 。あとは UUID の確認は blkid | |||
*ionice | |||
昨今の IO scheduler って mq-deadline らしくって、ionice が効かないとの事。また一つ賢くなったw | |||
*PCRE2 と PCRE3 | |||
ちょっと調べてたらビックリ。pcre3 が古いのね。pcre2 が最新だと思ってたら 3 が有ったのであれあれって調べたらなんと逆だ。perl3互換ということの3だろうが... | |||
駄菓子菓子w 少し前の ubuntu のパッケージにリンクされているのは libpcre3-dev なのだ。 perl5 互換重要ということか... 新しめの ubuntu はほぼ pcre2 になっとる。 | |||
*tcp_wrappers IPv6 | |||
IPv6 については CIDR 表記ができる | |||
<syntaxhighlight lang="text" enclose="div"> | |||
ALL : [3ffe:505:2:1::]/64 | |||
</syntaxhighlight> | |||
*ccache 4.1 が遅い | |||
compression がデフォで有効になっていた。非力な環境なので無効にした。 | |||
<syntaxhighlight lang="yaml" enclose="div"> | |||
compression = false | |||
</syntaxhighlight> | |||
すでに圧縮されちゃったキャッシュはこのコマンドで戻る。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
ccache --recompress uncompressed | |||
</syntaxhighlight> | |||
さらに、これはやりすぎかもしれないが... | |||
<syntaxhighlight lang="yaml" enclose="div"> | |||
sloppiness = include_file_mtime, include_file_ctime, time_macros, pch_defines, file_stat_matches, locale | |||
</syntaxhighlight> | |||
やはりやりすぎだった。ある状況で間違ってビルドされた。いまは time_macros, pch_defines のみで検証中。 | |||
*varnish 起動ミス | |||
超ワークアラウンドだが、/etc/rc.local に書いておく | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
/usr/bin/install -o varnishlog -g varnish -d /run/varnish | |||
/usr/bin/install -o varnishlog -g varnish -d /run/varnishlog | |||
/usr/bin/install -o varnishlog -g varnish -d /run/varnishncsa | |||
</syntaxhighlight> | |||
*壊れた symlink 一覧 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
find . -xtype l | |||
</syntaxhighlight> | |||
*icu めも | |||
[http://apps.icu-project.org/datacustom/ ICU Data Library Customizer] | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
icupkg icudt57l.dat icudt62l.dat -w | |||
</syntaxhighlight> | |||
*めもめも | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
cat /sys/devices/system/cpu/vulnerabilities/l1tf | |||
</syntaxhighlight> | |||
*HTTP/2 化 | |||
hitch + varnish5 で簡単 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
curl -L https://packagecloud.io/varnishcache/varnish5/gpgkey | sudo apt-key add - | |||
echo "deb https://packagecloud.io/varnishcache/varnish5/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/varnishcache_varnish5.list | |||
sudo apt-get update | |||
</syntaxhighlight> | |||
:varnish6 はまだ安定しないので 5.x を使う | |||
varnish の起動オプションに追加 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
-p feature=+http2 -p thread_pools=2 -p thread_pool_min=450 -p thread_pool_max=5000 -p syslog_cli_traffic=off -t 120 | |||
</syntaxhighlight> | |||
hitch.confに追加 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
alpn-protos = "h2, http/1.1" | |||
</syntaxhighlight> | |||
*https 化 | |||
そろそろヤバイので https 化した。現在の構成が apache2 + varnish なので、いろいろ調査した結果 hitch を使うことにした。 | |||
[http://hitch-tls.org/ http://hitch-tls.org/] | |||
Ubuntu のパッケージは古かったので PPA で導入。 | |||
[https://launchpad.net/%7Elasse-karstensen/+archive/ubuntu/hitch Ubuntu PPA aiming for latest hitch on latest ubuntu.] | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
sudo add-apt-repository ppa:lasse-karstensen/hitch | |||
sudo apt-get update | |||
sudo apt-get -y install hitch | |||
</syntaxhighlight> | |||
hitch + varnish + apache2 + Let's Encrypt の統合の参考はこれが良かった。 | |||
[https://docs.varnish-software.com/tutorials/hitch-letsencrypt/ Let's Encrypt with Hitch and Varnish (CentOS7) Tutorial] | |||
Ubuntu のパッケージに letsencrypt というのがあるが、これは古くて hitch 対応してないらしいので PPA 導入。 | |||
[https://launchpad.net/~certbot/+archive/ubuntu/certbot https://launchpad.net/~certbot/+archive/ubuntu/certbot] | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
sudo add-apt-repository ppa:certbot/certbot | |||
sudo apt-get update | |||
sudo apt-get -y install certbot | |||
</syntaxhighlight> | |||
基本的には CentOS7 のドキュメントをなぞるのでよいが、 hitch.conf を作っておく。(手順にしたがって pem-file を追加する) | |||
<syntaxhighlight lang="text" enclose="div"> | |||
frontend = { | |||
host = "*" | |||
port = "443" | |||
} | |||
backend = "[127.0.0.1]:6086" # 6086 is the default Varnish PROXY port. | |||
workers = 2 # number of CPU cores | |||
backlog = 1024 | |||
keepalive = 3600 | |||
syslog = on | |||
ciphers = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH" | |||
daemon = off | |||
user = "_hitch" | |||
group = "_hitch" | |||
# Enable to let clients negotiate HTTP/2 with ALPN. (default off) | |||
# alpn-protos = "h2, http/1.1" | |||
# run Varnish as backend over PROXY; varnishd -a :80 -a localhost:6086,PROXY .. | |||
write-proxy-v2 = on # Write PROXY header | |||
</syntaxhighlight> | |||
certbot-renew | |||
certbot-renew.timer | |||
:が無いので renew は自分で crontab に書く | |||
<syntaxhighlight lang="text" enclose="div"> | |||
00 04 25 * * /usr/bin/certbot renew && systemctl restart hitch | |||
</syntaxhighlight> | |||
certbot の --post-hook は、 | |||
--post-hook="systemctl restart hitch" | |||
varnish で強制的に https に redirect する。 | |||
https://github.com/varnish/hitch/wiki/FAQ | |||
https://varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL | |||
コンテンツ側の対処 | |||
https://www.mediawiki.org/wiki/Manual:$wgServer | |||
https://ja.wordpress.org/plugins/really-simple-ssl/ | |||
HSTS | |||
https://github.com/varnish/hitch/wiki/FAQ#hsts-with-hitch-and-varnish | |||
:A+にしたいのでやってみた | |||
'''varnish h2 が安定したら HTTP/2 にする''' | |||
::https://packagecloud.io/varnishcache | |||
:::varnish5 いれたら簡単にでけたw | |||
* varnish が 404 のまま | |||
<syntaxhighlight lang="c" enclose="div"> | |||
sub vcl_backend_response { | |||
# Don't cache 404 responses | |||
if ( beresp.status == 404 ) { | |||
set beresp.ttl = 3s; | |||
} | |||
} | |||
</syntaxhighlight> | |||
*ubuntu 16.04 systemd 環境の varnish と logrotate | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
mkdir /run/varnish | |||
chown varnishlog:varnish /run/varnish | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text" enclose="div"> | |||
Type=forking | |||
ExecStartPre=/usr/bin/install -o varnishlog -g varnish -d /run/varnish | |||
ExecStart=/usr/bin/varnishlog -D -a -w /var/log/varnish/varnish.log -P /run/varnish/varnishlog.pid | |||
PIDFile=/run/varnish/varnishlog.pid | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text" enclose="div"> | |||
Type=forking | |||
ExecStartPre=/usr/bin/install -o varnishlog -g varnish -d /run/varnish | |||
ExecStart=/usr/bin/varnishncsa -D -a -w /var/log/varnish/varnishncsa.log -P /run/varnish/varnishncsa.pid | |||
PIDFile=/run/varnish/varnishncsa.pid | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text" enclose="div"> | |||
postrotate | |||
/bin/kill -HUP `cat /run/varnish/varnishlog.pid 2>/dev/null` 2> /dev/null || true | |||
endscript | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text" enclose="div"> | |||
postrotate | |||
/bin/kill -HUP `cat /run/varnish/varnishncsa.pid 2>/dev/null` 2> /dev/null || true | |||
endscript | |||
</syntaxhighlight> | |||
*ccache | |||
.bashrc に | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
USE_CCACHE=1 | |||
export USE_CCACHE | |||
PATH="/usr/lib/ccache:$PATH" | |||
export PATH | |||
</syntaxhighlight> | |||
*Fail2Ban | |||
今更ながらですが、[http://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban]実験中。 | |||
::いままで、つつかれるのは仕方がないと放置してたのですが... | |||
*たんなるメモ | |||
OpenWrt / LEDE とかクロスコンパイル環境では、やたらと PATH が深くなりがち。このためにいろいろトラブルがでる。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
execvp: printf: Argument list too long. | |||
</syntaxhighlight> | |||
:これはパス名がながくて、引数のサイズ制限をこえたということ。対処は PATH を短くするか、xargs つかってうまく逐次処理する。 | |||
:getconf ARG_MAX | |||
<syntaxhighlight lang="text" enclose="div"> | |||
bad interpreter: No such file or directory | |||
</syntaxhighlight> | |||
:shellbang でもインタープリターのフルパス名でハマることもある。逃げ方は exec hoge 等のラッパかます等。 | |||
:80桁 | |||
*たんなるメモ | *たんなるメモ | ||
<syntaxhighlight lang="text" enclose="div"> | <syntaxhighlight lang="text" enclose="div"> | ||
Line 20: | Line 369: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
大胆に *:* してテスト中。 | 大胆に *:* してテスト中。 | ||
<syntaxhighlight lang="text" enclose="div"> | |||
"Sensu:sensu"; | |||
"LP-PPA-ondrej-php:${distro_codename}"; | |||
"elastic:stable"; | |||
</syntaxhighlight> | |||