项目上云实战:如何把Java项目搬上云服务器?

Posted 小鲍侃java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目上云实战:如何把Java项目搬上云服务器?相关的知识,希望对你有一定的参考价值。

1.中小型企业项目开发完成后应如何运行?

最近在后台私信中,很多小伙伴问询博主,中小企业项目开发完成后,是否在pc机上直接运行。答案是否定的,专业的软件开发企业都会选择linux服务器作为运行环境,企业服务器有两种:一种是实体机房,一种是云服务器。

2.传统机房和云服务器如何选择

如今使用云服务器企业的比例已经大大超过传统机房,理由如下:

  1. 机房成本过大,博主公司前些日为当地某政府机关搭建机房,花费需要近百万,一般企业难以接受成本。
  2. 施工难度高,需要优秀网络人才做个性化设计应对客户各类需求。
  3. 后期维护成本高,如果网络工程师完成的效果是以下样子,可以自行脑补后期如何维护。
  4. 软件运行的前提是网络安全,使用安全软件和聘请软件安全人员又是一大笔花费。
  5. 容灾能力较差,如果有自然、人为灾害造成数据丢失,后果无法估计。
    现有环境下,只有少数政府、银行等极其保密的项目才需要选用传统机房。

3.如何选择云服务器

在各大厂商的云服务器产品中,博主推荐华为云服务器,对比其他云服务器有以下特点:

3.1 安全可靠服务好

华为云的机房安全等级达到了Tier4,安全上的专项研发占总体研发投入5%,通过了全球100+合规认证,为用户数据安全提供全程护航。同时,华为承诺不用技术手段非法获取客户数据、不强迫客户交换数据。并且华为云在300+城市有本地团队,提供7*24小时咨询,可深度定制解决方案。在云服务器使用过程中,华为云提供一系列的监控与运维功能,操作与监控更加便捷。

3.2 领先技术实力,更懂企业客户

华为云承袭华为30+年企业服务经验积淀,更懂企业需求,全面覆盖企业业务场景,并提供对应解决方案与最佳实践。同时华为云通过在研发上的持续高投入,掌握云计算根技术,可轻松应对企业业务安全、高并发、快速创新等业务挑战。并且华为云可以提供专属资源,满足特定行业数据物理隔离需求,资源独享,无需担心资源抢占,最低0.5ms稳定低时延,99.9999%业务高可用。

3.3 运维成本低

企业可以根据使用需求按需付费,无需固定资产投资。云服务器灵活弹性,资源可按照峰值建设利用,减少流量与资源的浪费。而且可以在云上随时使用最新的技术,按需使用,实施周期也大大缩短。

3.4 性能优越

接下来,将通过选择市面上针对中小型企业的云服务器产品:华为云HECS(云耀云服务器)和阿里云共享标准型S6实例(以下简称“ALS6”)进行一个对比测评,让我们来看看实际的表现如何。
测试过程,选择HECS和ALS6位于北京的机房,测试配置均为4C8G。具体配置如下:

3.4.1 处理器与内存性能

处理器表现上,经过连续五次跑分,我们取单核整型、单核浮点型、多核整型、多核浮点型四个跑分结果的平均值来对HECS和ALS6的处理器性能进行对比,结果如下:

通过测试我们看到HECS内存表现远好于ALS6,稳定性更高更可靠,内存性能表现更好。

3.4.2 网络性能

这里使用一台测试机和一台陪练机作为测试基础进行测试。首先进行ping时延测试,具体测试结果如下:

通过测试发现,HECS的ping测试时延更低一些,在0.1毫秒上下,HECS在服务器内网间时延上更有优势。

3.4.3 存储性能

存储规格选型上,选择了1000G的华为云超高IO云硬盘、阿里云SSD硬盘,分别挂载到HECS和ALS6上作为系统盘,并使用fio对其进行性能测试。测试结果如下:

通过测试数据可以看出,华为云超高IO云硬盘挂载到HECS后可以达到其宣称的指标规格,性能优于阿里云SSD硬盘,同时在稳定性方面也更胜一筹。

3.5 双11上云优惠多多

恰逢双11,华为云还推出了一系列网站和企业应用上云场景的组合优惠,从现在到11月30日,所有场景组合折上9折起,还能领取5000元礼券。企业用户还能领3年时长新购券,抢完即止。还有万元礼包、轮盘抽奖、服务支持、储值买赠、限时免单等福利,实在是网站和企业应用上云不能错过的一大良机。

4.手把手教你使用云服务器发布Java项目

当购买完云服务器后,需要熟练掌握部署的linux语法,下文总结了博主本司在华为云服务器的部署过程。
本次部署过程采用了最基础的发布方式,全文傻瓜式教程,按照命令输入即可,晋级可以自行查找docker,k8s等部署方式。
项目需要jdk,mysql,redis等传统依赖,安装完毕后即可运行项目。
注意:软件安装包建议使用网盘地址,官方地址过慢。

4.1 安装jdk

4.1.1 下载jdk8

直接上网盘链接:https://pan.baidu.com/s/1Ip6ILZ5eU90aqNryUqwFgw
提取码:8por

4.1.2 导入linux中

软件安装在usr/local中,可使用ssh工具直接传入。

4.1.3 解压

cd /usr/local
tar -zxvf jdk-8u231-linux-x64.tar.gz

4.1.4 环境变量配置

vi /etc/profile

按i键,切换成编辑模式。找到内容末尾,按图片输入下面一段话。在unset i的前面输入 。

export JAVA_HOME=/usr/local/jdk1.8.0_231
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(!!!注意:JAVA_HOME的路径是你实际解压后的JDK的路径,千万别写错了)


按Esc退出编辑模式,输入:wq保存并退出。

4.1.5 环境变量生效

source /etc/profile

4.1.6 验证

java -version


显示版本号就是安装成功了。

4.1.7 jdk相关的其他命令

查看JDK版本:java -version
查看java执行路径:which java
查看JAVA_HOME路径:echo $JAVA_HOME
插看PATH内容:echo $PATH

4.2 安装mysql数据库

4.2.1 下载

直接上网盘链接:https://pan.baidu.com/s/1FNijjVILpp_96nbZrFQ-iQ
提取码:s59l

4.2.2 解压

新建一个文件夹,然后进入在其中解压。

tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

4.2.3 移动并重命名

mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql

4.2.4 创建mysql用户组和用户并修改权限

cd /usr/local/mysql
groupadd mysql
useradd -r -g mysql mysql
mkdir -p  /data/mysql              #创建目录
chown mysql:mysql -R /data/mysql   #赋予权限

4.2.5 配置my.cnf

vim /etc/my.cnf

配置如下。

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1

4.2.6 初始化数据库

cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize


注意:一定要和系统的版本对上,32位下32位的安装包,否则报错。mysqld: mysqld: cannot execute binary file。

4.2.7 查看密码

cat /data/mysql/mysql.err


注意:包括最后的那个 . 而且mysql输入密码没有光标的,直接复制粘贴也可以。

4.2.8 启动mysql,并更改root 密码

先将mysql.server放置到/etc/init.d/mysql中。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

启动服务。

service mysql start
ps -ef|grep mysql

停止服务。

service mysql stop

4.2.9 下面修改密码

先登入初始密码 ,上文中查看出来的那一串,直接复制就可以。

./mysql -u root -p 


登陆成功。

4.2.10 更改密码

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;       

4.2.11 更改配置,使用navicat连接

use mysql                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;   

如果不希望每次都到bin目录下使用mysql命令则执行以下命令。

ln -s  /usr/local/mysql/bin/mysql    /usr/bin

4.3 安装redis

4.3.1下载

访问官网,下载即可,比较小,redis地址请访问:Redis官网。
注意:要先安装c/c++环境!!!

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

4.3.2 解压

解压安装包,会在目录下生成一个文件夹。

tar zxvf redis-5.0.0.tar.gz

4.3.3 编译

然后进入解压后的文件夹编译。

make

4.3.4 修改配置文件redis.conf

这里主要修改三个部分。需要把下面配置注释/修改。

bind 0.0.0.0        #将该行注释
daemonize yes       #将后台运行设为yes
protected-mode yes   #将安全模式设为yes
requirepass 123456  #设置密码

4.3.5 运行

cd src
./redis-server  ../redis.conf

4.3.6 验证

查看是否启动。

ps axu | grep redis

4.3.7 停止

./redis-cli shutdown

4.4 启动jar包

在idea中执行mvn clean install,并将打成的jar包通过ssh传输进入服务器,执行nohup java-jar 包名即可。

4.5 如何发布前端项目

4.5.1 安装nginx

4.5.1.1 安装依赖

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

4.5.1.2 下载

nginx下载地址如下:直接下载即可。请选择较新的版本。

4.5.1.3 复制进入linux

下载nginx-1.14.2.tar.gz,移动到/usr/local/下。可以使用ssh工具直接复制。

4.5.1.4 解压

tar -zxvf nginx-1.14.2.tar.gz

4.5.1.5 编译

##进入nginx目录

cd nginx-1.14.2

配置。

./configure --prefix=/usr/local/nginx-1.21.4

编译安装。

make
make install

4.5.1.6 验证

测试是否安装成功

./sbin/nginx -t

出现异常

原因分析:nginx/目录下没有logs文件夹。
解决方法:

mkdir logs
chmod 777 logs

安装成功。

4.5.1.7 启动nginx

cd /usr/local/nginx/sbin
./nginx //启动nginx

启动成功

配置nginx开机自启动

vim /etc/rc.d/rc.local

4.5.2 打包

打包生成dist文件。

yarn run build

在nginx中新建jeecg-boot文件夹,将生成的dist文件夹放入。

4.5.3 修改配置文件

修改nginx配置文件如下,文件位置:/usr/local/nginx-1.14.2/conf/nginx.conf

server 
                listen       80;
                server_name  你的域名;

                #后台服务配置,配置了这个location便可以通过http://域名/jeecg-boot/xxxx 访问                
                location ^~ /jeecg-boot 
                        proxy_pass              http://127.0.0.1:8080/jeecg-boot/;
                        proxy_set_header        Host 127.0.0.1;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                
                #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
                location / 
                        root   html;
                        index  index.html index.htm;
                        if (!-e $request_filename) 
                                rewrite ^(.*)$ /index.html?s=$1 last;
                                break;
                        
                
        

4.5.4 验证

访问http://域名/jeecg-boot即可

由此可见,项目已发布成功。

5.总结

企业上云已经是软件行业发展的趋势,如东软等大型企业已完成由机房到云服务器的转变,而中小型企业也应该紧跟潮流,替换传统方式,全面拥抱云服务器,以减少开发成本,提高客户体验。对于我们来说,使用云服务器部署私活、个人站点也是一个不错的选择。而华为云服务器价格、品质、售后都极为优秀,大家赶紧趁着双11优惠入手一台操练起来吧。

以上是关于项目上云实战:如何把Java项目搬上云服务器?的主要内容,如果未能解决你的问题,请参考以下文章

项目上云实战:如何把Java项目搬上云服务器?

把腾讯搬上云:云服务器 CVM 的半部进化史

JavaWeb项目上云教程(Java项目在腾讯云上部署操作教程)

JavaWeb项目上云教程(Java项目在腾讯云上部署操作教程)

《Netty+JavaFx实战:仿桌面版微信聊天》代码开源上云部署视频讲解,只为让你给点个Star!

全民上云时代 如何选择云服务最划算?