vue+nodejs+MongoDB全栈web项目部署到云服务器

建站小结(全栈项目部署)

前置准备

  • 前端后端代码在本地可以完全跑通
  • 一台云服务器
  • 一个已过审备案的域名

代码

前端

主要是vue2框架,由于先前就写了一点这个项目,那时候还没用上vue3,确实是个小缺陷。

技术栈:

vue2+vuex+vue-router

(是的没用任何UI库,纯手码CSS

后端

身为一名主攻前端的开发人员,这里使用的使nodejs,可以方便快捷地搭建出一个轻量web服务器。

技术栈:

koa2+mongoose

显然数据库使用的是MongoDB,选这个仅仅是因为只接触过这个哈哈。

这部分就不多说了,因为技术开发方面的问题太多,这篇博客主要想记录一下部署一个web全栈项目的过程。

服务器

目前做云服务器的厂家有很多,主要看了两家:阿里云和腾讯云,简单选择后(挑便宜的),在腾讯云新人专区买了一台一年的轻量云服务器,如下图:

13.png


挂个链接:腾讯云

服务器配置选择的是宝塔Linux面板,方便后面不用自己安装宝塔面板了。

部署流程

服务器就绪后,就可以(快乐地捣鼓这台远程电脑了。

登入宝塔面板

  • 整个部署过程都是借助宝塔面板完成的,它是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率,所以第一步就是登录进入宝塔面板。

  • 先通过云服务器控制台登入服务器,然后在新弹出的网页(webshell)中键入

    sudo /etc/init.d/bt default
    

    接着便会返回宝塔面板的Bt-Panel-URL、username和password,分别是宝塔面板地址和你的初始用户名及密码。

  • 你会发现它的地址是http://服务器IP:8888/tencentcloud,所以我们还要去服务器控制台的防火墙中开放8888端口(因为服务器默认开放端口仅有几个),然后才能正常访问。

    若一切正常,输入地址后你会看到:

    14.png

注意:也有可能你觉得你一切操作正常却访问不了登录页面,九九成可能就是你自己的问题(本人在这踩坑两小时)。注意检查自己有没有开网络代理加速器、梯子之类的东西,关掉他们再尝试登录,OK反正我是这个原因。

此环节腾讯云有官方教程:安装和配置宝塔 Linux 面板腾讯云专享版

配置环境

  • 安装数据库MongoDB

    直接在软件商店里搜索并安装

    1.png

    点击设置修改MongoDB配置

    bindIp 由127.0.0.1改为0.0.0.0,放开ip限制

    2.png

    authorization 默认disabled,如需要权限验证改为enabled(注意保留空格)

    3.png

    紧接着在宝塔的安全中以及腾讯云的防火墙中开放27017端口,后续开放端口都需要两处同时开放。

    然后进入宝塔的终端初始化并启动MongoDB

    cd /www/server/mongodb/bin
    mongo
    

    输入以上后便可以操作数据库了,需要设置管理员、添加数据库登操作…懒得写了

  • 部署后端项目

    上传代码文件前需要修改两个地发

    • 监听端口

      const app = require('./app');
      const dev_port = 8888;
      const serve_port = 8889;
      const port = serve_port;
      app.listen(port, () => {
        console.log(`http://`服务器IP`/:${port}`);
      })
      

      我监听的服务端口为8889,显然接着需要去开放该端口

    • 连接数据库的地址

      将原来的本地地址改成如下

      4.png

    • 最后进入www/wwwroot 目录下,上传(文件太多先压缩再上传,然后解压)整个项目(包括node_modules)到你自己喜欢的位置

      5.PNG


      :be为后端项目文件夹,dist为前端项目打包文件夹

    • 启动node服务

      安装PM2管理器

      6.png

      添加项目,在启动文件里选择你后台项目的启动文件路径。其它项会自动填写

      7.png

    • 测试接口

      去postman测试一下你的后端接口,有问题的话可以检查进入PM2检查日志,查看有无报错

      8.png

    :以上数据库以及后端部署流程可以借鉴这篇文章:全栈项目部署

  • 前端项目部署

    • 先把vue.config.js里的代理配置删除,我们之后用Nginx反向代理

      npm run build
      

      后便会生成dist文件夹,直接上传就好了

    • 添加站点

      在宝塔上点击网站,添加站点,然后按自己的IP地址、文件地址填写如下信息

      9.png

    • 设置代理

      点击设置

      10.png

      修改配置文件

      11.png

      代理地址改成里后端接口地址,也就是服务器IP+端口号,‘’api‘’加不加取决你自己前后端接口的对接设置

      :前端项目是默认部署在80端口的,已经默认放行过了,不出意外,此时访问http://服务器IP,就可以看到网站支棱起来了。好耶!

      以上过程再推荐一篇博客:[使用宝塔将Vue2+Nodejs全栈项目打包部署到腾讯云服务器](https://blog.csdn.net/qq_45890970/article/details/123611747)

添加域名

**差点以为写完了,现在还有个问题,目前网站只能通过IP地址访问,谁愿意记一段数字啊,也不够酷对吧,于是我们就需要一个好记的域名。

  • 购买域名

    依旧从腾讯云(服务器入坑了,干脆all in了,方便)上买的一个一年的(长期很贵,越长越贵)

  • 域名备案

    腾讯云里有一套流程教程,跟着走完就好(就是填一堆个人信息并上传证件之类),大概两周不到网信办给我审过了,颁发了备案号如“皖ICP备案XXXXXXX号”(后续还要公安备案,但此时域名就可以用了,不管了先用再说)

  • 域名解析

    在腾讯云里面找到我的域名,点击解析进入域名管理,添加DNS解析

    12.png

    点击快速添加解析,选择你的服务器IP就OK了

    过几分钟后,浏览器输入域名就可以访问到网站啦(兴奋

总结

回想起自己有问题时总是想找到优质解答,暗暗立誓以后要写出优质博客,真到这时候才发现不仅费时间而且难,呜呜~~

虽然拖延了这么久,但总算写完了,最近看到一句话:

"好像好厉害"这几个字大概是人生中各种入坑的原因

貌似的确是这样

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340