koa项目部署云服务器(部署本地虚拟机中)

news2024/11/15 21:57:23

文章目录

  • 一、服务器安装Node、MySQL
    • 1.1. 安装Node.js
    • 1.2. 安装MySQL
    • 1.3.配置MySQL
    • 1.4. 数据库迁移
  • 二. 部署Node项目
    • 2.1. 代码托管到Git仓库(选做)
    • 2.2. 代码clone到服务器(选做)
    • 2.3. VSCode中打开代码(推荐)
    • 2.3. 使用Xftp工具进行拷贝(选做)
    • 2.4. pm2启动node程序


一、服务器安装Node、MySQL

1.1. 安装Node.js

首先了解服务器,我使用Xshell连接服务器(其他链接工具都行,如vscode的SSH链接插件)
我们安装软件使用工具:dnf

  • DNF,全称Dandified(时髦的、华丽的) Yum
  • 是Yum的下一个版本,也被称之为Yum的替代品;
  • 如果是centos7的版本,我记得是没有自带dnf的,需要通过yum进行安装(这个自行安装一下);
  • 刚才在选择云服务器时,我选择的是centos8,所以是自带dnf的;
    使用dnf命令进行安装node
    检查dnf是否可用:
dnf --help

如果我们希望安装一个软件包,可以进行如下的操作:

# 搜索软件包
dnf search nodejs

# 查看软件包信息: 
dnf info nodejs

# 安装nodejs
dnf install nodejs

如果发现不是你希望使用的版本:

  • 使用更高的版本,比如最新的LTS或者Current版本;
  • 这个时候我们可以使用之前讲过的一个工具:n;n使用文档
  • nvm也能行是实现相同效果
# 安装n
npm install n -g

# 通过n安装最新的lts和current
n install lts
n install latest

# 通过n切换版本
n

如果发现切换之后终端没有反应,可以进行重启:

  • 方式一:重新通过ssh建立连接;
  • 方式二:重启ssh service sshd restart

1.2. 安装MySQL

我们依然使用dnf来安装MySQL:

# 查找MySQL
dnf search mysql-server

# 查看MySQL,这里的版本是8.0.30
dnf info mysql-server

# 安装MySQL,这里加-y的意思是依赖的内容也安装
dnf install mysql-server -y

启动mysql-server:

# 开启MySQL后台服务
systemctl start mysqld

# 查看MySQL服务:active (running)表示启动成功
systemctl status mysqld

# 随着系统一起启动
systemctl enable mysqld

1.3.配置MySQL

我们之前在Mac或者Windows上安装MySQL时会有一些配置:

  • 比如账号密码;
  • 在centos中通过dnf安装之后,我们如何配置账号密码呢?

配置MySQL账号和密码:

mysql_secure_installation

# 接下来有一些选项,比如密码强度等等一些
# MySQL8开始通常设置密码强度较强,选择2
# 其他的选项可以自行选择

在这里插入图片描述

现在,我们就可以直接在服务器中操作MySQL了:

# 使用root用户链接mysql
mysql -u root -p

在这里插入图片描述

但是如果我们希望在自己的电脑上直接连接MySQL呢?

  • 也就是和MySQL建立远程连接;
  • 比如直接Navicat工具中连接MySQL;

这个时候必须要配置root可以远程连接:

# 使用mysql数据库
use mysql;
# 查看user表中,连接权限,默认看到root是localhost
select host, user from user;
# 修改权限
update user set host = '%' where user = 'root';

# 配置生效
FLUSH PRIVILEGES;

如果你为root用户为localhost,你电脑的Navicat想访问远程服务器的MySQL是连接不是的,只有在服务器本机上连接才行
在这里插入图片描述

但是呢,阿里云(远程服务器)默认有在安全组中禁止掉3306端的连接的:

  • 所以我们需要配置3306的安全组
  • 在虚拟机中需要将3306接口对外开放才能
  • 可能连接不上,使用reboot命令重启一下服务器
  • 使用ifconfig查看ip

在这里插入图片描述
如果像我一样没有远程服务器,用虚拟机模拟服务器的话,需要使用命令将3306端口开放

	# 开放3306端口
	firewall-cmd --zone=public --add-port=3306/tcp --permanent

如果你使用的远程服务器的话,需要在安全组中添加3306端口

在这里插入图片描述

Navicat工具连接MySQL数据库成功

在这里插入图片描述

1.4. 数据库迁移

我们需要将之前项目中(本地)MySQL的数据库迁移到服务器中的MySQL数据库中。

第一步:在服务器MySQL中创建coderhub的数据库:

  • 可以通过命令,也可以通过Navicat直接创建

第二步:在Navicat工具中本地MySQL直接导出数据库

在这里插入图片描述

第三步:在Navicat工具中服务器MySQL中执行MySQL

运行sql文件

二. 部署Node项目

2.1. 代码托管到Git仓库(选做)

在GitHub中创建仓库,并且将当前代码放到GitHub中

添加.gitignore文件时,忽略一些文件:

  • 忽略uploads
  • 忽略.env

这里不再给出详细的步骤,就是把代码托管到GitHub上。

2.2. 代码clone到服务器(选做)

服务器我们使用Git来clone代码:

  • centos8服务器中默认是没有安装Git的;
  • 我们可以通过dnf来安装;
dnf search git;
dnf info git;
# 当然你也可以直接安装(上面两个只是让大家看一下Git的详情)
dnf install git;

我们可以在根目录下创建一个自己的文件夹,比如why

cd /
mkdir why
cd why/

clone项目到why中:

git clone git项目地址

2.3. VSCode中打开代码(推荐)

如果我们希望在本地的VSCode中可以直接编辑远程的代码,可以使用一个VSCode的插件:remote-ssh
在这里插入图片描述

  • 使用拖拽的方式将项目文件拷贝到自己想存放的位置
  • 该插件的好处就是你能像编写正常项目一样打开服务器的项目,可以可视化操作下编写我们项目
  • 因为之前项目是在本地开发,图片上传地址是localhost等,需要修改为服务器地址ip

2.3. 使用Xftp工具进行拷贝(选做)

在这里插入图片描述

# 下载依赖
npm install

注意:加入8000端口到安全组中

你项目用什么端口,你需要将什么端口加入到安全组中
如果像我一样没有远程服务器,用虚拟机模拟服务器的话,需要使用命令将8000端口开放

# 开放8000端口,然后重启才生效
firewall-cmd --zone=public --add-port=8000/tcp --permanent

虚拟机ip+你对外开放的端口
测试请求的结果:
在这里插入图片描述

2.4. pm2启动node程序

刚才我们是通过终端启动的node程序,那么如果终端被关闭掉了呢?

  • 那么这个时候相当于启动的Node进程会被关闭掉;
  • 我们将无法继续访问服务器;

在真实的部署过程中,我们会使用一个工具pm2来管理Node的进程:

  • PM2是一个Node的进程管理器;
  • 我们可以使用它来管理Node的后台进程;
  • 这样在关闭终端时,Node进程会继续执行,那么服务器就可以继续为前端提供服务了;

安装pm2:

npm install pm2 -g

pm2常用的命令:

# 命名进程app.js(入口文件)
pm2 start app.js --name my-api 
# 显示所有进程状态
pm2 list               
# 停止指定的id
pm2 stop 0       
# 停止所有进程
pm2 stop all           
# 重启所有进程
pm2 restart all      
# 重启指定的id
pm2 restart 0          

# 杀死指定的id
pm2 delete 0           
# 杀死全部进程
pm2 delete all   

#后台运行pm2,启动4个app.js,实现负载均衡
pm2 start app.js -i 4 

在这里插入图片描述


该文章有结合coderwhy的koa项目部署,因为自己没有远程服务器使用虚拟机模拟服务器做的部署,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1465041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A股风格因子看板 (2024.2 第08期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格景 露等。 今日为该因子跟踪第8期,指数组合数据截止日2024-01-31,要点如下 近1年A股风格因子收益走…

Android约束布局中用ConstraintHelper实现过渡动画效果

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 一.创建一个类CircularRevealHelper继承ConstraintHelper代码如下 /*** Author: ly* Da…

机器学习基础(二)监督与非监督学习

导语:更深入地探讨监督学习和非监督学习的知识,重点关注它们的理论基础、常用算法及实际应用场景。 上一节我们深入探索机器学习的根本原理,包括基本概念、分类及如何通过构建预测模型来应用这些理论,详情可见: 机器学…

centos中安装go

安装过程 (1)源码二进制下载地址 wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz (2)将下载的二进制包解压至 /usr/local目录。 tar -C /usr/local/ -xzf go1.13.5.src.tar.gz (3)设置环…

自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)

PCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动控…

week04day03(爬虫 beautifulsoup4、)

一. 使用bs4解析网页 下载bs4 - pip install beautifulsoup4 使用的时候 import bs4专门用于解析网页的第三方库 在使用bs4的时候往往会依赖另一个库lxml pip install lxml 网页代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><…

使用redisMQ-spring-boot-starter实现消息队列和延时队列

简介 redisMQ-spring-boot-starter是一个轻量级的、基于Redis实现的消息队列中间件&#xff0c;它有如下优点&#xff1a; 开箱即用&#xff0c;你几乎不用添加额外的配置支持消息队列、延时队列&#xff0c;并提供精细化配置参数提供消息确认机制支持虚拟空间&#xff0c;不…

华为算法题 go语言或者ptython

1 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的景区垃圾识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本文介绍了一个先进的基于深度学习的景区垃圾检测系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等前代算法进行了性能对比&#xff0c;通过对比实验证明了其在图像、视频、实时视频流和批量文件处理中对景区垃圾进行精…

【深度学习笔记】3_1 线性回归

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.1 线性回归 线性回归输出是一个连续值&#xff0c;因此适用于回归问题。回归问题在实际中很常见&#xff0c;如预测房屋价格、气温、销售额等连续值的问题。与回归问…

HTTP基本概念-HTTP 常见的状态码有哪些?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 常见的状态码有哪些? 1xx 类状态码属于提示信息&#xff0c;是协议处理中的一种中间状态&#xff0c;实际用到的比较少。 2xx 类状态码表示服务器成功处理了客户端的请求&#xff0c;也是我们最愿…

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四&#xff0c;首先需要查询张三的账户余额&#xff0c;扣除1000&#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务&#xff0c;临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

OpenAI Sora模型,官方技术文档翻译

技术报告地址&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators 本技术报告的重点是&#xff08;1&#xff09;将所有类型的视觉数据转化为统一表示&#xff0c;从而能够大规模训练生成模型的方法&#xff1b;以及&#xff08;2&#xff0…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及&#xff0c;互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术&#xff0c;可以实现精准定向&#xff0c;提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系&#xff0c;分析其优势和应用场景…

基于springboot+vue的智能物流管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

设计模式-创建型模式-原型模式

原型模式&#xff08;Prototype Pattern&#xff09;&#xff1a;使用原型实例指定创建对象的种类&#xff0c;并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需知道任何创建的细节…

Nginx知识笔记

一、前言 首先&#xff0c;我们来看一张关于正向代理和反向代理的图片 简单理解正向代理和反向代理的概念&#xff1a; 正向代理&#xff1a;在客户端配置代理服务器(和跳板机功能类似&#xff0c;比如公司很多机器需要通过跳板机才允许登录&#xff0c;正向代理的典型用途是…

npmjs官网(查询依赖包)

npmjs官网 可以方便的查看依赖包的安装、使用说明及相关注意事项等。 以wechat-http为例&#xff1a;

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

rabbitmq知识梳理

一.WorkQueues模型 Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c…