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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Administrators")) { Start-Process powershell.exe "-File `"$PSCommandPath`"" -Verb RunAs; exit } $ip = wsl -e hostname -I # WSLの既定を対象に変更しておく $ports=@(53,88,123,135,137,138,139,389,445,464,3268,636,3269,9389,42,53,88,123,135,389,445,5722) # ポート削除 for($i = 0; $i -lt $ports.length; $i++) { netsh interface portproxy delete v4tov4 listenport=$($ports[$i]) } # ポート追加 for($i = 0; $i -lt $ports.length; $i++) { netsh interface portproxy add v4tov4 listenport=$($ports[$i]) listenaddress=* connectport=$($ports[$i]) connectaddress=$($ip) } # ルール削除 netsh advfirewall firewall delete rule name="wsl" # ルール追加 netsh advfirewall firewall add rule name="wsl" dir=in action=allow protocol=tcp localport=$($ports -join ",") profile=private,public # ポート確認 netsh interface portproxy show all pause |
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 解凍フォルダ名
を実行する。