2022/12/15(木)WSL2へのUbuntu 20.04セットアップメモ
投稿日:
Ubuntu22.04 LTSのターミナルのレンダリングが異常に重いのでバージョンを落として運用するためのメモ
Node.jsの開発環境だけ入れる
環境
| 環境 | Version |
|---|---|
| Windows 11 Pro | Build 22621.3155 |
| Ubuntu | 20.04.6 LTS |
| zsh | 5.8 (x86_64-ubuntu-linux-gnu) |
| MariaDB | Ver 15.1 Distrib 10.3.38-MariaDB |
| Docker | 20.10.17, build 100c701 |
| Git | 2.42.0 |
WSL2の構成
- 管理者権限のPowerShellで以下を流す
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - OS再起動
- Linuxカーネル更新プログラム パッケージをインストールする
- Ubuntuを入れる
Ubuntu側のセットアップ
適当な開発環境をサクッと。
~/.ssh/には予め鍵を入れておき、パーミッション700で作っておく。
# systemdの有効化
cat <<EOF | sudo tee /etc/wsl.conf
[boot]
command=service docker start; service nginx start; service mysql start;
[interop]
appendWindowsPath = false
[user]
default=ここにユーザー名
EOF
sudo apt update -y
sudo apt upgrade -y
sudo apt install -y \
zsh \
ssh \
net-tools \
traceroute \
unzip \
mariadb-server \
nginx \
git \
keychain
# chsh
sudo apt -y install unzip traceroute
chsh -s $(which zsh)
# Docker
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
# 依存関係のインストール
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Docker公式のGPG鍵を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# リポジトリをパッケージマネージャーに登録
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
# docker本体のインストール
sudo apt install -y dockerdocker-ce docker-ce-cli containerd.io docker-compose-plugin
# sudo緩和
sudo usermod -aG docker $USER
# WSLをリブート
# dot file設定
git clone https://github.com/Lycolia/my-dotfiles.git
rm -Rf my-dotfiles/.git/
mv my-dotfiles/.* .
rm -Rf my-dotfiles/
# Node.js @ nvm
export NVM_DIR="$HOME/.nvm" && (
git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
cd "$NVM_DIR"
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
nvm install --lts
# Keychain設定
cat <<'EOF' | tee -a ~/.zshrc
Keychain
keychain -q --nogui $HOME/.ssh/id_ed25519
source $HOME/.keychain/hostname-sh
EOF
トラブルシューティング
上記手順に書いてないことをすると起きるが、一応付記しておく
<3>WSL (639) ERROR: CreateProcessEntryCommon:345: getpwnam(USER_NAME) failed 0というエラーが出る
wsl.confの[user]セクションでdefault=USER_NAMEが存在しないユーザーを指定していると出る
Dockerやnginxのサービスが起動しない
systemdが有効になっていると起動しないので/etc/wsl.confからsystemd=trueを消す
keychainがError: Problem adding; giving upという
パーミッションを治す
chmod -R 700 .ssh
2022/11/21(月)WSL2のUbuntuにGrafanaを立てる
投稿日:
フルスクラッチで組むやつ
確認環境
| Env | Ver |
|---|---|
| Ubuntu | 20.04.4 LTS |
| nginx | 1.18.0 (Ubuntu) |
| MariaDB | 15.1 Distrib 10.3.34-MariaDB |
| grafana-server | Version 9.2.5 (commit: 042e4d216b, branch: HEAD) |
前提
- Windows側から
http://grafana.test/としてアクセスする - DBにはMariaDBを使用
hostsの編集
Windows側のhostsに以下を追記
127.0.0.1 grafana.test
各種環境のインストール
sudo apt update
sudo apt install -y nginx mariadb-server
sudo apt-get install -y apt-transport-https software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
nginxの設定
cat <<'EOF' | sudo tee /etc/nginx/conf.d/granafa.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream grafana {
server localhost:4000;
}
server {
listen 80;
server_name grafana.test;
access_log /var/log/nginx/grafana.access.log;
error_log /var/log/nginx/grafana.error.log;
location / {
proxy_set_header Host $http_host;
proxy_pass http://grafana;
}
location /api/live/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://grafana;
}
}
EOF
sudo service nginx start
MariaDBの設定
ユーザー作成
idとpwの部分は適当に変える
sudo service mysql start
sudo mysql
CREATE USER 'id'@'%' IDENTIFIED BY 'pw';
GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;
quit
外部接続テスト
適当なRDBクライアントから繋げればOK
grafanaの設定
sudo nano /etc/grafana/grafana.iniで適当にいじる
# The http port to use
http_port = 4000
# The public facing domain name used to access grafana from a browser
domain = grafana.test
sudo service grafana-server start- http://grafana.test/ へアクセス
- IDPW共に
adminが初期
- IDPW共に
DBの読み込み
- MariaDBに適当なDBとテーブルを作る
- Grafanaにログインする
- サイドバーから
Configuration-> Data sources - DBの情報を入れて接続
- 後はよしなにやる
2022/02/28(月)MSYS2のセットアップメモ
投稿日:
確認環境
msys2-x86_64-20260322
セットアップ
MSYS2から落としてインストールする。
pacman -Syuu
入れとくと便利なものたち
pacman
2023以前の古いMSYS2ではpacman -sS パッケージ名を毎回入れないとインストールできないケースがあるかもしれない。
pacman -S --noconfirm unzip
pacman -S --noconfirm diffutils
pacman -S --noconfirm openssh
pacman -S --noconfirm patch
pacman -S --noconfirm perl
pacman -S --noconfirm zsh
pacman -S --noconfirm git
pacman -Sy --noconfirm openbsd-netcat
# prompt用に退避させる
mv /usr/bin/git /usr/bin/msys2_git
バイナリ追加
- jq
- MSYS2のパッケージとして入れず、chocoから入れる
- dig v9.16.50
\usr\local\binに.exeと.dllを全部入れる- Windowsサポートは9.16系までしかない
dotfileの設定
呼び出しを簡略化する
毎回こんな感じで呼ぶのは面倒なので簡略化する。
C:/env/msys64/msys2_shell.cmd -defterm -here -use-full-path -no-start -msys -shell zsh
C:/env/msys64/run_zsh.cmdのようなファイルを作り、以下の内容を書くことでC:/env/msys64/run_zsh.cmd '/c/path/to/hoge.sh'のようにしてシェルスクリプトを実行できるようになる。
@echo off
set MSYSTEM=MSYS
set MSYS2_PATH_TYPE=inherit
set CHERE_INVOKING=1
C:\env\msys64\usr\bin\zsh.exe -l %*
外部連携
呼び出しを簡略化している前提
VSCode連携
{
"terminal.integrated.defaultProfile.windows": "MSYS2",
"terminal.integrated.profiles.windows": {
"MSYS2": {
"overrideName": true,
"path": ["C:\\env\\msys64\\run_zsh.cmd"]
}
}
}
Windows Terminal連携
{
"defaultProfile": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
"profiles": {
"defaults": {},
"list": [
{
"commandline": "C:/env/msys64/run_zsh.cmd",
"font": {
"face": "Consolas",
"size": 11
},
"guid": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
"icon": "C:/env/msys64/mingw64.ico",
"name": "MINGW64 / MSYS2",
"colorScheme": "VSCode"
}
]
},
"schemes": [
{
"name": "VSCode",
"background": "#1e1e1e",
"foreground": "#d4d4d4",
"black": "#000000",
"blue": "#2472c8",
"brightBlack": "#666666",
"brightBlue": "#3b8eea",
"brightCyan": "#29b8db",
"brightGreen": "#23d18b",
"brightPurple": "#d670d6",
"brightRed": "#f14c4c",
"brightWhite": "#e5e5e5",
"brightYellow": "#f5f543",
"cyan": "#11a8cd",
"green": "#0dbc79",
"purple": "#bc3fbc",
"red": "#cd3131",
"white": "#e5e5e5",
"yellow": "#e5e510"
}
]
}
msys2_shell.cmdのCLI Optionsの意味合い
msys2_shell.cmdの中身を読んで机上で書いているだけなので実際そう動くのかの検証はしていない。
起動パラメーターについては、:checkparamsラベルの中のループして合致するものがあれば環境変数を立て、既知の環境変数であればmsys2_shiftCounterという変数をインクリメントして、MSYS2用のパラメーターと、ユーザーパラーメーターの教会の切り分けをする実装となっている。これはつまり後続処理でmsys2_shiftCounter個分のパラメーターを読み飛ばし、それ以降のパラメーターを処理するためにある。
-mingw32 | -mingw64 | -ucrt64 | -clang64 | -msys[2]
それぞれで実行環境が変わるが、MSYS2用アプリケーションの開発環境用設定のため、-msysで基本的に問題ない。
内部的には環境変数MSYSTEMに対して、対応する値を設定している。-msysと-msys2は等価。
-defterm | -mintty | -conemu
開くターミナルの指定。
-defterm- 標準ターミナルで開く
- Windows TerminalやVSCodeで開く場合はこれを指定する
-mintty- Minttyが起動する
-conemu- Conemuが起動する
内部的にはシェルを直に蹴るか、minttyやconemuにシェルの起動パラメーターを渡しているかの違いがある。
-here
現在の作業フォルダをカレントディレクトリとして開く。
内部的には環境変数CHERE_INVOKINGに対しenabled_from_argumentsを設定している。
MSYS2公式ではCHERE_INVOKINGには1を設定するそうだが、手元で見た限りenabled_from_argumentsを設定しても動作は変わらなかった。恐らく単純に変数値が設定されているか、そうでないかで処理が分かれていると思われる。
参考までにCHERE_INVOKINGを未設定にするとMSYS2のホーム(~)で起動した。
-where DIRECTORY
指定ディレクトリをカレントディレクトリとして開く。
内部的にはcmdでシェルを起動する前にcdしてるだけ。
-[use-]full-path
Windowsのパスを継承する。
内部的には環境変数MSYS2_PATH_TYPEにinheritを設定している。
-no-start
新窓で開かない。
内部的には指定した場合はシェルが直に起動し、指定しない場合startコマンドでシェルが起動するようになっている。
-shell SHELL
ログインシェルを指定する。
例えば-shell zshならzshがログインシェルになる。未指定の場合、bashがログインシェルになる。これはmsys2_shell.cmdでデフォルト値がbashになっているため。
参考までにmsys2_shell.cmdのset "LOGINSHELL=bash"を書き換えるとアップデート時に上書きされて消えるので、しないほうがいい。
-help | --help | -? | /?
ヘルプの表示。
内部的にはprinthelpラベルに飛んでいる。
トラブルシューティング
zsh-newuser-install: startup files exist, aborting. Use the argument -f if you want to force the function to be run again.と出る
zsh-newuser-install: startup files exist, aborting.
Use the argument -f if you want to force the function to be run again.>
と出る場合の対処方法。
msys64/usr/share/zsh/scripts/newuserというファイルを消せば出なくなる。
2021/04/01(木)Ubuntu 20.04にWindows 10からRDP接続する
投稿日:
手順
xrdpが入っていなければxrdpをインストール- Desktop版なら最初から入ってた気もする
3389ポートを開けるsudo ufw allow 3389
- オートログインを殺す
sudo sed -ie 's/AutomaticLoginEnable=true/AutomaticLoginEnable=false/' /etc/gdm3/custom.conf
- あとは再起動してWindowsのリモートデスクトップから繋げて画面が映ればOK
sudo reboot
トラブルシューティング
接続したけど画面が真っ暗
pkill gnome-sessionでログインセッションを殺す
左にあるDockが表示されない・設定に外観がない・その他物理接続時とデスクトップの表示が異なる
sudo nano /etc/xrdp/startwm.shして以下の内容を追記する
export DESKTOP_SESSION=ubuntu
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
2020/08/21(金)Raspberry Pi 4のセットアップメモ
投稿日:
WindowsからのRDP接続を前提として主にSSDブート、リモート環境構築、Let's Encrypt、LAMP、Nodeの環境構築を行う
🌏 環境
Windows側の環境は省略
| 環境 | バージョン |
|---|---|
| Raspbian | 2020-05-27-raspios-buster-arm64 |
| acme.sh | 2.8.7 |
| PHP | 7.3.19-1 |
| MariaDB | 10.3.23 |
| phpMyAdmin | 5.0.2 |
| Node.js | 10.21.0 |
| npm | 5.8.0 |
| Yarn | 1.22.4 |
📜 Raspberry Pi 4をUSB SSDからブートする
まずはここから
📞 リモート環境の構築
本体操作によるセットアップ
Headlessでできるならよしなにしてもいい気はする
- ラズパイにモニタ、キーボード、電源の通ったUSB-Cケーブルを接続
- 数分待つとセットアップウィザードが出てくるので適当に進める
- この途中でWiFiルーターに繋がるように設定しておく
- セットアップウィザードが終わったらWinKeyでメニューを出し設定> Raspberry Piの設定でSSHとVNCを有効
- シャットダウンする
- 電源USB以外を全部抜く
パッケージ情報の更新
sudo apt-get update
XRDPのインストール
Windows10からのRDP接続で現状操作不能だが一応書いておく
sudo apt-get install xrdp- Windows 10のリモートデスクトップ接続から接続確認
SSHD設定
待受ポートの変更と認証方式の変更
待受ポートの変更と外部接続
sudo nano /etc/ssh/sshd_configPort 22を適当なポートに変更
認証方式の変更
- RLoginの機能で認証キーを生成
sudo nano /etc/ssh/sshd_configで以下の設定に変更
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
~/.ssh/authorized_keysを作る
mkdir ~/.ssh/
nano ~/.ssh/authorized_keys
- 公開鍵をコピーして
~/.ssh/authorized_keysの一行目に貼り付ける sudo /etc/init.d/ssh restartでSSHDを再起動- RLoginから再接続できたらOK
AndroidからSSH接続
- RLoginから秘密鍵を吐く
- JuiceSSHで秘密鍵を読む
- 終わり
Uncomplicated Firewallのインストールと設定
sudo apt install ufwsystemctl start ufwsudo ufw enableでFirewallを有効化SSHの穴をあける
sudo ufw allow SSHのポート番号
VNSの穴をあける
WindowsRDPからラズパイに接続
蹴られるので
cat /var/log/ufw.logでログを見る蹴られている
DPTが3389だったのでsudo ufw allow 3389- help.ubuntu.comによると
SPTがSource Port、DPTがDestination Portということらしい
- help.ubuntu.comによると
sudo ufw status numberedで設定内容を確認SSHとRDPの接続確認
🔐 Let's Encrypt! DDNS Challenge
💡 LAMP環境構築
MariaDB, Apache, PHPのインストール
この環境でのApacheはphpMyAdminを動かすためだけに使用(外部公開しない)
sudo apt install -y mariadb-server apache2 php php-mysql libapache2-mod-php
MariaDBの設定
外部接続しないケース
sudo mysql_secure_installationsudo mysqlCREATE USER 'id'@'localhost' IDENTIFIED BY 'pw';GRANT ALL PRIVILEGES ON *.* TO 'id'@'localhost' WITH GRANT OPTION;
外部接続するケース
sudo mysql_secure_installationsudo mysqlCREATE USER 'id'@'%' IDENTIFIED BY 'pw';GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;quitsudo nano /etc/mysql/my.cnfで最終行に以下を追加
[mysqld]
skip-networking=0
skip-bind-address
Apacheの設定
sudo nano /etc/apache2/apache2.confで既存の設定をコメントアウトして適当にルートを追加
<Directory /home/pi/Public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
sudo nano /etc/apache2/sites-available/000-default.confも同様に変更
Apacheを動かすユーザーの変更
sudo nano /etc/apache2/envvarsexport APACHE_RUN_USER=www-dataをexport APACHE_RUN_USER=piに変えるsudo /etc/init.d/apache2 reloadでここまで反映
phpMyAdminのインストール
何故かaptでインストールできなくなってるので手動インストール。Windowsマシンからブラウザを利用して設定する
- https://www.phpmyadmin.net/ からphpMyAdminをダウンロード
- Apacheの公開ディレクトリに置く
sudo ufw allow 80sudo ufw reloadhttp://192.168.xxx.xxx/phpmyadmin/setupへアクセス- 適当に設定し、ダウンロードボタンを押すと設定ファイルが落ちてくるのでphpmyadminのルートに置く
http://192.168.xxx.xxx/phpmyadmin/setupへアクセスしエラーになることを確認http://192.168.xxx.xxx/phpmyadminへアクセスし、MariaDBのIDPWでログインできることを確認- この環境では80番ポートは外部公開してないので問題ないが、外部公開する場合は.htaccessをおいてローカル以外のアクセスを蹴ると良い
📈 Node.jsのインストール
sudo apt install -y nodejs npmsudo npm i -g n yarn
🎈 おまけ
- Gitのインストール
sudo apt install -y gitで2.20.1が入ることを確認(微妙に古い)
- composerのインストール
sudo apt install -y composerで1.8.4が入ることを確認(かなり古い)