rarul.comサーバの最近のブログ記事

Linux memo 2021/01/03 CentOS Stream 8 編

● 前置き
長い間塩漬け運用していたCentOS6がEOFになっちゃったので移行することにした。CentOS 8はプロジェクトを中止する予定だし、別のRHELクローン立ち上げはまだまだ時間かかるだろうし、ということで素直にCentOS Stream 8を移行先に選んだ。

● dnf
yum から dnf に変わった
オプション類がだいたい一緒なのでノリでそのまま使える。

● selinux
どうして人はみなselinuxを無効にしてしまうのだろうか(自戒を込めて)
/etc/selinux/config
SELINUX=disabled

● 公開鍵の暗号強度の確認
ssh-keygen -l -f ~/.ssh/authorized_keys
昔作ったのが RSA 1536 だったので、作り直すことにした。オプションなしに作ったら RSA 3072 になった
ちなみに、ssh-keygenで作ったときのファイルの id_rsaが秘密鍵、id_rsa.pubが公開鍵、「わからないから両方送ります」とかしないように

● firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --permanent --new-zone=rarullocal
firewall-cmd --permanent --zone=rarullocal --set-target=ACCEPT
firewall-cmd --permanent --zone=rarullocal --add-source=192.168.0.0/16
firewall-cmd --permanent --zone=rarullocal --add-service=samba
firewall-cmd --reload
AllowZoneDriftingがどうとか怒られるので、マルチゾーンにならないようにした上で、
/etc/firewalld/firewalld.conf
AllowZoneDrifting=no

● sshd
/etc/ssh/sshd_config
Port [NewPort]
PasswordAuthentication no
パブリックサーバだと最近はつつくやつが非常に多いので、ポート番号変えた上でパスワード認証なしくらいにしとかないと怖い。

● dnsmasq
/etc/dnsmasq.conf
domain-needed
bogus-priv
local=/www.rarul.com/
/etc/hosts
192.168.123.234 www.rarul.com

● chronyd
#pool 2.centos.pool.ntp.org iburst
server YOURSERVER iburst
allow 192.168.0.0/16
port 123
(port 123 は、ntpdを内部公開したい場合に)

● Apache(httpd.conf)
あんま晒したくないので部分的に、、
 ※ 2021/02/02訂正、.gitはディレクトリなので、FilesでマッチさせるのではなくてFilesDirectorymatchでマッチさせる。
/etc/http/conf/httpd.conf
<FilesDirectorymatch "^/.*/\.git/">
Require all denied
<Files/Directorymatch>
#AddDefaultCharset UTF-8
ExpiresActive on
ExpiresDefault "access plus 3 minutes"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/jpg "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/ico "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 days"
ExpiresByType image/vnd.microsoft.icon "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType text/javascript "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType audio/mp3 "access plus 1 days"
AddOutputFilterByType DEFLATE text/plain text/html text/css
AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml application/atom+xml application/rdf+xml
AddOutputFilterByType DEFLATE text/javascript application/x-javascript application/javascript

/etc/httpd/conf.d/ssl.conf
の SSLCertificateFile, SSLCertificateKeyFile を Let's Encryptに合わせて変更。
warningログがうざかったので使う予定ないモジュールをコメントアウト
/etc/httpd/conf.modules.d/00-proxy.conf
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so

● .htaccess
order deny,allowとかSatisfy AnyとかがApache-2.4から使えなくなったんでその置き換えで。
AuthUserFile /home/rarul/.htdigest
AuthGroupFile /dev/null
AuthName "for members only"
AuthType Digest
<RequireAny>
Require all denied
Require user [USERNAME]
Require ip 192.168. 127.0.0.1
</RequireAny>
Digest認証はmd5なのでそれほど強度強くない。HTTPS化が大前提として、本気で認証したいなら...なにがいいんだろ。HTTPSなら他のid/pass方式でも大差ない気がしてきた。

● MariaDB
vi /etc/my.cnf.d/client.cnf
[client-mariadb]
default-character-set = utf8mb4
データベース作るときに明示的にデフォルト文字コードを設定
create database YOURDB character set utf8mb4;
それでも、phpからアクセスするときに SET NAMES utf8mb4 しないと化けることがあったけど、正直良くわからんし、SET NAMES utf8mb4 すればよいから、もう原因追求諦めた。
utf8mb4じゃない文字コードで作ってしまったDBは、潔くutf8mb4じゃない文字コードのまま運用したほうが無難げ。(特にutf8とutf8mb4との違いには要注意) 文字コードをutf8mb4に変換したい場合は、移行作業とは別の機会を構えたほうがよいと思う。これでようやくSET NAMES binaryを卒業できた。
あとマジメにチューニングしてないけどRAM余り気味のサーバなので適当に盛っといた。
/etc/my.cnf.d/mariadb-server.cnf
[mysqld]
hread_cache_size=16
query_cache_size=128M
sort_buffer_size=8M
join_buffer_size=64M
read_buffer_size=1M
read_rnd_buffer_size=2M
myisam_max_sort_file_size=64M

● PHP
ereg -> preg_match
mysql_connect -> mysqli_connect
mysql_query -> mysqli_query
mysql_real_escape_string -> mysqli_real_escape_string
mysql_fetch_assoc -> mysqli_fetch_assoc
mysql_free_result -> mysqli_free_result
mysql_close -> mysqli_close
他にもあった気がするけど、まぁ似たようなノリでなんとかなるでしょ。

● Let's Encrypt
/etc/letsencrypt/を移行しておいた上で、certbot-autoをダウンロードして実行するだけ、あとは全部勝手にやってくれる。すごい。

● その他(省略したとこも含めて)
centos8stream.txtを見てね >未来のらるるさんへ

自宅サーバをIPv6対応させる

予想に反して、asahi-netのIPv6(フレッツ)が申し込みしてないはずだったのに勝手に有効化されてしまい、よく確認してみると「withフレッツ」契約だと強制的に有効にさせられるらしいので、まぁ前向きに、自宅サーバ(Linux CentOS6.9)をマジメにIPv6対応させることにした。

● ルータの設定
IPv6についてはパススルーだけ対応の古いルータ(AtermWG600HP)なので、Linux側でファイア・ウォールさせる方針にする。ルータは「IPv6ブリッジ」を有効にしておくこと。asahi-netのフレッツはIPv6はIPoE方式(PPPoEじゃない)なので、これだけでほぼ設定は終わる。

ひかり電話契約がある場合はDHCPv6-PD形式でHGWが受ける形式になり、ひかり電話契約がない場合は DHCPv6で prefix /64 がIAIDに直接割り振られる・・・感じらしいけど正直まだきちんとは理解できていない。

● LinuxのIPv6設定
「どーせIPv6なんか使わんやろ」と思っていた昔に設定したLinuxなので、案の定無効化されていた。
# vi /etc/sysctl.d/ipv6-disable.conf

#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
コメントアウトして再度有効に。再起動後、ifconfig で IPv6 (Scope:Global)が/64で取れていることを確認。

● Linuxのip6table設定
ファイアウォールの方は、
# vi /etc/sysconfig/ip6tables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT
最初からある設定も参考にして、こんなとこか?(http,httpsを有効にする) 外へ見せてるサーバなので、DROPよりもREJECTのほうが好み。

# /etc/init.d/ip6table start
# /etc/init.d/ip6table status
# chkconfig ip6talbes on

● HTTP/HTTPDの確認
TCP 80 を許可/不許可切り替えながら本当に動いているかを確認してみる。

[rarul@mana ~]$ curl http://fe80::c23f:****:****:****/
curl: (7) Failed to connect to fe80::c23f:****:****:****: Invalid argument
[rarul@mana ~]$ curl http://[fe80::c23f:****:****:****]/
curl: (3) [globbing] error: bad range specification after pos 9
[rarul@mana ~]$ curl -g 'http://[fe80::c23f:****:****:****]:80/'
curl: (7) Failed to connect to fe80::c23f:****:****:****: Invalid argument
... curlが古いのか結局わからんかった。なので代わりにtelnetで、

[rarul@mana ~]$ telnet fe80::c23f:****:****:****%eth0 80
Trying fe80::c23f:****:****:****%eth0...
Connected to fe80::c23f:****:****:****%eth0.
Escape character is '^]'.
^C
Connection closed by foreign host.
反応あり/なしがわかったから、もう確認はtelnetだけでいいや・・・telnetの場合は「%eth0」が必要らしい。別Windowsマシンからも、「http://[fe80::c23f:****:****:****]/」で確認できたのでこれでよさそう。

あと、Apacheのアクセスログのaccess_logに IPv6が残っていたよ、ヤッター
fe80::4845:****:****:**** - - [07/Feb/2018:17:22:35 +0900] "GET / HTTP/1.1" 200 2422 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

● DNS
www.rarul.com の AAAA レコードを登録して完了。DNSが浸透してきた頃にアクセスログ見て最終確認すればよいかと。

www.rarul.com鯖移転しました

http://www.rarul.com/ の鯖(サーバ)の移転をしました。地理的かつ物理的なマシンが変わった程度で、中身のコンテンツは一緒(のはず)なので、アクセスしただけの目には変わらないです。

前よりスペック落ちてる(CPUとメモリともに半分)ので、応答悪くなったかもしれません。もし悪くなった場合はらるるまでお知らせください。まぁ、教えていただいても何もしないと思いますけど・・・

もうちょっと具体的にメモしとくと、物理的にはこれこれにしたわけで、地理的にはこれなわで、移転準備は事前に完了させておいた上でwwwのcnameを@からieにしました。デストリをCentOSにそろえたおかげで、思ったよりもすんなりと移行できました。

これからも、お気軽でいい加減で自分勝手なサイト「らるるのわがまま」をよろしくお願いいたします。

どうもサーバが不調だ

rarul.comのサーバに使ってるマシンを入れ替えてそろそろ10ヶ月になるけど、どうもこのマシン調子が悪い。平均すると1ヶ月半に1回くらい、急に動かなくなってくれる。ハングっぽい。ログ見る限り一度も何も残ってないので、たぶんハード的ななんかなのかなぁと思ってる。(ちなみに、もくもくとサーバダウン履歴を残してるページがあったりする。)

怪しいことと言えば、ケースについてきた電源を180WのACアダプタに載せ替えたことと、電圧制御するようkernel入れ替えたことくらいなんだけどなぁ。・・・どう見てもやり過ぎだな。

電圧制御は一時期元に戻してて、それでもダメだったので、やっぱり電源か?180Wあれば余裕の構成のつもりだったんだけど、こうなると疑わざるを得ない。

ということで、さっき電源元に戻して見た。これで2ヶ月ほど様子見ることにする。1ヶ月半に1回くらいしかおかしくならないので、これで問題なくなったのかどうかの確認もめんどい。

1年前のVOCALOID曲一覧を出してみた

http://www.rarul.com/nico/vcl/l.php

1年前のVOCALOID曲一覧を出します。(引数つけると指定した日時の曲一覧、例えば2008年1月1日の作品一覧)) 対象は、週刊VOCALOIDランキングまたは月刊ボーカロイドTOP30に1度以上ランクインしたことのある作品です。

初音ミク発売から1年たった影響で、ニコ動周辺で「1年前の曲」とかいって紹介が入ることが増えたので、こっちも適当に機能追加してみました。適当に作ったのでいろいろとおかしいところがあるようです(投稿日判定がちょっとおかしかったり、累積データのない作品の表示がおかしかったり)が、細かいことは気にしないことにしよう。どうせ利用者なんてほとんどいないんだし。

ココニコチャート日刊VOCALOIDランキングが優秀すぎて、うちのようなサイトの存在意義がないなぁ。。

例えば週刊VOCALOIDランキング#41をマイリスト順で、
http://www.rarul.com/nico/vcl/w.php?41&m

並び替えの準備はかなり前からしてたんですが、rarul.comでデータ取得開始した2008年1月2日頃以前のランキングはデータがなく並び替えできないという点で悩んでいて、結果ニコチャからデータをのこそぎ持ってきてインポートして整合性確認してたら、時間かかっちゃいました。まぁどうせこんな機能を足したところで、使ってる人いないんだからどうでもいいんだろうけど。

あと、最近ニコニコ動画にコミュニティ機能がつきましたが、そのなかの「ニコニコランキング動画制作組合」が、ランキング動画作成してみたいと思ってる人にはなかなかいいよ。

x86_64+powernow-k8 で電圧調整

だいぶ前の続き。

いろいろやってみたけど、結果的に CentOS 5.2 + x86_64(BE-2400+)でpowernow-k8を使った電圧調整ができたんで、その強引なやり方を後生の自分のためにメモっときます。参考にしたところ
[winplusの日記] powernow-k8の再コンパイル(電圧変更)
[adsaria mood] CentOSのカーネル再構築
消費電力/低消費電力PC - usyWiki
アジアのペンギン: 新規カーネル起動失敗に備えたgrubの使い方

まずはデストリ(CentOS 5.2)のLinuxのソースの取り寄せ。このへんを掘って、kernel-2.6.18-92.1.6.el5.src.rpmをインスコ。/usr/src/redhat/ 以下に展開される。

次は kernel の構築準備。ここを参考に、というかかかれていることをそのまんま実行。カーネル構築前に powernow-k8で電圧変更を可能にするパッチを当てる。ただ、そのままでは当たらなかったので一部手動修正。acpi_processor_performance構造体のacpi_dataが実体からポインタに変わっただけっぽい。あと、x86_64環境だと、powernow-k8.cはpowernow-k8モジュールではなくacpi-cpufreq.koモジュールに取り込まれるらしく、その影響でカーネルモジュールへのパラメータ渡しがどうもうまく動いてくれていないっぽい、つーことでfreq_listとvcore_listを手動でソースにベタに直書きして対処。

んで kernel構築しインスコし、手動構築していたr8168.koも忘れずに追加でインスコし、grug.confのdefaultを書き換えてmbr書き換えして再起動、、の前に このへん参考にお試し起動してみながら、いざ再起動して完了っと。

やったことをずらずらっと書くとこれくらいだけど、実際の作業はかなり苦労しましたです。。

# wget http://ftp.riken.jp/Linux/centos/5.2/updates/SRPMS/kernel-2.6.18-92.1.6.el5.src.rpm
# mkdir -p /usr/src/redhat/SOURCES
# rpm -ivh kernel-2.6.18-92.1.6.el5.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target x86_64 kernel-2.6.spec
# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/
# wget wget http://www.berniyh.net/powernow-k8-vcore_list-2.6.24-git-v3.patch
# patch -p1 < src/powernow-k8-vcore_list-2.6.24-git-v3.patch
# emacs -nw arch/i386/kernel/cpu/cpufreq/powernow-k8.c
(powernow-k8にパッチ当てる。failedしたとこの手動修正とfreq_list/vid_listの手動追加。x86_64もi386内のpowernow-k8.cが使われる)
# vi Makefile
(EXTRAVERSION をオレバージョンに改変し、既存のとごっちゃにならないようにする)
# make clean && make mrproper
# cp /boot/config-2.6.18-92.1.6.el5 .config
# make oldconfig
# make
# (20分くらいマターリして待つ)
# make modules_install
# /sbin/installkernel 2.6.18-92.1.6.el5-x1 arch/x86_64/boot/bzImage System.map
# cd ~rarul/src/r8168-8.005.00
# bash rarul.sh 2.6.18-92.1.6.el5-x1
(r8168.koインスコ用専用スクリプト。中身は前回の記事を見て。)
# /sbin/grub
grub> savedefault --default=0 --once
grub> quit
# (おもむろにgrub入れ替えるのは怖いので、、怖くない場合は↓)]
# vi /etc/grub.conf
(defaultを修正)
# /sbin/grub-install /dev/sda
# /sbin/shutdown -r now && exit
(再起動待って、dmesgを確認して以下のようなところがあればOK)
(なってなければ、uname -aで新規kernelが入っているのかどうかやdmesgに変なエラーがないのかとかを見ないといけないかと。)
powernow-k8: Requested 2300MHz with 1100mV
powernow-k8: Requested 2200MHz with 1050mV
powernow-k8: Requested 2000MHz with 1000mV
powernow-k8: Requested 1800MHz with 950mV
powernow-k8: Requested 1000MHz with 900mV
powernow-k8: 0 : fid 0xf (2300 MHz), vid 0x12
powernow-k8: 1 : fid 0xe (2200 MHz), vid 0x14
powernow-k8: 2 : fid 0xc (2000 MHz), vid 0x16
powernow-k8: 3 : fid 0xa (1800 MHz), vid 0x18
powernow-k8: 4 : fid 0x2 (1000 MHz), vid 0x1a

途中で ncurses-devel, unifdef, redhat-rpm-config, rpm-build を yumでインスコしたような気がするけど、それくらいは勝手に察知して対処してくれ>未来のオレ。あと手動で修正追加したパッチはこのへん

このアーカイブについて

このページには、過去に書かれたブログ記事のうちrarul.comサーバカテゴリに属しているものが含まれています。

前のカテゴリはPCハードウェアです。

次のカテゴリはWin32プログラミングです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0