トラブル
使用しているubuntuで/var/log/syslogを覗いたところ、大量かつ頻繁に
systemd-udevd[24420]: Process '/bin/chmod 0666 ' failed with exit code 1.
と、いったかんじのエラーが出ていた。
調べたところ
systemd-udevdが出てくることから、 /etc/udev/rules.d/ 内の設定ファイルが関係しているのではと疑った。 そのディレクトリーの中のファイルで /bin/chmod 0666 があるのは、、/etc/udev/rules.d/99-sbig.rules だけであった。そのファイルの中に
# SBIG ST-L cameras
SUBSYSTEM=="usb", ACTION=="add", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0002" , ENV{DEVTYPE}="usb_device", \
RUN+="/sbin/fxload -I /lib/firmware/sbiglcam.hex -D $env{DEVNAME}"
RUN+="/bin/chmod 0666 $env{DEVNAME}"
# SBIG ST-402/1603/3200 cameras
SUBSYSTEM=="usb", ACTION=="add", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0003" , ENV{DEVTYPE}="usb_device", \
RUN+="/sbin/fxload -I /lib/firmware/sbigfcam.hex -D $env{DEVNAME}"
RUN+="/bin/chmod 0666 $env{DEVNAME}"
と、いったコードがあった。
USB ID DAtabase (the sz development) のサイトでidVendorとidProductから調べると、
0x0D97 Santa Barbara Instrument Group (SBIG)
0x0001 SBIG Astronomy Camera (without firmware)
であった。puroduct id=2,3についてはわからず。
work around
対処方法がわからなかったが(何か月か前に接続した激安カメラが関係か?)、相当しそうなものは接続していないので、ファイルを消して見ることにした。 syslogにfailedメッセージを吐くことは止まった。 副作用がないかどうかは不明だが、特に問題なく動いてそう。
sudo mv /etc/udev/rules.d/99-sbig.rules /etc/udev/rules.d/99-sbig.rulesbk
Raspberry pi 2B v1.1で、SDHCでブートし、以降HDDを使う設定にしたが、何かの拍子で(おそらくrebootで)sudoが無効になってしまった。 例えば、sudoで行っているのに読み込み専用ファイルですとかのエラーが出る。
対応
sudo mount -o remount,rw / を実行すると、(一部エラーの表示がでるが)復活した。
SDHCで立ち上がっている?
※ /etc/rc.localに記述してもダメ
また、systemctl --failed で見てみると、xrdpやpostfix, dovecot 他 が立ち上がっていない。
/etc/fstabに書いたがそこが読まれなかったのか?
raspberry piでサーバー運用しているので稼働状況をメールで自動的にメールで送らせるようにする。
前提条件
OS : raspberry pi OS (buster)
mail server: postfix+dovecot (これでないといけないというわけではない)
範囲 : LAN内でのみ使用 (securityは考えない)
方針
- LAN内でのみ使用
- postfixでサポートのsendmailインターフェースを使う
(mutt でトライしたがうまく動かせず断念) - 簡単のためシェルを使う
- メールのsubjectにはアルファベットを使う。
- 計測するデータは、cpuの温度、メモリー使用状況、SSD使用容量、smart状況
メール送信用コマンド
mytools/health.sh | sendmail -i -t
mytools/health.shが計測用シェル兼sendmailへのインターフェース部
シェルの中身
#!/bin/bash
echo from: sender_name@domain_name
echo to: receiver_name@domain_name
echo subject: raspi server status report
echo Content-Type: text/plain;charset="UTF-8"
echo
echo ------ date and time ----------
date
echo
echo ----- cpu temparature -----------
vcgencmd measure_temp
echo
echo ------- memory usage -----------
free -h
echo
echo -------- device usage ---------
df -h
echo
echo ------- SSD smart data ----------
smartctl -d sat -A /dev/sda
sender_name, receiver_name, domain_name, /dev/sdaは実際の値に調整する。
ユーザー追加
sudo useradd sender_name -s /sbin/nologin
sudo passwd sender_name
sudo mkdir /home/sender_name
sudo chown sender_name:sender_name /home/sender_name
下2行の必要性がよくわからないが、/var/log/mail.errに出てくるエラーを消すためにいろいろしていて、その結果上記の様にしたところメール送信ができたため。
cronの設定
次の様な内容のファイル(例えばhealthcheck)を作成し、/etc/cron.dに配置する。
なお、オーナーをrootにしておかないとcronがエラーになったのでrootにする。
超参考となったサイト:https://www.server-memo.net/tips/etc-crontab.html
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/home/pi
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,$
# | | | | |
# * * * * * user-name command to be executed
7 10 * * * root /home/pi/mytools/health.sh | sendmail -i -t
7 22 * * * root /home/pi/mytools/health.sh | sendmail -i -t
sudoがcronの中で使おうとすると、"TTY onknown"となったのでsudoを使わないようにするsmartctlをcronの中で使えるようにする。従ってユーザーもrootとする。
最後は、メーラ側の設定を行いおしまい
WEBサーバーの異常をメールで知るためにLan内専用のメールサーバーを構築する事にした。
いろんなサイトを参考にしたが、"Job for dovecot.socket failed." が発生して手こずったので記録として残す。
環境・前提条件
OS : Raspberry pi OS (Buster)
SSL : letsencrypt
protocol : とりあえずエラーにならなかったもの
lan内に限るので、認証やsslは取り合えず行わない。また、当面メールボックスで行う
参考にしたサイト
Job for dovecot.socket failed. が発生することが多く、最終的に下記サイトを参考にした。
'https://qiita.com/bzy/items/6edc8cfe48cba3eacb18'
パラーメタの説明は、下記サイトが参考になる
' https://w.atwiki.jp/sanosoft/pages/155.html '
ユーザーの追加
sudo useradd user-name -s /sbin/nologin
sudo passwd user-name
パスワードを入れ間違えたときは
sudo passwd -d user-name でパスワード消去して登録しなおす
sudo mkdir /home/user-name
sudo chown user-name:user-name /home/user-name
postfixのインストール
ほとんど設定は上記サイトに従った。それゆえ詳細は上記サイトの方が詳しいです。
なお、aptでのインストール中の質問に対しては、 'http://memorandum.cloud/2020/09/22/メールサーバー構築postfixdovecot-raspberry-pi%EF%BC%88ラズベリーパイ/' を参考にした。
sudo apt install postfix
sudo nano /etc/postfix/main.cf
myhostname = mydomain.com
mydomain = mydomain.com
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
ポート番号を25から587に変更する
sudo nano /etc/postfix/master.cf
dovecotのインストール
sudo apt install dovecot-pop3d
sudo nano /etc/dovecot/dovecot.conf
disable_plaintext_auth = no
# Enable installed protocols
protocols=pop3
listen = *
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
sudo nano /etc/dovecot/conf.d/10-master.conf
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
# port = 995
# ssl = yes
}
}
sudo nano /etc/dovecot/conf.d/15-mailboxes.conf
# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf.
namespace inbox {
inbox = yes # <- この部分を追加
再起動
sudo systemctl restart postfix
sudo systemctl restart dovecot
一応、これでようやく動いた (いろいろ行ったので一部記入もれあるかも)
WordPressをインストールし、新規投稿をしようとすると、「更新に失敗しました。 返答が正しい json レスポンスではありません。」と表示されるトラブルが起こった。 その際に行った対応策を備忘録として残す。
私の場合、2つの原因があった。
原因1: Apacheにrewriteを登録するのを忘れていた。
対応1: 以下のコマンドを実行しApache再起動
sudo a2enmod rewrite
原因2: Apacheにoverrideを許可していなかった
対応2: 下記の様にConfigファイルを修正してoverrideを許可した。その後Apache再起動。
sudo nano /etc/apache2/apache2.conf
以下のところを変更 (AllowOverrideの値をNoneからAllへ変更)
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>