一、安装WSL
-
打开控制面板 -> 程序和功能 -> 启用或关闭Windows功能 -> 勾选 适用于Linux的Windows子系统+虚拟机平台(windows 11的可以使用管理员权限的windows终端 运行 wsl --install 等到 出现卡死不动的时候,强制退出 执行第2步)。
-
重启电脑。
-
下载Linux内核安装。 下载链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 下载成功后双击运行,系统将提示你提供提升的权限,选择“是”以批准此安装。
-
将WSL2设置为默认版本 终端指令 wsl --set-default-version 2
-
然后去windows的应用商店下载Ubuntu系统
-
若不想登录自己的windows账号可选着使用Microsoft Store - Generation Project (v1.2.3) [by @rgadguard & mkuba50]网址下载。
使用方案:
1.去windows商店 网页版 选中自己想要下载的应用 复制下载链接
2.点击
3.弹出下载框点击下载
-
双击安装
-
若安装完成后未出现 终端控制台,则点击安装完成的 图标。
-
设置账号密码,注:密码设置时 输入没有东西,不用在意,是密码保护机制。输入完成后直接Enter键
-
使用windows终端查询wsl版本号:输入wsl --list --verbose 指令
-
使用windows终端进入WSL系统,在终端中输入wsl进入系统,若需要密码输入密码即可。
-
更改源文件,因为Ubuntu默认的apt是国外的源,下载东西很慢,需要换成国内的镜像
-
首先复制源文件 备份,便于后期出现意外 从而恢复:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
-
查看版本信息
lsb_release -c
-
编辑源文件: sudo vim /etc/apt/sources.list
-
根据Ubuntu版本号,添加相应的内容
修改的内容如下:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
-
然后保存退出,指令是按esc键 输入 :wq!
-
更新与升级
sudo apt-get update sudo apt-get upgrade
-
二、安装SSH环境,方便使用远程连接工具查看虚拟机的文件内容。
我采用的是xftp工具连接虚拟机。下载xftp工具(免费版)地址:
https://www.netsarang.com/en/free-for-home-school/
-
使用管理员权限进入系统,或使用
#切换到 root 用户,然后输入当前用户的密码 sudo -i
-
卸载原来的ssh sudo apt-get remove openssh-server
-
重新安装ssh sudo apt-get install openssh-server
-
配置ssh_config文件
-
打开ssh_config文件 sudo vim /etc/ssh/sshd_config
-
配置文件中修改如下的内容:
Port 36000 #默认的是22,但是windows有自己的ssh服务,也是监听的22端口,这里最好改成大于 1024 的端口 PasswordAuthentication yes #使用密码登录 AllowUsers youusername # 这里改成你登陆WSL用的用户名,密码也是这个用户的密码
-
-
重启ssh服务 sudo service ssh restart
-
使用xftp连接虚拟机,账号和密码都为虚拟机的账号密码,端口为上面修改的端口号
-
点击连接,可能需要的点时间,等出现弹出一个框,是要你保存一个密钥的框 直接点击保存 就连接上了。
-
至此ssh算是安装完成。
三、安装MySQL数据库
-
安装mysql数据库:
sudo apt install mysql-server-5.7
-
测试MySQL是否安装好:
#启动MySQL服务 sudo service mysql start 停止mysql服务 sudo service mysql stop
-
修改mysql的配置文件
-
使用指令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 修改文件
-
将文件修改为如下图所示: 添加 skip-grant-tables 实现无密码登录,方便后面的配置
-
修改mysqld.cnf文件,方便使用navicat连接数据库,修改为如下所示 避免端口冲突
-
-
重启MySQL服务: sudo service mysql restart
-
登录mysql数据库: mysql -u root -p 直接回车 当前无密码
-
执行如下三条指令 设置自己的密码:
use mysql; update user set authentication_string=password("你的密码") where user="root"; flush privileges;
-
查看当前状态:select user,plugin from user;
-
root用户的密码并为成功修改,于是我们再次修改表单:
update user set authentication_string=password("你的密码"),plugin='mysql_native_password' where user='root';
-
查看修改成功: select user,plugin from user;
-
配置远程连接账户:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
退出 :quit
-
随后去掉我们之前设置的无密码登陆语句,或者注释掉
-
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
-
-
- 重启mysql服务,尝试登陆:
sudo service mysql start mysql -u root -p (密码)
-
映射MySQL数据的端口到windows系统
具体见第十节
四、安装Java环境
-
使用远程Xftp工具链接虚拟机。推荐选择/etc/opt目录存放JDK安装包。
-
将从官网下载的Linux压缩包上传到指定目录下。
-
使用命令解压压缩包 tar xvf jdk-8u202-linux-x64.tar.gz -C
-
将解压的文件夹改名为 jdk1.8.0
-
配置Java环境变量
-
修改环境变量存放的文件 sudo vim /etc/profile
-
在末尾添加
# set java development export JAVA_HOME=/etc/opt/java/jdk1.8.0 #Java解压路径 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
-
刷新环境变量 source /etc/profile
-
-
测试Java环境 java -version
五、安装Tomcat环境
-
将tomcat 9 的Linux压缩包上传到指定目录下
-
使用命令解压 tar xvf apache-tomcat-9.0.56.tar.gz -C /tomcat
-
进入到 /tomcat/apache-tomcat-9.0.56/bin 下 执行 ./startup.sh 启动tomcat服务
-
使用浏览器访问ip+端口访问,
-
使用ip addr 查询虚拟机ip
-
浏览器出现熟悉的tomcat页面 说明tomcat环境安装完成
六、安装nginx
-
使用命令行安装 输入以下命令
sudo apt-get install nginx -y # 安装最新版nginx
-
使用 sudo service nginx start 命令检测nginx安装是否完成。
-
nginx常用的命令
# 执行nginx配置文件的检测(此命令还有一个用法是当不知道nginx主配置在什么路径下时执行会输出配置文件路径) sudo nginx -t # 重载nginx配置文件,一般用于修改配置文件后让配置生效 sudo nginx -s reload # WSL下可能需要这种形式重启/重载/启动/关闭 sudo service ngixn restart|stop|start|reload
七、使用nginx部署前端Vue项目
-
将vue项目中的 vue.config.js 文件中添加
publicPath: process.env.NODE_ENV === "production" ? '/EmergencyCommandOne' : '/',
-
在vue项目中的router\index.js 文件中修改
constcreateRouter = () =>newVueRouter({ mode:'history', //base: process.env.BASE_URL, base:'/EmergencyCommandOne/', routes, path:'/' })
-
打包vue项目 生成dis文件夹,将dis文件夹上传到虚拟机的nginx_vue文件夹下(nginx_vue文件夹是我自己创建的)
-
修改ngiinx的配置文件,
-
配置文件一般放置在 /etc/nginx/sites-available 目录下
-
使用sudo vim /etc/nginx/sites-available/default 编辑配置文件
-
将配置文件修改为
server { #nginx的端口配置 listen 1229 default_server; listen [::]:1229 default_server; #项目所在路径全路径 root /etc/nginx_vue/dist; index index.html index.htm index.nginx-debian.html; # 这是你部署的ip或是域名 server_name localhost; # 这里配置你前段打包文件的映射路径 #root /etc/nginx_vue/dist; #index index.html index.htm; #charset koi8-r; #access_log logs/host.access.log main; location /EmergencyCommand{ #将请求连接中有 /EmergencyCommand 匹配到项目文件中去找 alias /etc/nginx_vue/dist; #try_files $uri $uri/ /EmergencyCommand/index.html; } location / { # root html; try_files $uri $uri/ /etc/nginx_vue/dist; #index index.html index.htm; } # 6、这里是解决跨域问题,将你后端的地址写在proxy_pass 后面就可以了 #location /api { # 下面这行也要改为api #rewrite ^.+api/?(.*)$ /$1 break; #proxy_pass http://localhost:8001/; #proxy_redirect off; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80
-
-
使用** sudo nginx -t **检测配置文件,如下是没问题的配置
-
重载配置文件 sudo nginx -s reload
-
使用虚拟机的ip+nginx端口访问 eg: http://172.31.44.106:1229/EmergencyCommand/
八、使用tomcat服务器部署vue项目
-
修改vue项目中的** \router\index.js **文件
const createRouter = () => new VueRouter({ mode: 'history', base: "EmergencyCommand",//部署的子路径 routes })
-
在config文件夹下创建index.js文件,编辑如下
var path = require('path') module.exports = { build: { index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '/EmergencyCommand/', //productionSourceMap: true }, dev: { port: 8089, proxyTable: {} } }
-
修改vue.config.js文件:
-
打包vue项目将生成的dis文件下的文件及文件夹拷贝到tomcat的/webapps/EmergencyCommand 下 EmergencyCommand文件夹是自己创建的项目文件夹,与前面配置的 assetsPublicPath 、 base 的值是一样的。
-
重启tomcat服务器,
-
使用虚拟机IP+tomcat端口/EmergencyCommand访问项目,若访问出来则成功
九、在使用上述方法部署项目时产生的问题
-
静态资源中的css和js文件访问不到:
-
参考上述的项目配置就可以解决。
-
-
项目中的图片访问不了(中文名称的图片):
-
产生的原因:
-
对不同的系统默认编码不是很清楚,不知道Linux系统的编码默认为UTF-8,而windows的是GBK。
-
对于使用ssh连接的XFTP工具太过依赖,以至于查看文件存放
-
-
解决方案
-
使用Linux自带的查看文件命令,去查看文件的名称。确定问题。
-
使用convmv工具对文件名的编码进行修改。
-
-
sudo apt-get install convmv #安装convmv convmv -r -f cp936 -t utf8 --notest --nosmart * #进入文件目录,执行转换命令
-
-
重启tomcat(注 nginx不需要重启)。
十、将虚拟机端口映射到本机上
-
使用指令如下 使用管理员权限的Windows PowerShell窗口
#添加端口映射 listenport window系统的端口 connectport虚拟机的端口 connectaddress虚拟机的ip地址 netsh interface portproxy add v4tov4 listenport=8089 listenaddress=0.0.0.0 connectport=8089 connectaddress=192.168.78.227 #查询所有的端口映射 window netsh interface portproxy show all
十一、固定虚拟机的IP地址
因电脑每次重启后 会将ip地址进行重新分配,就导致之前映射出去的端口都失效了,重新映射有很麻烦,故采用将虚拟机IP地址修改。
添加IP地址的指令如下
#修改wsl虚拟机的ip地址 172.31.44.106/24是自己设定的ip 192.168.50.255是子网掩码
ip addr add 192.168.50.28/24 broadcast 192.168.50.255 dev eth0 label eth0:1
需要在虚拟机中以管理员权限运行。
十二、常用指令
-
重启wsl系统
#重启WSL系统 #停止LxssManager服务 net stop LxssManager #启动LxssManager服务 net start LxssManager
-
查询端口
#查询端口 netstat -tunpl | grep 端口号
-
查询wsl的IP地址
#查询虚拟机的IP地址 ip addr