- 投稿日:
WSL2環境などでinit.dを書かざるを得ないときのために。
確認環境
Ubuntu 22.04.5 LTS
書き方
細かいことは書いていないので適当に解釈すること。
/etc/init.d
に所有者root、パーミッション755とかでサービス名のファイルを作成作成したファイルに以下のようなコードを書く
#! /usr/bin/env bash ### BEGIN INIT INFO # Provides: gitea # Required-Start: $syslog $network # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: A self-hosted Git service written in Go. # Description: A self-hosted Git service written in Go. ### END INIT INFO # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin DESC="Gitea - Git with a cup of tea" NAME=gitea SERVICEVERBOSE=yes PIDFILE=/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME WORKINGDIR=/var/lib/$NAME DAEMON=/usr/local/bin/$NAME DAEMON_ARGS="web -c /etc/$NAME/app.ini" USER=git STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/1/KILL/5}" # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 do_start() { GITEA_ENVS="USER=$USER GITEA_WORK_DIR=$WORKINGDIR HOME=/home/$USER" GITEA_EXEC="$DAEMON -- $DAEMON_ARGS" sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ --background --chdir $WORKINGDIR --chuid $USER \\ --exec /bin/bash -- -c '/usr/bin/env $GITEA_ENVS $GITEA_EXEC'" } do_stop() { start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PIDFILE --name $NAME --oknodo rm -f $PIDFILE } do_status() { if [ -f $PIDFILE ]; then if kill -0 $(cat "$PIDFILE"); then echo "$NAME is running, PID is $(cat $PIDFILE)" else echo "$NAME process is dead, but pidfile exists" fi else echo "$NAME is not running" fi } case "$1" in start) echo "Starting $DESC" "$NAME" do_start ;; stop) echo "Stopping $DESC" "$NAME" do_stop ;; status) do_status ;; restart) echo "Restarting $DESC" "$NAME" do_stop do_start ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2 exit 2 ;; esac exit 0
- 後は条件分岐に書かれているコマンドに沿ってserviceを蹴れば動くようになる。止めたりするときはinit.dに定義したものを使う(init.dそのものは単にコマンド名で分岐処理しているだけ)
sudo service <作成したファイル名> start
- 投稿日:
手順
前提としてSSDは端末に取り付けているものとする。
- 取り付けたディスクがあるかどうかを確認する
/dev/sdaとかになっているはずなので、あとは容量などのプロパティを見て確認
sudo fdisk -l
- パーティションを作る
sudo fdisk /dev/sda
- pで確認
- nで新規パーティションを作成
- あとはエンター連打
- フォーマットする
sudo mkfs.ext4 /dev/sda
- マウント先を作る
sudo mkdir /mnt/sda1
- マウントする
sudo mount /dev/sda /mnt/sda1
- 自動マウントの設定をする
- SSDのUUIDを取得
sudo blkid
- fstabに定義を追加
blkidで拾ったUUIDを記述し、以下の内容を追記する
sudo nano /etc/fstab
UUID=243a3867-xxxx-xxxx-xxxx-xxxxxxxx /mnt/sda1 ext4 defaults 0 0
- SSDのUUIDを取得
- OSを再起動
- マウントされていることを確認
df -T
おまけの増設シーン
サブ機にNAS機能を持たせたかったので、SSDを買って増設したシーン。
今回購入したのはSanDisk SATA III SDSSDA-2T00-J26だ。今時SATA?という感じだが、サブ機のNVMeスロットは既に埋まっているのだ。
サブ機は普段は部屋の片隅に棚の代わりに置いているのだが、久々に引き出したら埃まみれだった。
しかしフロントのフィルターが優秀で中にはそこまで埃が入っておらず掃除の手間は少なかった。
このPCケースはキューブ型で、全ての面が取り外せるようになっておりメンテナンス性がいい。
しかしここでSSDの固定にネジが必要なことに気づき、ヨドバシでネジを注文し、一回休み。
PCを戻すのが面倒だったのだが、そのままだとLAN線がルーターに届かなかったので応急処置でティッシュ箱を置いた。一時期袋ティッシュにしていたのだが簡易定規や孫の手の代わりにならないため箱に戻したのだが大正解だった。余談だがティッシュの空箱があると、部屋に入ってきたカメムシを捕まえて部屋の外に逃がすのにも便利だ。
翌日になりネジが届き再開。ヨドバシの商品写真だと2個入りに見えたので、今後も見据えて4つ買ったのだが、まさかの10個入だった…。
ネジを止めて完成。このケースはMiniITX用ケースなのだが2.5インチと3.5インチに両対応したドライブベイがあって便利だ。しかも、このベイも取り外せるためメンテナンス性がいい。
ティッシュ箱でどうにかしていたネットワーク機器群も無事に元の高さに戻り事なきを得た。
実はSSD増設前もNASとして使っており、メイン機からマウントしているのだが、オフラインの間はExplorerやファイル参照ダイアログ周りがしょっちゅうフリーズして不便だった。マイクロソフトはWindows 11にずっと存在するこの問題をいい加減何とかしてほしい。
あとがき
今はまだマウントしただけで権限設定とかをしておらず、NASとしてもアクセスできないため、また整備を続けていきたい。
- 投稿日:
このコマンドをcronとかで回し続けてれば行けそう
事前準備
Value-Domainのコンパネから登録対象のDNSレコードにaaaaレコードを足しておく。
コマンド
ipaddr=$(ip a | grep 'scope global temporary dynamic' | perl -ne '/inet6 ([^\/]+)/; print $1')
echo 'https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=<ドメイン>&p=<パスワード>&h=<ホスト名>&i='$ipaddr
凡例
項目 | 値 |
---|---|
ドメイン | example.comみたいなルートドメイン |
パスワード | Value-DomainのDDNSパスワード |
ホスト名 | sub.example.comのsubの部分 |
参考
- 投稿日:
基本はこのコマンドを流せば行けるはず
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo do-release-upgrade
トラブルシュート
「There is no development version of an LTS available.」というエラーが出る
sudo do-release-upgrade
の実行時に-d
オプションを外す
サービスをstop出来ないみたいなエラーが出る
自動起動していない場合、PowerShellなどからWSLを殺せば解決する
wsl --shutdown
サードパーティのリポジトリ周りでこける
コケてるリポジトリを消せばよい。以下は一例
ls -la /etc/apt/sources.list.d
sudo rm -Rf /etc/apt/sources.list.d/grafana.list*
「Some third party entries in your sources.list were disabled. You can re-enable them after the upgrade with the 'software-properties' tool or your package manager.」というエラーが出る
無視してよい
- 投稿日:
WSL上のUbuntuで動作するnginxでHTTPSに対応したサーバーを作る方法。実機でも同様の手順でいける
確認環境
Env | Ver |
---|---|
nginx | nginx/1.18.0 (Ubuntu) |
mkcert | v1.4.4 |
Ubuntu | 20.04.6 LTS |
Windows 11 | 22621.3880 |
手順
- Windows側にmkcertを入れる
- mkcertで証明書を作る
mkcert sandbox.test
- 以下のpemファイルが生成される
sandbox.test.pem
sandbox.test-key.pem
- 生成されたpemファイルを
/etc/nginx/conf.d/ssl/
に移動する /etc/nginx/conf.d/sandbox.test.conf
を作成し、以下のような記述をするserver { listen 443 ssl; client_max_body_size 100m; server_name sandbox.test; ssl_certificate conf.d/ssl/sandbox.test+1.pem; ssl_certificate_key conf.d/ssl/sandbox.test+1-key.pem; access_log /var/log/nginx/sandbox.access.log; error_log /var/log/nginx/sandbox.error.log; # ファイルホスト用 # location / { # root /usr/share/nginx/html/sandbox; # index index.html; # try_files $uri /index.html =404; # } # APサーバーへのリバプロ用 location ~ ^/.*$ { rewrite ^/.*$ / break; proxy_set_header X-Request-Path $request_uri; proxy_set_header X-Host $host; proxy_pass http://127.0.0.1:9999; } # fastcgi用 location ~ \.php$ { root /usr/share/nginx/html/sandbox; fastcgi_pass unix:/run/php/php8.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
- nginxを再起動する
sudo service nginx restart
他の端末に証明書を撒く方法
mkcertのRoot CAをエクスポートして他の端末に突っ込めば、他の端末でもpemが流用できる