WSL——从Linux迁移实验室网页记录

昨天把实验室的所有网络服务从Linux服务器迁移到了Windows10下的WSL2(Ubuntu22.04),记录一下遇到的问题和大致的流程。

1.利用Samba在Linux和Windows之间传输文件

使用scp的传输速度非常感人,在同一局域网下用Samba管理两端文件更加方便。

1.1.安装Samba

sudo apt-get update
sudo apt-get install samba

1.2.修改Samba配置

只需要共享home文件夹即可,如需共享其它文件(例如Nginx的配置文件)可以移动到该文件夹。因此对/etc/samba/smb.conf进行修改如下:

[homes]
comment = /home/wxt
browseable = no
read only = no
create mask = 0755
directory mask = 0755
valid users = %S

1.3.重启Samba服务并创建用户

sudo service smbd restart && service nmbd restart
# 可以直接使用现成的用户
sudo smbpasswd -a wxt

1.4.在Windows端访问

在路径处输入\\对应ip\wxt,进行认证后即可访问,把Linux服务器上的项目和数据都搬过来就好。

2.设置Windows端的有线网络

2.1.修改IP、MAC等连接有线网

由于网络服务通过校园网实现公网访问,因此需要在插入网线后做一些设置。此处根据学校提供的IP、子网掩码等进行静态IP设置即可。需要注意的是此时还不能上网,因为绑定了网卡MAC地址,此处还需要再修改网卡的MAC地址,修改方法如图。

2.2.设置网络优先级

由于如NAS等服务需要局域网连接,电脑需要WiFi和有线网共同使用,但是有线网优先级要更高。这里可以通过设置跃点来修改优先级,跃点数量越少优先级越高。这里有线网设置为10,无线网设置为20

2.3.设置与WSL网络互通

此时发现Nginx只能代理本地的访问,校园网和外网均无法打开网页。经查阅发现需要进行Windows与WSL的网络映射,官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/networking

在Windows的Powershell中执行如下命令:

# 注意,此处connectaddress是WSL的IP,通过在WSL中执行命令:ip a | grep "global eth0"获取
# 公网
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.127.253
# SSH
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=192.168.127.253

WSL貌似默认没有SSH,需要安装:

sudo apt install openssh-server
sudo service ssh start
# 开机启动
sudo systemctl enable ssh

这样,就可以实现ssh访问以及其它网络流量的代理。

3.配置MongoDB

SoyDNGP需要用到MongoDB和Redis。Redis之前安装过就省略了,唯一需要注意的就是把Redis设置为本地访问(127.0.0.1),不然很容易受到攻击。

3.1.下载MongoDB、MongoDB Shell、MongoDB Compass

访问https://www.mongodb.com/try/download/下载即可,安装也很简单。这里,MongoDB是数据库本体,MongoDB Shell是命令行管理程序,MongoDB Compass是可视化的管理程序。

安装完成后发现mongod服务没有启动,查看日志发现报错Environment variable MONGODB_CONFIG_OVERRIDE_NOFORK == 1, overriding "processManagement.fork" to false,这里是常见的权限问题所致,解决方法如下:

sudo mongod --repair --config /etc/mongod.conf
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

之后重启服务即可,恢复正常。

3.2.修改MongoDB默认端口、设置安全验证

进入/usr/local处的MongoDB Shell安装路径下的bin文件夹,进行安全设置:

# 首次登录不用加参数
mongosh --port 端口 -u 用户名 -p 密码
# 以下是进入mongosh后,创建一个超级管理员就行
use admin
db.createUser({ user: "用户名", pwd: "密码", roles: [{ role: "root", db: "admin" }] })

MongoDB的配置文件在/etc/mongo.conf,需要修改的地方如下:

# 设置端口为27020避免扫默认27017被攻击,本地访问更安全
net:
port: 27020
bindIp: 127.0.0.1
# 开启安全验证
security:
authorization: enabled

3.3.配置MongoDB Compass,更方便地导入数据

WSL2本身并不带图形界面,因此需要进行配置。安装VcXsrv及xfce4的教程可以参考:https://blog.csdn.net/m0_60171828/article/details/138376726。为便捷使用在~/.bashrc编写脚本如下:

function gui() {
ip=cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
echo "$ip"
export DISPLAY=$ip:0
sudo startxfce4
}

执行gui后连接桌面,找到MongoDB Compass发现打不开,报错Running as root without --no-sandbox is not supported。这里可以通过在MongoDB启动项添加--no-sandbox解决。

连接到MongoDB后,可以通过远程操控Linux系统的数据库导出数据,进而导入Windows服务器中,非常方便。

4.迁移Anaconda环境

这里只需要将原/home/wxt/anaconda3/envs下的环境复制到/home/zhn/.conda/envs即可。需要注意的是要修改~/.condarcenvs-dirs,并在~/.conda/environment中添加复制来的环境路径。此时可以正常进行环境激活,但是遇到权限问题,报错/home/zhn/.conda/envs/website/bin/python: Permission denied。这里需要执行命令修改权限:

sudo chown -R zhn:zhn /home/zhn/.conda/envs/website
sudo chmod -R u+rwx /home/zhn/.conda/envs/website

之后在启动SoyDNGP时发现Gunicorn报错,检查后发现需要修改其配置文件中的python解释器路径,配置文件路径为:~/.conda/envs/bin/gunicorn

#!/home/修改这里的路径为zhn/.conda/envs/website/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from gunicorn.app.wsgiapp import run
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(run())

至此即可正常使用所有网络服务。

5.设置WSL开机启动

———-⚠ 2024.7.21更新 ⚠———-
现在,脚本目录为D:\wsl-startup.vbs,包括自动将WSL的端口映射功能。为了自动以管理员身份执行,新建管理员账户Administrator,密码老规矩。

为了方便,这里使用vbs脚本启动WSL,放置在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp下。这样就可以开机自启动了。脚本如下:

CreateObject("Wscript.Shell").run "wsl",vbhide

6.Sequenceserver备忘

Ruby直接用apt install安装,Sequenceserver的配置文件在~/.sequenceserver.conf,NCBI Blast的路径在:/usr/local/ncbi-blast-2.15.0+/bin

为了便于启动,于/etc/systemd/system/sequenceserver.service写开机脚本如下:

[Unit]
Description=SequenceServer server daemon
Documentation="file://sequenceserver --help" "http://sequenceserver.com/doc"
After=network.target
[Service]
Type=simple
User=root
ExecStart=sequenceserver -d /home/zhn/SequenceServer -c /home/zhn/.sequenceserver.conf
KillMode=process
Restart=on-failure
RestartSec=42s
RestartPreventExitStatus=255
[Install]
WantedBy=multi-user.target
# 设置为开机启动
sudo systemctl enable sequenceserver.service

至此迁移完成。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇