使用ECS部署Web应用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文介绍了通过飞天加速计划体验和使用ECS的过程与心得。

本文介绍了通过飞天加速计划体验和使用ECS的过程与心得。

环境准备

选择Ubuntu作为ECS的操作系统。

重置 root 密码

我记得创建 ECS 实例的时候没有设置 root 密码,所以在实例创建完之后还是重置一下,自己设置新的 root 密码。

1

控制台->ECS->实例,找到操作->更多操作->密码/密钥->重置实例密码即可。

新建用户

一般情况下不推荐用 root 用户登录(小心误操作),所以创建普通用户:

useradd -m ivy

-m 表示为该用户创建 home 目录。

随后输入 passwd ivy 为该用户设置密码。

有时候还是要用 root 权限的(摊手),修改 /etc/sudoers ,新加一行 ivy ALL=(ALL) ALL,这样用户 ivy 就能使用 sudo 命令了。(也可以把用户加到 admin 组,取消 /etc/sudoers 中 %admin ALL=(ALL) ALL 前面的注释。)

2

更新软件

用新的用户登录之后可以先把系统中的软件包更新一下,Ubuntu 的话两条命令就行。

# 获取最新软件库
sudo apt update
# 更新软件包
sudo apt upgrade

数据库 MySQL

我们项目用到了 MySQL,Ubuntu 可以直接通过命令行安装:

sudo apt install mysql-server

安装完后查看 MySQL 的状态:

sudo systemctl status mysql
# 正常情况下应该已经是 active 状态了,如果没运行的话可以用以下命令启动 MySQL
# sudo systemctl start mysql

MySQL 安装完成后会生成数据库的 root 用户和一个管理员 debian-sys-maint(在 /etc/mysql/debian.cnf 中可以查看密码),我直接使用 root 用户登录:

sudo mysql -u root

在默认情况下 root 用户只能在 ECS 本机上登录。

导入数据

创建数据库并且指定到新创建的数据库:

CREATE DATABASE water;
USE water

我们这个项目有原型,包含一份导入数据用的 sql 文件,直接用这个文件导入就可以了:

source 文件路径

添加 MySQL 用户

为了方便远程连接,添加一个新用户并赋予权限:

CREATE USER water-admin IDENTIFIED BY '密码';
GRANT ALL ON water.* TO `water-admin`;
FLUSH PRIVILEGES;

验证用户 water-admin 的权限:

SHOW GRANTS FOR `water-admin`;

现在可以用新的用户管理数据库 water 下的表了。

(要不要重启 MySQL 我忘了,应该是不用。)

还要放开 3306 端口才能远程连接 MySQL:

sudo ufw allow 3306

再去阿里云控制台找到安全组,放行 3306 端口。

项目运行环境

项目使用了 jdk-17,所以我也安装了对应版本的 JDK:

sudo apt install openjdk-17-jdk

验证 Java 版本:

$ java --version
openjdk 17 2021-09-14
OpenJDK Runtime Environment (build 17+35-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17+35-Ubuntu-120.04, mixed mode, sharing)

项目导出和运行

为了验证项目的实际工作情况可以先把项目打包放到 ECS 上运行,这里把项目本身和依赖打包成若干个 jar 包,通过 Java 直接在后台运行,把标准输出重定向到 /dev/null,错误信息重定向追加输出到一个文件:

sudo java -jar ~/water/water_jar/water.jar 1> /dev/null 2>> ~/error.txt &

项目程序会监听 8080 端口,所以也需要放开这个端口。

使用感受

由于之前有一年用过 ECS 作为个人博客的宿主机(那时候大部分操作都由宝塔面板代劳),我倒是没有遇到太大的困难,整个过程还是比较轻松的。希望通过之后的项目开发过程,技术力能够不断提高吧。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
弹性计算 监控 负载均衡
|
7天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
19 2
|
13天前
|
移动开发 开发者 HTML5
构建响应式Web界面:Flexbox与Grid的实战应用
【10月更文挑战第22天】随着互联网的普及,用户对Web界面的要求越来越高,不仅需要美观,还要具备良好的响应性和兼容性。为了满足这些需求,Web开发者需要掌握一些高级的布局技术。Flexbox和Grid是现代Web布局的两大法宝,它们分别由CSS3和HTML5引入,能够帮助开发者构建出更加灵活和易于维护的响应式Web界面。本文将深入探讨Flexbox和Grid的实战应用,并通过具体实例来展示它们在构建响应式Web界面中的强大能力。
30 3
|
17天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
42 2
|
6天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
8天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
14 3
|
8天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
24 2
|
8天前
|
测试技术 持续交付 PHP
PHP在Web开发中的应用与最佳实践###
【10月更文挑战第25天】 本文将深入探讨PHP在现代Web开发中的应用及其优势,并分享一些最佳实践来帮助开发者更有效地使用PHP。无论是初学者还是有经验的开发者,都能从中受益。 ###
25 1
|
9天前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
37 2
|
13天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
17 4