记录一下第一次 从vue项目打包、上传到ubuntu服务器,局域网下访问的全过程

367 阅读4分钟

1、虚拟机的准备,这里用的是ubuntu的16长期版

虚拟机网络设置:桥接模式 image.png

虚拟网络编辑器

image.png

将这两步设置好后,宿主机和虚拟机之间即可通信,ping命令能走通,且虚拟机可以正常访问网络。 但想用Xshell连接虚拟机还需要开放22端口

image.png

到此为止,即可在宿主机用xshell连接虚拟机,同一局域网下,也可以在手机上用juicessh访问虚拟机。

2.安装nginx

更新源列表

1 apt-get update

安装nginx

2 apt-get install nginx

检查nginx是否安装,输入如下命令后若出现版本号则安装成功

3 nginx -v

启动nginx

4 server nginx restart

在浏览器输入ip地址,若出现如下页面则启动成功

image.png

打包

我的项目使用的是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+端口映射为域名即可