Skip to content

云服务器

一. 购买云服务器

1.1. 注册阿里云的账号

云服务器我们可以有很多的选择:阿里云、腾讯云、华为云。

  • 目前在公司使用比较多的是阿里云;
  • 我自己之前也一直使用阿里云,也在使用腾讯云;
  • 之前华为云也有找我帮忙推广他们的活动;

但是在我们的课程中,我选择目前使用更加广泛的阿里云来讲解:

我们需要注册阿里云账号

1.2. 购买云服务器

购买云服务器其实是购买一个实例。

1.来到控制台:

2.创建实例,选择类型和配置

3.配置网络安全组

4.创建实例

二. 配置云服务器

2.1. 连接云服务器

通常情况下,我们会通过 ssh 连接云服务器:

  • Windows 电脑上我推荐直接使用 git bash ssh 工具;
  • Mac OS 电脑上我们可以直接通过终端来使用 ssh 工具;

image-20231016201930478

知识点补充:如果在计算机中想要更改主机名

  • 修改之后需要重启服务器
shell
hostnamectl --static set-hostname coderwhy

2.2. 安装 Node.js

我们安装软件使用工具:dnf

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

检查 dnf 是否可用:

shell
dnf --help

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

shell
# 搜索软件包
dnf search nodejs

# 查看软件包信息: nodejs的版本是10.21.0
dnf info nodejs

# 安装nodejs
dnf install nodejs

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

  • 使用更高的版本,比如最新的 LTS 或者 Current 版本;
  • 这个时候我们可以使用之前讲过的一个工具:n;
shell
# 安装n
npm install n -g

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

# 通过n切换版本
n

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

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

2.3. 安装 MySQL

2.3.1. 安装 MySQL

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

shell
# 查找MySQL
dnf search mysql-server

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

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

启动 mysql-server:

shell
# 开启MySQL后台服务
systemctl start mysqld

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

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

2.3.2. 配置 MySQL

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

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

配置 MySQL 账号和密码:

shell
mysql_secure_installation

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

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

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

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

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

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

# 配置生效
FLUSH PRIVILEGES;

但是呢,阿里云默认有在安全组中禁止掉 3306 端的连接的:

  • 所以我们需要配置 3306 的安全组

image-20231016202019345

2.3.3. 数据库迁移

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

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

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

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

image-20231016202047153

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

image-20231016202113368

三. 部署 Node 项目

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

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

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

  • 忽略 uploads
  • 忽略.env

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

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

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

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

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

shell
cd /
mkdir why
cd why/

clone 项目到 why 中:

shell
git clone https://github.com/coderwhy/coderhub.git

3.3. VSCode 中打开代码

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

image-20231016202202069

连接远程服务器:

image-20231016202223633

查看远程的项目代码:

image-20231016202309951

安装项目的依赖:

shell
npm install

配置.env 文件

sh
APP_HOST = http://121.4.125.213/
APP_PORT = 51011

MYSQL_HOST = localhost
MYSQL_PORT = 3306
MYSQL_DATABASE = coderhub
MYSQL_USER = root
MYSQL_PASSWORD = Coderwhy888.

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

image-20231016202019345

测试请求的结果:

image-20231016202458236

3.4. pm2 启动 node 程序

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

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

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

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

安装 pm2:

shell
npm install pm2 -g

pm2 常用的命令:

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

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

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