WSL2 初期設定、Sambaなど

WSL有効化

・WSLの有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

・Virtual Machine Platformの有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

上記2つはoptionalfeaturesから直接チェックしてもOK
・Linux用Windowsサブシステム
・仮想マシン プラットフォーム

WSLコマンド

・インストール済み
wsl –list

・インストールできるもの
wsl –list –online

・WSL1or2どちらで動作しているか。バージョン確認
wsl –list –ver

・WSL、カーネルのバージョン確認
wsl –version

・WSL、カーネルのバージョンアップ
wsl –update

今回は、
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
から
WSL バージョン: 2.1.4.0
カーネル バージョン: 5.15.146.1-2
になった。

***

・インストール
wsl –install -d Ubuntu-22.04

・既定に設定
wsl -s Ubuntu-22.04
(–set-default)

・削除
wsl –unregister Ubuntu-22.04

・リセット
wsl –unregister Ubuntu-22.04
wsl –install -d Ubuntu-22.04
wsl -s Ubuntu-22.04

・起動
wsl
(デフォルトのディストリビューションにログイン)

・終了(削除ではない)
wsl –shutdown
(wsl –terminate Ubuntu-22.04でも終了できる)

・DNS指定
(名前解決できないとエラーがでる)

sudo vim /etc/wsl.conf

[network]
generateResolvConf = false

を追加
(WSL起動のたびresolv.confが上書きされるため)

sudo vim /etc/resolv.conf
を開き
nameserver 8.8.8.8
または
nameserver 192.168.11.1
など、追加する。
(通常は、起動する度にリセットされる)

ポートフォワード

・wslのIPアドレス確認
wsl -e hostname -I

・ポートフォワード(ポート1つ指定)
netsh interface portproxy add v4tov4 listenport=80 listenaddress=* connectport=80 connectaddress=172.19.144.232

・確認
netsh interface portproxy show all

・削除
netsh interface portproxy delete v4tov4 listenport=80

・ファイアーウォール
netsh advfirewall firewall add rule name=”wsl” dir=in action=allow protocol=tcp localport=80,53 profile=private,public

・削除
netsh advfirewall firewall delete rule name=”wsl”

ポートフォワード(PowerShell)

 

GUI

geditなど、使う場合

sudo apt install gedit
sudo gedit /etc/samba/smb.conf
で起動できる。

Samba

・インストール

sudo apt update
sudo apt install samba

・共有フォルダ

sudo vim /etc/samba/smb.conf

[TEST]
path = /home/user
writable = yes
guest ok = yes

を追加。
([]が共有名になる。)

・パーミッション
sudo chmod o+rwx user

Samba-AD

・conf削除
sudo rm -f /etc/samba/smb.conf

・provision
sudo samba-tool domain provision –use-rfc2307 –interactivegyou

SSH接続

sudo apt update
sudo apt install openssh-server

sudo systemctl start ssh
system has not been booted with systemd as init system …
というメッセージが表示される。

通常PID1がsystemdだが、WSL2においては/initがPID1になっている模様。

sudo /etc/init.d/ssh start
sshd: no hostkeys available — exiting.
というメッセージが表示される。

sudo ssh-keygen -A

sudo vim /etc/ssh/sshd_config
から
PasswordAuthentication yes

これでTeraTermからlocalhost:22で接続できる。

・リセットする場合
アプリと機能>Ubuntu>詳細オプション>リセット
スタートメニューにあるUbuntuから起動するとユーザー名、パスワード
を決めるところから。

.NET Core SDKのインストール

https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu
を参考にする。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-3.1

・作成方法(WSL)

アプリ作成
dotnet new console -o myapp

実行
dotnet run
(myappの中で実行)

・作成方法(Visual Studio)

Visual StudioでASP.NET Core Webのプロジェクトを作成し、プロジェクトの右クリックから発行をして、WSL側のフォルダに保存。

転送フォルダにて、
dotnet WebApplication1.dll
を実行

・自動起動

WSLなので.profileに入れてプロセスと同時に立ち上げる。

/usr/bin/dotnet /mnt/g/Dropbox/Workspace/Bash/html/WebApplication1.dll > /dev/null 2>&1 &

テスト用のWordPressをインストールする

sudo apt-get update

・Apache2

インストール
sudo apt-get install apache2

起動
sudo /etc/init.d/apache2 start

・wget
sudo apt-get install wget

・PHP
sudo apt-get install php
sudo apt-get install libapache2-mod-php
sudo /etc/init.d/apache2 restart

とりあえずこれでPHPファイルは実行できるようになる。

・MySQL
sudo apt-get install mysql-server
sudo apt-get install php-mysql

データベース作成
mysql > set password = ‘1234’;
mysql > create database wpdb;

・WordPress
sudo wget https://ja.wordpress.org/latest-ja.tar.gz

解凍
sudo tar -zxvf latest-ja.tar.gz

/var/www/html(http://localhost/解凍フォルダ名)
にブラウザからアクセス。

wp-config.php ファイルに書き込みできません。
とでる場合。

まず、
/etc/apache2/envvars
を開き、
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
の部分でユーザー名を確認し、
sudo chown -R www-data:www-data 解凍フォルダ名
を実行する。