服务器购买/搭建+项目部署上线

关于服务器购买

推荐阿里云和腾讯云,两家基本都差不多。 如果只是学习短期使用,推荐阿里云,①新用户免费1个月②学生认证免费1个月,完成课程再加一个月。注意无法叠加成3个月,只能二选一

服务器搭建配置+JDK下载安装+项目运行设置可参考(MySQL下载安装不建议参考,此种方式存在bug): https://blog.csdn.net/Mou_Yang/article/details/102137861

关于服务器搭建的一些知识点
  • 关于系统选择:有些不懂Linux的小白会选择windows系统,虽然也能正常使用,而且搭建环境还同本地搭建一样。但还是推荐学一下Linux,并选择Linux系统,个人推荐Centos7或7以上(下文使用docker搭建必要)
  • 关于地域选择,访问者距离地域越近,响应的速度就越快。所以选择网站访问量最大所在的地域,一般不清楚网站使用入群的地域分布,那就选择距离你最近的地域
  • 关于 Xshell,官网下载太慢,网络上的资源鱼龙混杂,之前在网络上下载了两次,都是有捆绑软件,默认勾选,一不在意CPU就飞起了;最烦的是——挂羊头卖狗肉,试用版非说是免费版,没用几个月就没法使用了......这里提供一个真正免费的Xshell6的资源:链接: https://pan.baidu.com/s/1fzmF_I3Zw_jUD7EoQLz6NA 提取码:y0av (里面有安装注意事项和破解脚步)
  • 关于文件传输 Xshell6有个附带的ftp插件可用于文件传输,但本人倾向于使用命令,故需要安装lrzsz,实现文件上传-共享
yum install lrzsz

rz命令:弹出一个文件选择框,选择上传文件

rz

sz命令:弹出一个文件选择框,选择下载文件路径

sz xxx

上传与下载文件默认询问选择,也可设置为默认路径:文件-属性-文件传输

普通JavaWeb项目部署上线

  • 下载安装jdk+tomcat+mysql(有用到mysql的话)
  • 将项目打包(war包)放置tomcat启动目录
  • 将本地模拟的mysql数据导出.sql并在云服务器的mysql运行
  • 根据云服务器提供的公网IP访问项目

参考下文关于springboot的部署

SpringBoot项目部署上线(基于jdk+mysql)

  • 下载安装jdk+mysql(有用到mysql的话)
  • 将项目打包放置tomcat启动目录
  • 将本地模拟的mysql数据导出.sql并在云服务器的mysql运行
  • 根据云服务器提供的公网IP访问项目
SpringBoot五大特性
  • SpringApplication
  • 自动装配
  • 外部化配置
  • SpringBoot Actuator
  • 嵌入式Web容器(默认tomcat,故无需安装tomcat)
下载安装JDK+MySQL

服务器搭建配置+JDK下载安装+项目运行设置可参考(==MySQL下载安装不建议参考,此种方式存在bug==): https://blog.csdn.net/Mou_Yang/article/details/102137861

安装mysql:https://blog.csdn.net/qq_36582604/article/details/80526287 若存在旧版本或安装错误,请注意完全卸载mysql(一般卸载会残留配置文件,导致后期安装失败):https://blog.csdn.net/typa01_kk/article/details/49057073

SpringBoot项目部署上线【基于docker】

Linux系统:centos7及以上版本 SpringBoot项目打包成xxxx.jar dockerHub(下载镜像的仓库):https://registry.hub.docker.com/

  • 安装docker
yum install docker
  • 镜像加速配置(下载提速,不配置也行) 阿里云镜像加速器:注册 - 云服务器 ECS - 容器服务 - 市场 - 容器镜像服务 - 镜像加速器 中科大的镜像加速器:https://docker.mirrors.ustc.edu.cn/ 新浪:https://docker-mirror.xinglian.info 百度:https://mirror.baidubce.com 镜像站:https://www.daocloud.io/mirror#accelerator-doc 可配置多个,一个挂掉,另一个替上
vim /etc/docker/daemon.json
{
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "http://f1361db2.m.daocloud.io"]
}
  • docker安装mysql5.7 可先使用docker search mysql,查看mysql的镜像版本有哪些,再使用pull命令拉取镜像,冒号(:)后指定版本
docker pull mysql:5.7

可使用 docker images 查看已有的镜像

  • 编写DockerFile文件(与要运行的项目文件xxxx.jar放于同一目录下)
vim Dockerfile

# 基础镜像使用Java,首次使用同mysql一样先拉取java的JDk1.8镜像,镜像存在后,往后不重复执行
FROM java:8
# 作者
MAINTAINER xxxx
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将xxxx.jar包添加到容器中并更名为app.jar
ADD xxxx.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 指定容器需要映射到主机的端口
EXPOSE 80
  • 创建镜像(镜像名随意,下面启动要用,注意最后有一个点)
docker image build -t xxxx_image .
  • 创建数据挂载点mysql_data(存储数据的地方,即便mysql容器删除了,数据还在)
docker volume create mysql_data
  • 运行mysql镜像(指定mysql容器名为mysql_image,mysql登录密码为xxxx,-d表示后台启动)
docker run --name mysql_image -p 3306:3306 -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxx -d mysql:5.7
  • 进入mysql容器(进入容器 /bin/bash) exec方式进入,exit退出后,容器继续运行,不会跟着退出 -i 以交互模式运行容器,通常与 -t 同时使用; -t 为容器重新分配一个伪输入终端
docker exec -it mysql_image bash
  • 进入mysql
mysql -uroot -p
  • mysql授权(授予root用户所有权限)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;	
  • mysql授权后需要刷新,生效
FLUSH PRIVILEGES;	

此时可用navicate或SQLyog连接数据库

  • 运行镜像 --net指定运行网络为host,避免IP丢失无法正常访问; -p指定端口映射,将8888映射到80端口
docker run -it --net=host --name xxxx_image -p 80:8888 xxxx_image

查看运行镜像的日志

  • 可通过在项目中配置,将日志写入指定磁盘文件
  • 使用docker的logs命令查看
docker logs 镜像名(或镜像ID)

项目(xxxx.jar)变更,重新部署

与DockerFile同一目录下,项目名不变,否则Dockerfile里面指定的项目名也得跟着变更。先删除已有的镜像再重新创建新的镜像。

  • 查看已存在的镜像
docker images
  • 查看运行中的容器/进程
docker ps
  • 停止运行中的容器
docker stop 容器ID(IMAGE ID)
  • 移除容器
docker rm 容器ID(IMAGE ID)
  • 移除已停止的镜像
docker rmi 镜像ID

-f 是通过信号强制移除运行中的容器

在这里插入图片描述

  • 重新创建镜像(镜像名随意,下面启动要用,注意最后有一个点,表示当前目录)
docker image build -t xxxx_image .
  • 再次运行容器 --net指定运行网络为host,避免IP丢失无法正常访问; -p指定端口映射
docker run -it --net=host --name 设置运行镜像名 -p 宿主机端口:容器端口 xxxx_image
end
  • 作者:suoyue_zhan(联系作者)
  • 发表时间:2020-11-11 08:15:46
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者公众号二维码(公众号二维码见右边,欢迎关注)
  • 评论