Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows计算机上同时访问 Windows和Linux的强大功能。通过适用于Linux的Windows子系统(WSL),开发人员可以安装Linux发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux等),并直接在Windows上使用Linux应用程序、实用程序和Bash命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。
WSL安装使用
一、安装
- 安装Terminal(非必须)
- 安装WSL(win10自带)
- 安装虚拟平台(启用WSL功能):
wsl --install
二、使用
wsl –hep
- 查看列表:wsl -l
- 包含状态信息:wsl -l -v
- 安装系统
- Mircosoft store模式
- 打开Mircosoft store
- 首页搜索ubuntu、debian等
- 选择版本安装,如:Ubuntu 22.04.5 LTS
- 启动Linux系统,点击上一步安装完成的系统即可,等待安装完成
- 命令行模式
- 查看支持的系统:wsl –list –online
- 安装指定的系统:wsl –install Ubuntu-24.04
进入系统:wsl -d Debian
- 只有一个则只需:wsl
- 多个则指定-d参数
关闭系统:wsl –shutdown
- wsl -d Ubuntu-22.04 –shutdown
设置默认:wsl -s Debian
设置代理
- 查看windows地址:ipconfig,得到vEthernet (WSL)的IPv4地址:172.27.144.1
- 进入系统
- export http_proxy=http://172.27.144.1:7890
- export https_proxy=https://172.27.144.1:7890
- 取消代理
- unset http_proxy
- unset https_proxy
- 卸载系统:wsl –unregister Ubuntu-24.04
三、问题
- 安装多个相同版本的Linux
- 安装多个Linux发行版,ip地址一样
四、参考
以Ubuntu-24.04为例
一、安装
wsl –install Ubuntu-24.04
wsl,进入系统
- wsl –user root,以root用户进入系统
设置用户名和密码:liusir/123456
sudo su -
- 123456
- passwd root
- 123456
- ifconfig
- Command ‘ifconfig’ not found, but can be installed with:
- apt install net-tools
apt update
apt upgrade
systemctl start sshd
- Failed to start sshd.service: Unit sshd.service not found.
- apt install openssh-server
- systemctl enable ssh.service
- systemctl list-units –type=service | grep ssh,查看已安装的服务
- vim /etc/ssh/sshd_config
- PermitRootLogin yes
- service sshd restart
- 卸载服务
- apt remove openssh-server
- apt autoremove
usermod -l liuyulong liusir,修改用户名
userdel liuyulong
groupdel liusir
cd /home && rm -rf liusir
useradd liusir
passwd liusir
useradd liuyulong
- ssh登录报错
- /home/liusir/.hushlogin file.
- touch: cannot touch ‘/home/liusir/.motd_shown’: No such file or directory
- cd /home
- mkhomedir_helper liusir
- mkhomedir_helper liuyulong
- useradd liusir -m
- useradd liuyulong -m
- usermod -s /bin/bash liusir
- usermod -s /bin/bash liuyulong
- 再次登录,报错:/usr/bin/xauth: file /home/liusir/.Xauthority does not exist
- 在对应主目录下创建:touch .Xauthority
- 卸载Ubuntu-24.04: wsl –unregister Ubuntu-24.04
二、其他
- 安装ssh服务
- 安装服务:apt-get install openssh-server
- 启动服务:systemctl start ssh
- 开机启动:systemctl enable ssh
- service ssh start
- service ssh status
- 设置源
- 备份:cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 修改:vim sources.list
1 | deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse |
安装多个相同发行版本的Linux
一、操作
下载:https://github.com/DDoSolitary/LxRunOffline/releases/download/v3.5.0/LxRunOffline-v3.5.0-msvc.zip
解压
执行:LxRunOffline.exe d -n Ubuntu-24.04 -d C:\WSL\Ubuntu-24.04-02 -N Ubuntu-24.04-02
- 报错:
[ERROR] The distro "Ubuntu-24.04-02" already exists. - 解决:wsl –unregister Ubuntu-24.04-02,卸载后重新复制
- 修改hostname:/etc/hostname
- sudo hostnamectl set-hostname ubuntu-01
- sudo hostnamectl set-hostname ubuntu-02
- 修改hosts:/etc/hosts
- 127.0.1.1 ubuntu-01
- 127.0.1.1 ubuntu-02
- 退出重进
二、问题
复制报错,多半为参数问题
复制后ip/mac什么的都一样
修改IP地址和MAC地址
sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
sudo route add default gw 192.168.1.1 dev eth0
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
- 报错:SIOCSIFHWADDR: Device or resource busy - you may need to down the interface
- 处理
- sudo ifconfig eth0 down
- sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
- sudo ifconfig eth0 up
sudo ifconfig eth0 192.168.1.3 netmask 255.255.255.0
sudo route add default gw 192.168.1.1 dev eth0
sudo ifconfig eth0 hw ether 00:A1:B1:C1:D1:E1
- sudo ifconfig eth0 down
- sudo ifconfig eth0 hw ether 00:A1:B1:C1:D1:E1
- sudo ifconfig eth0 up
三、参考
Ubuntu-安装MySQL
目录规划
- 安装目录:/usr/local/mysql
- 数据目录:/mysql/data
- 错误日志:/tmp/mysql/
- 慢查询日志:/tmp/mysql/
- socks目录:/var/run/mysqld/
用户设置和目录设置
- groupadd mysql
- useradd -r -g mysql mysql
- 准备数据目录 mkdir -p /data/mysql
- 赋予权限 chown mysql.mysql /data/mysql
安装
- apt-get update
- apt-get install cmake openssl libssl-dev libncurses5-dev libncursesw5-dev build-essential pkg-config git net-tools -f build-essential libncurses5-dev libncurses5
- wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz
- 解压源码至/usr/local/mysql-5.7.44
- cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql-5.7.44/boost/boost_1_59_0
- make && make install
- 有时候安装失败或想更换安装选项,重新设置后make clean
- 切换到安装目录 cd /usr/local/mysql
- sudo cp support-files/mysql.server /etc/init.d/mysqld
- sudo chmod 700 /etc/init.d/mysqld
- sudo chown -R mysql:mysql /usr/local/mysql
- 修改配置文件,默认/etc/mysql/conf.d/mysql.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[client]
port=3306
[mysql]
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /var/run/mysqld/mysql.sock #有坑
pid-file = /tmp/mysql/mysql.pid
basedir = /usr/local/mysql
datadir = /data/mysql
tmpdir = /tmp/mysql
character_set_server = utf8mb4
collation_server = utf8mb4_bin
log-error=/tmp/mysql/error.log
secure-file-priv = /tmp/mysql/
# bind-address=localhost # MySQL绑定IP
wait_timeout = 86400
binlog_cache_size = 16M
slow_query_log = true
slow_query_log_file = /tmp/mysql/slow_query_log.log
long_query_time = 1- sudo mysqld –defaults-file=/etc/mysql/my.cnf –user=root –initialize,初始化数据库并得到初始密码:gae>=TdlA3Ff
- 启动MySQL:sudo service mysqld start/sudo systemctl start mysql.service
- 关闭MySQL:sudo service mysqld stop/sudo systemctl stop mysql.service
- 登录客户端:mysql -h 127.0.0.1 -uroot -p
- 修改root密码:alter user ‘root’@’localhost’ identified by ‘root’;
搭建MySQL主从
一、主库
- 主库设置:my.cnf
1 | # 在 [mysqld] 中增加以下配置项 |
- 登录主库,设置复制账号
- grant replication slave, replication client on . to ‘repl’@’127.0.0.1’ identified by ‘123456’;
- flush privileges;
- 查看file和position
- show master status;
1 | mysql> show master status \G; |
- 备份主库
- mysqldump -uroot -p db_admin >/tmp/db_admin.sql
- XtraBackup
- 将备份的主库复制到从库
二、从库
- 修改从库配置my.conf
1 | server_id=132 |
- 启动从库:service mysqld start
- 创建要复制的库
- 导入主库的sql
- 设置同步参数:change master to master_host=’127.0.0.1’,master_user=’repl’,master_password=’123456’,master_port=3306, master_log_file=’sync-mysql-bin.000002’,master_log_pos=154,master_connect_retry=30;
- 查看同步状态:show slave status;
- 开启同步:start slave;
- 再次查看同步状态:show slave status;
1 | *************************** 1. row *************************** |
三、验证
- 插入记录
- 删除记录
- 更新记录
- 创建索引
- 创建表
- 修改表
四、问题
- 复制断了
1 | show slave status\G; |
- 磁盘满了
- 主从复制延迟
Ubuntu-搭建GitLab
一、操作
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
curl -L get.gitlab.cn | bash
sudo EXTERNAL_URL=”https://gitlab.liusir.me" apt-get install -y gitlab-jh
修改hosts:172.19.158.177 gitlab.liusir.me
- 172.19.158.177是安装的Linux地址
安装成功,访问:https://gitlab.liusir.me
- 默认用户:root
- 默认密码:/etc/gitlab/initial_root_password
卸载:sudo gitlab-ctl stop && sudo gitlab-ctl remove-accounts
登录gitlab后台
修改密码
新建群组
新建项目
二、问题
gitlab-ctl reconfigure
SSL certificate problem: self-signed certificate
- export GIT_SSL_NO_VERIFY=true
- Windows: set GIT_SSL_NO_VERIFY=true git clone
- Linux:env GIT_SSL_NO_VERIFY=true git push
- git config –global http.sslVerify “false”
- export GIT_SSL_NO_VERIFY=true
三、参考
Windows下开发,WSL下运行
一、VS Code
- 装扩展:扩展面板搜 Remote - WSL(发布者是 Microsoft,ID ms-vscode-remote.remote-wsl)
- 在WSL下进入项目目录
- code .
- 第一次打开会提示下载组件
- 左下角出现 WSL: OS-xx(如Ubuntu-24.04) 就是成功了
- 命令模式下:WSL: Reopen Folder in WSL补救
- Ctrl + Shift + P
二、phpstorm
- 打开phpstorm
- File > Open,选择对应的路径
- 配置WSL解释器
- Ctrl + Alt + S > PHP > CLI 解释器 > … > 左上角+ > 选 From Docker, Vagrant, VM, WSL, Remote… → 方法选 WSL:
- php -v,验证配置是否成功