「ubuntu」タグアーカイブ

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

 

ddclientのIPv6対応

先日、WebサイトをIPv6対応にしたのですが、DynDNSのIPv6対応がまだできていなかったのでしました。
今は、サーバはUbuntu 16.04で、ddclientを使っています。しかし、パッケージ3.8.2-2ubuntu2はIPv6に対応していないため、gitからIPv6対応版を持ってきました。DynDNSの仕様とddclientの仕様の問題で、v4->v6の順に2度登録する必要があります。(v4とv6を同時に登録するAPIがないっぽい。v4エントリを更新するとv6情報がリセットされるので、v4->v6で登録するする必要あり。)

$ git clone https://github.com/ddclient/ddclient
# cp ddclient /usr/local/sbin
# cd /usr/sbin
# mv ddclinet ddclient.org; ln -s /usr/local/sbin/ddclient
ddclient_v6.confは以下にする以外はv4と同じ
ipv6=yes
use=web, web=checkipv6.dyndns.com

IPv6対応のために必要

# apt-get install libdata-validate-ip-perl

パッケージ互換性のたために/etc/ddclient.confはリンクとして残す

# cd /etc/
# mkdir ddclient
# mv ddclient.conf ddclient/ddclient_v4.conf
# ln -s ddclient/ddclient_v4.conf ddclient.conf

私はdaemonモードで動かしていたのですが、2回実行する必要があるので今回はcronで実行することに。

# cat /etc/default/ddclient
run_daemon="false"

cronに登録

# cat /etc/cron.d/ddclient
*/5 * * * * root (/usr/local/sbin/ddclient -file /etc/ddclient/ddclient_v4.conf; /usr/local/sbin/ddclient -file /etc/ddclient/ddclient_v6.conf) | /usr/bin/logger -t ddclient

うまくいっているようです。

Aug 14 14:55:01 abel CRON[7472]: (root) CMD ((/usr/local/sbin/ddclient -file /etc/ddclient/ddclient_v4.conf; /usr/local/sbin/ddclient -file /etc/ddclient/ddclient_v6.conf) | /usr/bin/logger -t ddclient)
Aug 14 14:55:02 abel ddclient: SUCCESS: updating lambeden.dyndns.org: good: IP address set to 126.203.135.154
Aug 14 14:55:03 abel ddclient: SUCCESS: updating lambeden.dyndns.org: good: IP address set to 2400:2412:cc0:ef00:20c:29ff:fe9f:326c

ubuntu 14.04 to 16.04 Upgrade

重い腰を上げてやっとこさ。16.04に上げました。
まぁ、何も起こらなければ do-release-upgrade を叩くだけで終了なわけですが、今まですんなりいったことはないので(笑)
さて、今回もやっぱり色々出ました。

    1. ネットワークが上がらない。
      do-release-upgradeの後再起動したら見事にネットワークに接続できなくなった。調べてみたらインターフェース名がeth0からens32に変わっていた。RHEL7でもあったあれですね。回避するには以下の手順。

      /etc/default/grubに
      GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
      と書いて
      # update-grub
      # reboot

      参考) https://askubuntu.com/questions/767786/changing-network-interfaces-name-ubuntu-16-04

    2. squid3のアップデートが失敗する。
      squid-common (3.5.12-1ubuntu7.3) を設定しています ...
      squid (3.5.12-1ubuntu7.3) を設定しています ...
      Removing obsolete conffile /etc/squid3/msntauth.conf ...
      Preserving user changes to /etc/squid/squid.conf (renamed from /etc/squid3/squid.conf)...
      stat: '/var/spool/squid3' を stat できません: そのようなファイルやディレクトリはありません
      chown: '/var/spool/squid3' にアクセスできません: そのようなファイルやディレクトリはありません
      dpkg: パッケージ squid の処理中にエラーが発生しました (--configure):
       サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
      Error in function:
      ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/squid.0.crash'

      どうも、/var/spool/squid3というディレクトリを探しに行って見つからないようです。squidはもう使ってないので削除しようとしたのですが、同様なエラーが出て先に進まないので/var/spool/squid3を作って実行したら消せました。

    3. do-release-upgradeした後、大量にUpdateパッケージがある。
      squidのアップデートが失敗してそこで終わってしまったせいか、大量に手動でアップデートしないといけないものがありました。地道に apt-get update *** を叩きまくれば終わります。。。
      途中いくつかこけるのがあります。例えばsa-compileがこけました。これは先にgccをupgradeすれば治ります。たいていの場合は依存関係です。
    4. redmineが消える
      apt-get install redmine すればとりあえず入る。設定も残ってました。
    5. screenが起動に失敗する
      $ screen
      Cannot make directory '/var/run/screen': 許可がありません

      と言われる。

      $ sudo mkdir /var/run/screen
      $ sudo chmod 777 /var/run/screen

      で起動するようになる。

    6. PHPが7.0になって初期に戻る。
      必要に応じて/etc/php/7.0/apache2/php.ini辺りを弄る必要がある
      PHP7.0になったことで以下の問題も出た。

      • Pukiwiki-1.4.7が動かない。PHP7に対応した1.5.1が出てるので上げる必要がある
      • WordPressのpukiwiki pluginが動作しない。もうメンテされてないのでこの際使うのを止めた。(たぶん、1.5.1を入れて少し手直しすれば動くと思うけど、メンテし続けるのが面倒なので)。ただそうするとすでにPukiWikiフォーマットで作ったページが
        PukiWiki_for_WordPress HttpError: 500 Internal Server E […]

        となってしまう。。。PukiWikiプラグインを無効化すればソースをそのまま表示はしてくれるので、そのままでもいいか。という気もする。。。
        http://blog.makotokw.com/portfolio/wordpress/pukiwiki_for_wordpress/

    7. dovecotが起動しない
      apt-get install dovecot-managesieved

      が足りなかった模様。

    8. emacs23でanthyが起動しない。
      File error: Cannot open load file, anthy

      よくわからないがemacs24にしたら問題なくなった。.emacs.elは特に変更していない。たぶん、バイトコンパイルし直せばemacs23でも動いたのかもと思っています。

    9. logrotateでrsyslogをreloadできない。/etc/logrotate.d/rsyslog内のpostrotateでreload rsyslog としていたところが、invoke-rc.d rsyslog rotateに変わった。現在の設定を引き継ぐを選んでアップデートした場合は、手で直す必要がある。

    以上、今回も盛りだくさんでした(笑)

ubuntu 14.04 dovecot auth error

update後、急にwanderlustからメールが読めなくなった。
mail.logに不審なログが。
Jun 20 00:14:10 abel dovecot: auth-worker(21971): Error: pam(xxxx,127.0.0.1): pam_start() failed: Critical error – immediate abort
調べてみると、どうやらlibpam-smbpass の問題らしい。私はsmb認証は使ってないのでさくっと apt-get remove libpam-smbpass したら直った。うーむ。
https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1571883

redmineとsvnの連携 on ubuntu 12.04LTS

[pukiwiki]
Redmineで上がっているチケットに対する対応を実際の設定ファイルのバージョン管理と連動させる事ができる。
http://redmine.jp/tech_note/subversion/
このURLに書かれている内容は、既にsvnのリポジトリが作成されている前提なので、先にSVNのリポジトリ設定をしておく必要がある。
ubuntu 12.04 LTSの場合、以下の様な手順で可能。
+subversionのインストール
# apt-get install subversion subversion-tools libapache2-svn
+apache経由で管理できるようにする(svnとredmineが同じマシンに入ってるので、ファイルを直接指定すこともできるが今回はapache経由でアクセスする様にしてみる)
# vi /etc/apache2/mods-enabled/dav_svn.conf

DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/redmine/htpasswd
Require valid-user
Order deny,allow
Allow from 192.168.x.0/24
Deny from All

+認証用パスワードの設定
# htpasswd /etc/redmine/htpasswd ユーザ名
+apacheに設定反映
# apachectl configtest
Syntax OK
# apachectl graceful
+svnリポジトリ作成
# mkdir /var/lib/svn
# cd /var/lib/svn/
# svnadmin create config
# chown -R www-data:www-data config
+redmineのリポジトリ設定~
redmineのWebUIから[管理]-[設定]-[リポジトリ]から使用するバージョン管理システムでSubversionのチェックが入っており、グリーンのレになっていることを確認する。(だめな場合は、パッケージが入っているか、パスが通っているかなど確認する)
+redmineのWebUIから[管理]-[プロジェクト]でリポジトリを追加するプロジェクトを選び、[モジュール]でリポジトリにチェックを入れ、保存。リポジトリタブを選び、
バージョン管理システム Subversion
URL http://192.168.x.x/svn/config
ログイン ユーザ名
パスワード htpasswdで付けたパスワード
これでプロジェクトページに行けば、リポジトリというメニューが追加されているはずである。
最初のは空っぽなので、svnでインポートするなり、コミットするなりご随意に 🙂
WindowsPCでSVNを扱うなら TortoiseSVN がおすすめです。~
http://sourceforge.jp/projects/tortoisesvn/
参考
-http://wisdomtrees.net/?p=271
-http://redmine.jp/tech_note/subversion/
[/pukiwiki]