「ubuntu」タグアーカイブ

ubuntu 19.10 to 20.04 TLS

Windows に嫌気が差したときに時々使っているubuntu desktop環境を放っておいたらうっかりサポート期限が切れて通常のリポジトリから消えてしまった。。。そのままではメンテナンスバージョンへのアップデートもできないのでなんとか、19.10が残ってるサイト内かとミラーサイトを探したのですが、どこにもない(同期されてしまっている模様)

そんな中、ありがたい記事発見。なるほど、old-releasesというサイトが用意されてるのね。これもありがたい。

さくっと /etc/apt/sources.list のdeb http://jp.archive.ubuntu.com/ubuntu/ をhttp://old-release.ubuntu.com/ubuntu/ に変えて sudo apt update、sudo apt upgrade、 sudo do-release-upgrade で20.04 TLSに上げられました。

ちなみに http://security.ubuntu.com/ubuntuは何に変えたらいいのかよくわからんのでコメントアウトしておいたが、問題なくアップデートできた。(残しておくとエラー出る)

JetPackの接続エラー

サイトは普通に見えているし証明書エラーも出ていないのですが、JetPackの接続時に “cURL error 60: SSL certificate problem: certificate has expired”と言われて接続できない。もちろん証明書の期限は切れていない。

色々調べた結果、安い証明書を使っているので、中間証明書を入れないといけなかったようだ。Ubuntu 20.04の場合こんな感じ。中間証明書は証明書を買ったところに行けば入手できると思います。

$ sudo vi /etc/apache2/sites-enabled/default-ssl.conf
SSLCertificateChainFile /etc/ssl/certs/lambeden_dyndns_org.ca
$ sudo systemctl restart apache2

今更ながらWSL便利

Windows 10でLinuxディストリビューションを使えるって話題になって久しいですが、今更ながらWSL(Windows Subsystem for Linux)を使い始めました。

選択ディストリビューションはubuntu。20.04LTSが使えるようになってました。

普通に使ってる分にはネイティブなubuntuを使ってるのと変わらないレベルですね。びっくりです。

systemctl statusとか打って

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: ホストが落ちています

と言われて初めてあーほんとに偽物なんだと気づく(笑)

普通に /mnt/c/Users/XXX/Documentsとかにアクセスできてしまうし。これは確かに便利だは。

とりあえず、やっておくこと。

sudo apt update
sudo apt upgrade
sudo apt install language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
sudo apt install manpages-ja manpages-ja-dev

timezoneは元々JSTになってました。

参考

https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html

ubuntu 20.04 mysqlが起動しない問題

18.04 LTSから20.04に上げた時に確認したら普通に上がっていたと思うのですが。。。後日、再起動したらmysqldが正しく上がってきませんでした。

確認したら以下のログが

May 9 23:30:24 abel kernel: [ 5967.758467] audit: type=1400 audit(1589034624.217:34): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/sys/kernel/random/boot_id
" pid=6850 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

/etc/apparmor.d/usr.sbin.mysqldを確認すると、確かに許可されていなかったので、以下を追加したら問題なく起動しました。

/proc/sys/kernel/random/boot_id r,

MySQLが8系になって起動時にランダム値を使うようになったのかな。

Ubuntu 18.04 LTS -> 20.04 LTS on GCP

GCPで運用しているこのサイトのOSをUbuntu 18.04 LTSから20.04LTSにアップグレードした。

gcp用でも問題なく do-release-upgrade -d で上げることができた。なお、gcpでアップグレードを掛けると、Kernelは勝手に5.4.0-1009-gcpになる様だ。(apt/sources.listはhttp://us-west1.gce.archive.ubuntu.com/ubuntu/を参照している)

GCPの問題というわけではなく毎回出る軽微な設定の変更な何点かあった。

  • PHP7.2→7.4になったことによりApacheが起動しない問題
May 02 09:14:18 abel systemd[1]: Starting The Apache HTTP Server... 
May 02 09:14:19 abel apachectl[3698]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php7.2.load: Cannot load /usr/lib/apache2/modules/libphp7.2.so into server: /usr/l> 
May 02 09:14:19 abel apachectl[3693]: Action 'start' failed. May 02 09:14:19 abel apachectl[3693]: The Apache error log may have more information. May 02 09:14:19 abel systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE 
May 02 09:14:19 abel systemd[1]: apache2.service: Failed with result 'exit-code'. 
May 02 09:14:19 abel systemd[1]: Failed to start The Apache HTTP Server. 

phpモジュールをリンクしなおして解決
# a2dismod php7.2
# a2enmod php7.4
  • dovecot 2.3系での変更
May 2 09:20:53 abel dovecot: config: Warning: please set ssl_dh=</etc/dovecot/dh.pem
May 2 09:20:53 abel dovecot: config: Warning: You can generate it with: dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam -inform der > /etc/dovecot/dh.pem 
May 2 09:20:53 abel dovecot: imap-login: Error: Failed to initialize SSL server context: Can't load DH parameters: error:1408518A:SSL routines:ssl3_ctx_ctrl:dh key too small: user=<>, rip=126.203.14.194, lip=10.138.0.3, session=<zjVRRZ+ k7lt+yw7C>

May 02 09:23:52 abel dovecot[4362]: config: Warning: NOTE: You can get a new clean config file with: doveconf -Pn > dovecot-new.conf 
May 02 09:23:52 abel dovecot[4362]: config: Warning: Obsolete setting in /etc/dovecot/conf.d/10-ssl.conf:50: ssl_protocols has been replaced by ssl_min_protocol

DH keyを作れと言われるので以下で作る(2048を指定しないと1024で作られてしまう)
dd if=/var/lib/dovecot/ssl-parameters.dat bs=1 skip=88 | openssl dhparam 2048 -inform der > /etc/dovecot/dh.pem

/etc/dovecot/conf.d/10-ssl.confを以下の様に変更
ssl_dh = </etc/dovecot/dh.pem
# ssl_protocols = TLSv1 TLSv1.1 TLSv1.2
ssl_min_protocol = TLSv1

LightSailのdovecotでちょっとはまった話

LightSail Ubuntu dovecot 2.2.33.2-1ubuntu4.3 で最近なぜかiPhoneからメールが取れないことに気づいた。原因がよくわからなかったのだか、/var/log/mail.logにこんなメッセージが。

Aug 15 08:49:21 ls dovecot: imap-login: Disconnected (no auth attempts in 18 secs): user=<>, rip=126.203.xxx.xxx, lip=172.26.xxx.xxx, TLS handshaking: SSL_accept()
syscall failed: Connection reset by peer, session=<AGABaByQw8B+yw7C>

原因らしきもの – dovecot 2.2.33というかOpenSSL1.1.1?でSSL対応しなくなったようでTLSしか使えなくなった。だと思うのですが、iOS 12.4において普通にTLS使えるはずなんだけどなぁ。。。試しにiPhoneのメールアカウントを再登録してみたのですが、なぜかSSLの確認が通らない。。。やっぱり、OpenSSLの変更が関係している気がします。が、解決に至らず。全く繋がらないという訳ではなく一度繋がってしまえば問題ないのですが。。。

情報募集中!

AWS LightSailにお引越し

自宅サーバで動かしていたWordPress(これ)、Redmine、postfixなどをAWS LightSailに引っ越すことにした。

一番楽なのは Linux with WordPressかと思いきや。。。

以外に面倒。初期インストールされているWordPressやMysqlは/opt/bitnamiというところに置いてあって、ubuntuのパッケージではないんですよね。。。

Redmineをubuntuのパッケージから入れようと思うと、パッケージと辻褄が合わなくなってそれらをイチイチ調整しないといけないという。。。

Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

という訳で、結局OSだけのLightSailを選んでみました(笑)

選んだモデルはもちろん、一番安い$3.5/月(512MBメモリ、1vCPU、20GB SSD)モデル(笑)

さすがに今まで使ってた自宅の仮想マシンよりメモリがないので、多少チューニングしないとoom-killerが襲い掛かります(笑)

とりあえず必要なものインストール(ほかにも関連でちょいちょい入れてます)

# hostnamectl set-hostname ホスト名
# timedatectl set-timezone Asia/Tokyo
# apt install mysql-server
# apt install wordpress

個人サイトなのでApcheのプロセスそんなに要らないので変更

# vi  /etc/apache2/mods-enabled/mpm_prefork.conf
StartServers            1
MinSpareServers         1
MaxSpareServers         5
MaxRequestWorkers       10
MaxConnectionsPerChild  0 

なんせメモリが512MBなので、SWAP追加

# dd if=/dev/zero of=/swapfile bs=1024K count=512
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# vi /etc/fstab
/swapfile    swap    swap    defaults        0 0

ちなみに、WordPressの移行はエクスポート、インポートで行けるのですが、ちょとだけ注意点。同じドメインに移行する場合、後からドメイン名を変えようと思わない方がいいです。。。(笑)

127.0.0.53の正体

Ubuntu 18.04 LTSに上げたら DNSが引けなくなって
/etc/resolv.confを調べたら 127.0.0.53という謎のDNS指定があり、 書き換えても再起動したら元に戻ってしまう。。。

どうやら、127.0.0.53は systemd-resolvedというのがサービスしてるらしい。まぁ、ローカルIPの逆引きやらを垂れ流さないようにするためにちょっと賢いレゾルバをローカルにってことかな。

ただ、これが悪いわけではなく、問題は一緒についている options edns0 でした。YAMAHAのRTX810をDNS参照先にしてるのですが、RTX810は edns0に対応していないのでエラーになっていたという。。。

YAMAHAさん、edns0対応してくれないかな。。。

ちなみに systemd-resolvedが動いてると /etc/resolv.confは自動的に書き換えられてしまうので変更しても無意味。DNSサーバ参照設定は /etc/systemd/resolved.conf に書きましょう。

p.s.

ubuntuは/etc/resolv.conf -> ../run/resolvconf/resolv.conf のようにリンクを張っているのですが、なんで /run/systemd/resolve/stub-resolv.conf にリンクしないんだろう。。。これがsystemd-resolvedが書き換えているファイルな気がします。 systemd-resolved を再起動すると、このファイルが書き換わっているのですが、なんせ、リンク先が違うので反映されない。OSごと再起動すると反映されるので起動スクリプトかなんかでやってるようですが。なんでこんなことしてるんでしょうねぇ。

Ubuntu 16.04.05 LTS to 18.04.01 LTS Upgrade

久しぶりにUbuntuのUpgradeしました。私はLTSで運用してるので、前回は 16.04 .05からのUpgradeとなりました。

Upgrade自体は do-release-upgradeを叩くだけ。

ただその後、何が起こるかが問題な訳ですが、今回は割と軽微な問題だけでした。

1. dovecotが起動しない。dovecot.keyが無いそうです。私は元々自分で取得した証明書を使っていたので、置き換えて無事起動。

Sep 30 20:12:30 abel systemd[1]: Started Dovecot IMAP/POP3 email server.
Sep 30 20:12:30 abel dovecot[17512]: doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 13: ssl_key: Can't open file /etc/dovecot/private/dovecot.key: No such file or directory

2.zabbix Serverが起動しない。zabbix_server.confが読めないそうだ。MySQLのユーザ、パスワードがべた書きしてあるので、600にしていたのですが、ダメなようで。とりあえず、zabbixに対して開けました。

Sep 30 20:53:27 abel systemd[1]: Started Zabbix Server (MySQL/MariaDB).
Sep 30 20:53:27 abel zabbix_server[22846]: zabbix_server [22846]: cannot open config file "/etc/zabbix/zabbix_server.conf": [13] Permission denied
Sep 30 20:53:27 abel systemd[1]: zabbix-server.service: Main process exited, code=exited, status=1/FAILURE
Sep 30 20:53:27 abel systemd[1]: zabbix-server.service: Failed with result 'exit-code'.

格安SSL証明書取得

Appleがアプリからの通信のHTTPS化を義務づけたり、chromeのオレオレ証明書への対応が冷たくなったり(笑)と、ちゃんとした証明書が欲しくなり安い証明書を探していました。
結果、年額3.65ドルでSSL証明書を手に入れるで紹介されているGOGETSSLで購入することにしました。2018年3月時点で全般的に先の記事よりは相場が上がっているみたいです。軽く検索したところ国内では1,500円/年くらいはしている感じでした。私の購入したGGSSL Domain SSLは$4.90/年でした。
ちなみにドメインの所有権の確認をするためにメールを送ってくるので取得したい証明書のドメインでメールを受け取れる必要があります。確認メールのあて先はpostmaster,webmaster,adminなどオフィシャルなアドレスしか選べないのでそれらを受けられるようにしておく必要があります。
バリデーションメールが来たらそこに書かれているURLに行き、メールに書かれているバリデーションキーを入力してバリデーション完了です。
あとは、証明書発行画面でにCSRを入れれば証明書がメールで送られてきます。(送られてくる先はドメインオーナー確認で使ったアドレスではなく、ユーザ登録に使ったメールアドレスになります)
CSRの発行方法はOpenSSLでキーペアやCSRを作成する手順などをご参照ください。
私の場合は、Ubuntuなので、以下の様にcrtファイルとkeyファイルを指定してHTTPSサイトに取得した証明書を反映して完了です。

/etc/apache2/sites-enabled/default-ssl.conf
 SSLCertificateFile /etc/ssl/certs/xxxxx.crt
 SSLCertificateKeyFile /etc/ssl/private/xxxxx.key