ECS使用体验

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 参加阿里云飞天加速计划,领取ECS服务器使用体验

初识
大二软工学生一枚,第一次接触云服务器主要是最近在学linux,刚好男朋友也疯狂安利,慢慢去了解服务器的;
目前主要是部署自己的博客网站和一些项目,刚好学校最近安排的任务是部署前后端项目,也顺便体验了一把;

了解
1.反向代理实现远程连接电脑:
各个社交平台了解到不止这些用处,云服务器大有妙处:
打个比方:【以下栗子参考x乎+博客】
科研使用的学习资料放在实验室的电脑,在学校的时候可以通过局域网访问内网IP获取学习资料资源,可是在校外的时候就非常麻烦,往往需要远程软件辅助,同时远程软件的费用高昂,难以接受。此时,一台云服务器便派上用场了。
使用FRP反向代理实现Windows远程连接

实现方式:

1.租一台云服务器(ip:1.1.1.1)作为中转站【因为其含有公网ip】
2.在云服务器配置frps.ini文件【common】
a)bind_port=44444
b) token:aaabbbccc
3.在被控主机上配置frpc.ini文件【common+host】
a)代理请求公网ip:1.1.1.1
b)公网映射端口号:44444
c)token:aaabbbccc
host:【主机的ip信息+被访问进程端口号+对外访问端口号】

当然自己部署了网站写了第一篇博客,并且自制了logo也是收获颇深;
image.png

前后端分离项目
之前学校做了宠物商城项目,是对前后端分离在linux服务器的部署,借助阿里云提供的免费服务器我部署了一次比如后端的部署:
a) 搭建和配置Java程序运行环境;
b) 搭建和配置MySQL数据库环境;
c) 搭建和配置Nginx服务器环境;
d) 搭建和配置Tomcat服务器环境(如果使用Springboot的jar包运行项目,可省略该步骤);
以上四步骤各大网站都有教程,具体不再赘述。
e) 在此基础上,完成Java Web应用程序的部署和运行。
f) 搭建Nginx+Tomcat的动静分离Java Web应用程序环境,并部署运行。

这里以后端项目为展示:
后端项目:

  1. 修改项目的配置文件:
  2. 打包后端项目(双击Maven-package)
  3. 生成一个target文件,打开里边的jar包
  4. 传输到linux服务器上。这里采用阿里云的ECS云服务器。

a) 打开windows命令行,ssh远程连接服务器(输入密码进入)
image.png

  1. 登录远程服务器,查看文件:

image.png

  1. 运行sql脚本:

image.png

  1. 在jar包目录下写一个脚本运行jar包:
#start.sh
nohup java -jar mypetstore-api-0.0.1-SNAPSHOT.jar >springboot.log 2>&1 

b) 执行,生成一个日志文件:
image.png
image.png

  1. 测试:成功!

image.png

前端项目则是打包为dist,利用nignx代理。

最最最重要的是自动化部署啦!

考虑这样一个问题:
假如后端代码需要改动,那么每次都需要频繁改动,再打包上传,非常麻烦。
可以完全写一个脚本部署当服务器定时运行自动拉取项目运行,这时我们需要:

a) 搭建和配置Git环境;
b) 搭建和配置Maven环境;
c) 搭建和配置Node.js和Webpack环境;
以上三步骤各大网站都有教程,具体不再赘述。
d) 基于Git和Maven从仓库拉取代码部署后端项目,并编写自动化部署脚本;
基于Git和Node.js&Webpack从仓库拉取代码部署前端项目,并编写自动化部署脚本。

这里分享一下脚本(后端项目部分):

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=mypetstore-api-0.0.1-SNAPSHOT.jar
HOME='/home/app'
LOG_HOME='/home/app/log'
LOG_FILE='kjb-api-admin.log'
JVM="-server -Xms512m -Xmx512m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
APPFILE_PATH="-Dspring.config.location=/usr/local/demo/config/application-demo1.properties"
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
 nohup java -jar $APP_NAME > app-api.log 2>&1 &
#cd $LOG_HOME
tail -40f app-api.log
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac

后端项目举一反三,一样的逻辑思路。

总结
总之通过这次云服务器使用之旅让我受益匪浅;
A. 实验中的收货:

  1. 掌握了环境变量的配置
  2. 熟悉了防火墙的操作,顺便耍了一把云服务器
  3. 尝试自己编写脚本

a. 拓展实验的自动部署也就是自己日常生活中用命令行运行一个项目的过程,只不过完全用机器来执行
b. 更加体会了命令行相较于图形化界面的优势吧。以前觉得老是有条鄙视链:命令行的看不起GUI,因为命令行难度大一点,也不是很理解为什么需要用命令行来运行,动动手不就可以了吗?现在恍然大悟。
B. 未来的想法:

  1. 希望自己应用从项目中学到的知识来实践,继续运营甚至是重构这个项目
  2. Ningx的集群部署其实还是体会不太深刻,可能是只有单个几台的原因,将会继续探索;
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
12天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
15天前
|
弹性计算 Java Linux
ECS使用体验的文章
ECS使用体验的文章
|
6天前
|
弹性计算 Java Linux
ECS使用体验的文章
ECS使用体验的文章
|
1天前
|
弹性计算
|
1天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
2天前
|
弹性计算 Java Linux
ECS使用体验的文章
ECS使用体验的文章
|
3天前
|
弹性计算 运维 安全
阿里云ecs使用体验
整了台服务器部署项目上线
|
4天前
|
弹性计算
ECS使用体验
ECS使用体验
|
5天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
5天前
|
弹性计算
ECS使用体验
ECS使用体验