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

文章目录

  • 一、服务器安装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://xiahunao.cn/news/2806152.html

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

相关文章

【二十七】【C++】二叉树练习

606. 根据二叉树创建字符串 给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与…

集成TinyMCE富文本编辑器

若依的基础上集成TinyMCE富文本编辑器 前端bootstrap TinyMCE官网链接 TinyMCE所需静态资源下载链接 开源项目-若依链接 将TinyMCE静态资源包放入项目中&#xff1b; 代码引入css&#xff1a; <!-- 引入TinyMCE CSS --><link th:href"{/ajax/libs/tinymce/j…

抖音视频评论数据提取软件|抖音数据抓取工具

一、开发背景&#xff1a; 在业务需求中&#xff0c;我们经常需要下载抖音视频。然而&#xff0c;在网上找到的视频通常只能通过逐个复制链接的方式进行抓取和下载&#xff0c;这种操作非常耗时。我们希望能够通过关键词自动批量抓取并选择性地下载抖音视频。因此&#xff0c;为…

什么是调制比

一般情况下&#xff0c;调制波和载波的最大幅值是不一样的。 正弦波的最大幅值低于三角波的最大幅值。 这样做的目的就是产生最大占空比&#xff08;2000W逆变器中最大占空比是80%&#xff09; 调制波就是正弦波的最大幅值比三角载波的最大幅值 问题1 为什么调制波要小于1&…

Oracle不能启动,提示设备空间不足,实际上是信号量不够(ORA-27300,ORA-27301,ORA-27302)

我的一个客户的Oracle数据库不能启动&#xff0c;出现下面的提示&#xff1a; ORA-27154: post/wait create failed ORA-27300: OS system dependent operation:semget failed with status: 28 ORA-27301: OS failure message: No space left on device ORA-27302: failure oc…

邮件发送/接收过程分析、常见邮箱sport/dport列举、检测规则开发思路分析

一、邮件发送和接收过程分析 &#xff08;转载自&#xff1a;邮件的发送和接收过程——STMP、POP、IMAP、MIME_当收件人接收电子邮件时自己的邮件服务器通过什么收文件-CSDN博客&#xff09; 电子邮件发送协议 是一种基于“ 推 ”的协议&#xff0c;主要包括 SMTP &#xff1…

代码随想录算法训练营第60天 | 647.回文子串 + 516.最长回文子序列 + 动态规划总结篇

今日任务 647. 回文子串 516.最长回文子序列 动态规划总结篇 647.回文子串 - Medium 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串…

1.openEuler概述及安装指南(一)

openEuler OECA认证辅导&#xff0c;标红的文字为学习重点和考点。 1.openEuler简介 openEuler是一款面向全球的开源操作系统 支持ARM、X86等多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff1a;高效、稳定、安全 适用于数据库、大数据、云计算、人工智能等多种应用…

maven3旧版本的下载地址(含新版本)

因为现有的3.8版本与IDEA不兼容&#xff0c;我需要下载3.6版本&#xff0c;但是官网的位置非常隐蔽&#xff0c;找了很多资料才看到。故记录一下。 第一步 进入网址&#xff0c;选择需要的版本 Index of /dist/maven/maven-3 第二步 选择binaries 第三步 选择zip文件下载就可…

Seata Server 服务搭建

概述 Seata 分布式事务需要 Seata Seaver 支持&#xff0c;Seata Server在 架构中扮演着 事务管理器的角色。Seata 服务需要往 Nacos 注册中心注册、以及读取配置文件&#xff0c;因此 Seata 启动前需要部署 Nacos 环境。 安装包下载 下载地址: https://download.csdn.net/dow…

【ArcGIS】利用高程进行坡度分析:区域面/河道坡度

在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操案例1&#xff1a;流域面上坡度计算案例2&#xff1a;河道坡度计算2.1 案例数据2.2 操作步骤 参考 坡度 坡度是地表单元陡缓的程度&#xff0c;通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数…

如何快速导出vercel project中的环境变量

我在vercel中集成了某些插件或者链接了数据库&#xff0c;要如何快速的导出这些环境变量呢&#xff1f; 具体方法如下&#xff1a; npm i -g vercelvercel linkvercel env pull .env.local首先是安装vercel然后登录vercel 最后拉取环境变量到.env.local

虚拟机的四种网络模式对比

nat网络地址转换 nat网络 桥接 内网模式 仅主机

海外媒体推广通过5个发稿平台开拓国际市场-华媒舍

随着全球化的进程&#xff0c;国际市场对于企业的吸引力日益增加。进入国际市场并获得成功并非易事。海外媒体推广发稿平台成为了一种重要的营销手段&#xff0c;能够帮助企业在国际市场中建立品牌形象、传递信息和吸引目标受众。本文介绍了五个海外媒体推广发稿平台&#xff0…

Vue3项目结构分析

node_modules: 是项目npm install下载的node依赖库。 public&#xff1a; favicon.ico: 网页图标logo图片。index.html: 入口html。是一个基础的html页面&#xff0c;其中进行网页最基础的设置&#xff0c;并且设置了id为app的div盒子。该页面即为Vue单页面应用的基础页面。后…

vue+node.js美食分享推荐管理系统 io551

&#xff0c;本系统采用了 MySQL数据库的架构&#xff0c;在开始这项工作前&#xff0c;首先要设计好要用到的数据库表。该系统的使用者有二类&#xff1a;管理员和用户&#xff0c;主要功能包括个人信息修改&#xff0c;用户、美食类型、美食信息、订单信息、美食分享、课程大…

汇编语言movs指令学习

字符串传送指令(Move String Instruction) movs 该指令是把指针DS:SI所指向的字节、字或双字传送给指针ES:DI所指向内存单元&#xff0c;并根据标志位DF对寄存器DI和SI作相应增减。该指令的执行不影响任何标志位。 记不清这指令是8086就有的&#xff0c;还是386以后新加的&…

大蟒蛇(Python)笔记(总结,摘要,概括)——第9章 类

目录 9.1 创建和使用类 9.1.1 创建Dog类 9.1.2 根据类创建实例 9.2 使用类和实例 9.2.1 Car类 9.2.2 给属性指定默认值 9.2.3 修改属性的值 9.3 继承 9.3.1 子类的_init_()方法 9.3.2 给子类定义属性和方法 9.3.3 重写父类中的方法 9.3.4 将实例用作属性 9.3.5 模拟实物 9.…

*MYSQL--索引--内部原理

MYSQL的索引根据功能,主要有三大类型: 1.HASH索引 2.二叉树 3.BTREE索引 一:HASH索引 1.内部原理: 在设置了某列为索引列之后,并且开始或者将要在相应索引列创建数据的时候,系统通过某种算法 F(X) 自动计算出来一个十六进制的哈希值,这个哈希值能够对应相应的字段值 所以…

香港Web3:香港虚拟货币 OTC 业务如何合规开展?

撰文&#xff1a;刘红林 文章来源Techub News专栏作者&#xff0c;搜Tehub News下载查看更多Web3资讯。 香港虚拟货币监管两手抓 2024 年 2 月 2 日&#xff0c;香港财经事务及库务局局长许正宇表示&#xff0c;政府认为有需要把虚拟货币场外交易所 (OTC) 纳入监管&#xff0…