1.购买服务器并配置环境

1.1 购买

  • 618购买了腾讯云服务器三年最低配置(1核2G 1Mbps 50G云盘),一时激动忘记了购买前领优惠券,痛失25元。

1.2 环境配置

系统是 CentOS Linux release 7.5.1804 x84-64:cat /etc/redhat-release ,由于腾讯云服务器的镜像环境需要付费使用,因此手动安装 Java1.8,Tomcat9,MySQL8,Redis5。

1.2.1 安装Java 1.8

这里安装的是Oracle JDK1.8 而非 OpenJDK 1.8,实际使用没有多大区别,不过前者只供个人使用,后者可以供商业使用。由于Oracle官网需要登陆,没从官网获取对应的二进制包,而是找到对应的网盘资源 (提取码:f2y8),上传到服务器。

mkdir /usr/local/java8
mv jdk-8u212-linux-x64.tar.gz /usr/local/java/
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /usr/local/java8/
// 配置环境变量
vim /etc/profile
//在末尾添加
export JAVA_HOME=/usr/local/java8/jdk1.8.0_212
export JRE_HOME=${JAVA_HOME}/jre
expor CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
//生效
source /etc/profile
//验证
java -version
//还可以添加软连接(并不必须)
ln -s /usr/local/java8/jdk1.8.0_212/bin/java /usr/bin/java

1.2.2 安装Tomcat

SpringBoot已经内置了Tomcat服务器,为什么还要安装呢?这引出了我这两天未能解决的问题:用 jar包方式 未能成功上线运行,留到后面章节再说。

这里为了和 SpringBoot 2.2.1 适配,版本是 apache-tomcat-9.0.48 。官网:下载 binary Distributions→ Core→ tar.gz 或 zip ,上传至服务器。

mkdir /usr/local/tomcat9
tar -zxvf apache-tomcat-9.0.48.tar.gz -C /usr/local/tomcat9
//启动
cd /usr/local/tomcat9/apache-tomcat-9.0.48/bin
./startup.sh
//可以查看 8080端口是否监听和占用
netstat -tuplpn | grep 8080
lsof -i :8080

安装完成后,可以通过修改 conf/server.xml 来自定义配置Tomcat,其中可以配置其默认端口 从 8080 改为 80

<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
.....

同时因为我的项目是SpringBoot 打成 mall-0.0.1-SNAPSHOT.war,因此 如果要访问 应该是 http://[IP]:[port]/mall-0.0.1-SNAPSHOT。同样可以通过修改配置文件,避免在URL中写项目名的麻烦:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<!--添加如下代码-->
<Context path="" docBase="mall-0.0.1-SNAPSHOT" debug="0"/>

将 http://{my-IP}:{my-Port}/mall-0.0.1-SNAPSHOT 映射为 http://[my-IP]:[my-Port]/

但是此时还无法在网页上访问,需要配置 腾讯云服务器外层安全组和自身的防火墙,将80端口开发。安全组设置参考官网文档 ,重点介绍一下开放防火墙指定端口:

// 查看防火墙设置
firewall-cmd --state
// 如果没有开启,就开启
systemctl start firewalld.service
// 设置开机自启
systemctl enable firewalld.service
//永久设置开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
// 查看哪些端口是开启状态
firewall-cmd --list-port

这样端口开放后,就可以通过 访问 http://{my-IP}:80访问项目(如果没有对前面的项目URL映射,访问的应该是Tomcat的页面)。

1.2.3 安装MySQL8

参考之前的帖子

1.2.4 安装 redis-5.0.5

参考 长沙大鹏 -Linux安装部署Redis(超级详细),关键命令如下:

各个版本的下载地址

wget https://download.redis.io/releases/redis-5.0.2.tar.gz
// 安装依赖
yum install -y gcc-c++
mkdir /usr/local/redis
tar -zxvf redis-5.0.2.tar.gz -C /usr/local/redis
cd /usr/local/redis/redis-5.0.2
//编译
make
//安装
cd ../
mkdir {bin,etc,data}
cd redis-5.0.2/src
make PREFIX=/usr/local/redis install //结果安装的redis程序保存/usr/local/redis/bin中
cp /usr/local/redis/redis-5.0.2/redis.conf /usr/local/redis/etc/ // 修改 redis.conf,具体可以参考 https://www.cnblogs.com/hunanzp/p/12304622.html
vi redis.conf
///////主要是修改以下内容
daemonize yes //1.可以后台运行
supervised systemd //2.这样后面可以用 systemctl 控制
# bind 127.0.0.1 ::1
protected-mode no //3.这两行保证 可以从外网访问redis
requirepass 1234567 //4.自行设置是否需要设置密码,默认是注释掉的
logfile "/usr/local/redis/redis_6379.log" //5.redis日志保存文件,需要自己手动创建 touch /usr/local/redis/redis_6379.log //开启redis
bin/redis-server etc/redis.conf
lsof -i:6379
//关闭redis
bin/redis-cli -a your-password shutdown

2.SpringBoot打成 WAR包

SpringBoot版本:2.2.1

2.1 Jar包不成功

本来 SpringBoot 自带 Tomcat,直接打成 jar包就可以运行了。但是不知为何,我运行之后出现问题:一直报错:显示端口被占用


为此我在 StackOverflow上提问 。似乎是作者之一回答让我更新到2.2.7版本,看是否能解决,因为之前的版本似乎有这方面的bug。我试过,结果打包之后直接 Tomcat无法运行,郁闷了一下午。最后尝试不用内置的,而使用独立的Tomcat来运行,这样出什么问题,在日志上都能显示出来,而不像一个黑盒子。

2.2 war包部署

参考SpringBoot学习日记-部署与监控Spring Boot 2 实战:以 War 包的形式部署

1.修改 pom文件

<!--1. 显式声明打 war包,如果之前没写,默认应该是jar包-->
<packaging>war</packaging> <!--2. 排除内置的 Tomcat,关键是 provided,表面打包的时候不会带上-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency> <!--3. 打包时跳过 test,可加可不加-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>

2.将原来的 入口类 projectApplication.java 修改为继承 SpringBootServletInitializer 抽象类

原来的入口类:

public class MallApplication {
public static void main(String[] args) {
SpringApplication.run(MallApplication.class, args);
}
}

现在的入口类:

public class MallApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MallApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MallApplication.class, args);
}
}

然后在IDEA编辑器中 可以先 Build→Build Project ,然后使用Maven工具中 clean package 两个命令,直接获得 war包,然后上传到 Tomcat服务器中的 webapps。当Tomcat启动后,war包会自动解压成包。

2.3 文件映射

由于是独立的Tomcat的服务器,因此 application.properties 中的一些设置,比如 server.port,比如文件映射。但是可以在Tomcat server.xml 中可以如同前面映射项目名一样设置。参考spring boot更改tomcat的静态资源路径

<Context path="/images" docBase="/root/imooc_mall/images" reloadable="true" debug="0"/>

这样 http://{ip}:80/images 映射到 /root/imooc_mall/images

最后部署成功,访问 http://myIP/ 就可以访问部署的项目了,花了几天的时间终于成功部署了自己做的项目。

BTW :

后续的一些问题亟待解决:

  1. 生成付款二维码图片保存在/root/imooc_mall下面了;
  2. 商品上传的图片也不在指定的位置;
  3. 前端出现了问题,但是前端好像是webpack React,比较难办;
  4. 之前后端的商品排序按照综合和价格没有起作用,后面要解决一下;
  5. 支付接口无法真正实现。

慕慕生鲜上线&&腾讯云服务器配置准备的更多相关文章

  1. 腾讯云服务器配置node环境

    1:更新现有包 sudo apt-get update 2:安装依赖 sudo apt-get install vim openssl build-essential libssl-dev wget ...

  2. 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程

    1.腾讯云数据库配置 1.考虑到安全性问题,,平常不使用root用户登录,新增一个用户名neil,用来管理项目的数据库 a.首先登录root创建db_AA数据库 b.在root用户下,创建neil用户 ...

  3. 腾讯云分布式高可靠消息队列服务CMQ架构

    在分布式大行其道的今天,我们在系统内部.平台之间广泛运用消息中间件进行数据交换及解耦.CMQ是腾讯云内部自研基于的高可靠.强一致.可扩展分布式消息队列,在腾讯内部包括微信手机QQ业务红包.腾讯话费充值 ...

  4. 腾讯云+校园扶持计划是bug还是福利

    前言   上午突然收到好友的微信消息.打开一看是关于关腾讯云"云+校园扶持计划".仔细看下了意思就是用户可以花360大洋购买腾讯云服务器配置为1核2G,1M带宽的服务器3年.(腾讯 ...

  5. 【腾讯云服务器】基于centos7搭建ftp服务器(vsftpd)

    该博客分为三部分设置,1.ftp服务器搭建.2.防火墙设置  3.腾讯云安全组 一.ftp服务器搭建 1.1  安装vsftpd yum install vsftpd -y 1.2 启动vsftpd服 ...

  6. 腾讯云分布式高可靠消息队列CMQ架构

    版权声明:本文由张浩原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/126 来源:腾云阁 https://www.qclou ...

  7. 用腾讯云Gogs搭建私有git服务器

    前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubu ...

  8. 腾讯云开放云压测“黑科技“,产品上线从此不再“压力山大"

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 能否解决"高并发"问题一直是检验一个产品后台是否稳定,架构是否合理,性能是否强大的核心标准.对于产品而言,多高的并发 ...

  9. 腾讯云申请的64位ubuntu服务器配置php环境

    腾讯云申请的64位ubuntu服务器配置php环境 一.首先还是安装Lamp组合 Linux+Apache+Mysql+php 直接命令 sudo apt-get install apache2 su ...

随机推荐

  1. 最大子序和:暴力->递归->动规->线段树

    题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. LeetCode:53. 最大子序和 题解 显而易见的暴力解法 最容易想到的便是暴力穷 ...

  2. gRPC 拦截器能做些什么?

    什么是拦截器? 拦截器是一种横切维度的功能延展. 具象说明一下,高速收费站就是一种拦截器.它可以做什么?收费,查证,交通控制等等,面向所有穿行过往的车辆. gRPC 拦截器主要分为两种:客户端拦截器( ...

  3. XCTF GAME

    首先这题有两种解法,一种是使用ida查看伪代码直接写exp跑出flag,另外一种是调试,因为最近在学调试,刚好用于实战上了. 一.查壳 二.32位文件拖入od动态调试 先找到game的主要函数,插件中 ...

  4. Leetcode No.27 Remove Element(c++实现)

    1. 题目 1.1 英文题目 Given an integer array nums and an integer val, remove all occurrences of val in nums ...

  5. String、StringBuilder和StringBuffer的比较

    目录 1.String特性 1.1 不可变 1.2 字符串常量池 2.StringBuilder和StringBuffer 2.1 区别 2.2 应用场景 1.String特性 1.1 不可变 它是I ...

  6. python3安装pp过程

    并行计算的目的是将所有的核心都运行起来以提高代码的执行速度,在python中由于存在全局解释器锁(GIL)如果使用默认的python多线程进行并行计算可能会发现代码的执行速度并不会加快,甚至会比使用但 ...

  7. C语言:随机数

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌.在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机 ...

  8. mysql 按照年统计数据并存到新表中

    参考:https://blog.csdn.net/u013201439/article/details/78116575 CREATE TABLE count_year SELECT YEAR(req ...

  9. ORB随便记一记

    论文摘取 (这部分看的是泡泡机器人的翻译) 基于特征点.单目.完全自动初始化,基于PTAM框架. 相关工作 A.位置识别(大概是用于回环检测) bags of words FAB-map DBOW2 ...

  10. nacos配置本地多个实例(伪集群)

    在本地配置多个nacos实例(伪集群),一般就是配置多个nacos端口,并启动多个startup.sh脚本.网上一些博客通过修改startup.sh脚本来指定不同nacos端口,比如:./startu ...