1、虚拟机的准备,这里用的是ubuntu的16长期版
虚拟机网络设置:桥接模式
虚拟网络编辑器
将这两步设置好后,宿主机和虚拟机之间即可通信,ping命令能走通,且虚拟机可以正常访问网络。 但想用Xshell连接虚拟机还需要开放22端口
到此为止,即可在宿主机用xshell连接虚拟机,同一局域网下,也可以在手机上用juicessh访问虚拟机。
2.安装nginx
更新源列表
1 apt-get update
安装nginx
2 apt-get install nginx
检查nginx是否安装,输入如下命令后若出现版本号则安装成功
3 nginx -v
启动nginx
4 server nginx restart
在浏览器输入ip地址,若出现如下页面则启动成功
打包
我的项目使用的是vs code,在终端输入如下命令进行打包
npm run build
上传
打包完成后,生成dist文件夹,该文件夹为打包完成后的项目,该文件夹中有index.html和static等内容。 把该文件夹压缩为rar或zip,不要再套层了,直接添加到压缩文件,起个名字即可
我这里上传到/home/ssy/myweb文件夹中 提前切到该目录下, 这里需要用到rz命令,需要提前安装 sudo su root 切换到root权限
先测试是否安装rz
命令行 rz
如果出现未安装(或者command not found)且建议sudo apt install lrzsz(Ubuntu)
那么就键入
sudo apt install lrzsz
安装lrzsz。
安装完成后,rz,即可唤起文件选择窗口,
选择文件,确认,即可上传成功
解压rar文件 rar a FileName.rar
解压zip文件 unzip FileName.zip
cd 到上一层,给home文件夹赋权755,否则后面可能会出现403的错误
chmod 755 home
修改nginx.conf
安装nginx后,nginx的默认目录是/etc/nginx
cd到该目录下,
vim nginx.conf
若无vim,需提前安装,
apt-get install vim
自带的较低版本的vi可能会出现上下左右键,变成ABCD的情况,所以还是提前安装vim编辑器
关于VIM的操作技巧,可以查阅其他资料。这里你只需要知道,点击I,进入编辑模式,编辑模式下按esc,进入命令模式,输入:wq,即可保存并退出,:q即可不保存退出。知道这几条就暂时够用了。(编辑该文件需要root权限,建议提前切换)
找到这两行
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
在下面加一行
include /etc/nginx/hosts/*.host;
在/etc/nginx中创建hosts文件夹
mkdir hosts
在该文件夹下,创建任意名字的.host文件
touch ssy.host
编辑该文件
server {
listen 8080; #自己设置端口号
server_name syt; #自己设置项目名称,无关紧要
#access_log logs/host.access.log main;
location / {
root /home/ssy/dist; #这里写vue项目的所在路径
index index.html; #这里是vue项目的首页,需要保证dist中有index.html文件
}
error_page 500 502 503 504 /50x.html; #错误页面
}
保存并退出,重启nginx
nginx -s reload
在浏览器键入:ip:port 即可访问项目
常见问题:
若果在虚拟机内可以访问,在宿主机上无法访问,往往是防火墙的问题,
使用sudo ufw status命令查看当前防火墙状态;
inactive状态是防火墙关闭状态 active是开启状态。
开启防火墙
在Ubuntu中 我们使用sudo ufw enable命令来开发防火墙 通过sudo ufw status命令查看开启防火墙后的状态为active 说明防火墙开启成功。
关闭防火墙
在Ubuntu中 我们使用sudo ufw disable命令来关闭防火墙。执行该命令之后 我们使用sudo ufw status命令来查看当前防火墙的状态 如果是inactive 说明我们的防火墙已经关闭掉了。
Ubuntu中其他常用的防火墙命令
ufw default allow/deny:外来访问默认允许/拒绝
ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。
ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。
ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。
ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则
这里可以直接关闭防火墙,sudo ufw disable,这样比较直接,比较暴力,正常开发流程中是不会这样做的, 或者开放你的项目的访问端口
如本例中,开放8080端口就可以 ufw allow 8080,提示规则已添加即可在宿主机等同网络环境下访问该项目。
如果实际上线,再将该ip+端口映射为域名即可