html网页如何上线,从零开始上线网站的日常(二)— 第一次上线

news/2024/5/15 1:19:08/文章来源:https://blog.csdn.net/weixin_32822089/article/details/118038661

上一章:从零开始上线网站的日常(一)— 前后端分离网站本地调通

本章目标:在云服务器上线上一章完成的网站

时间:2019.05.13

零. 步骤

项目打包

云服务器环境部署(JDK & Nginx)

项目部署

部署脚本编写

一. 项目打包

1. 前端项目打包

前端项目打包比较简单,进入前端项目目录,运行yarn build即可完成打包

bVbsAdk?w=1264&h=598

打包结果即当前目录下的 dist 文件夹,其内容如图所示:

bVbsAdQ?w=458&h=264

将 dist 文件夹压缩为dist.zip包即可

2. 后端项目打包

1) 使用 IDEA 打包后端项目

A. 配置 IDEA

a. 点击IDEA 顶部栏 File - Project Structure

bVbsAgj?w=780&h=716

b. 在 Project Structure 窗口中点击 Artifacts - JAR - From modules with dependencies

bVbsAgP?w=1316&h=830

c. 在 Create JAR from Modules 中点击 Main Class 右边的文件夹图标,在弹出的 Select Main Class 框中选中 SpringBoot 项目的启动文件(一般会自动显示)

bVbsAkp?w=2108&h=968

d. 在 JAR files from libraries 部分选中第二项,下方目录默认即可,点击确认.

bVbsAkM?w=1014&h=618

e. 打包配置已经完成,可以看到 Project Structure-Project Settings-Artifacts 中,已经出现了一个 xx:jar 的配置,在其 Output Layout 部分可以看到项目包含的 Maven 库,点击右下角 OK 确认即可.

bVbsAJQ?w=2258&h=1400

f. 生成文件如图所示

bVbsAJU?w=660&h=468

B. 打包项目

a. 清除:首先在 IDEA 右侧点击 Maven, 进入 项目名-Lifecycle , 双击 clean 清除旧文件

bVbsAJ1?w=2892&h=1842

b. 打包:完成清除之后双击 package , IDEA 将开始执行打包操作

bVbsALt?w=2880&h=1800

c. 结果:进入 target 目录检查打包之后的 jar 文件

bVbsALz?w=1778&h=1656

3. 本地启动部署包

现在已经完成了前后端项目的打包,在把项目部署到服务器之前,可以在本地尝试运行部署包

1)本地启动后端部署包

由于本地已经安装了 Java 环境且 SpringBoot 内置 Tomcat,所以只需要使用 Java 启动即可(进入打包结果目录),命令如下

java -jar jar包名.jar

运行效果如下所示:

bVbsAbP?w=1138&h=1136

2)本地启动前端部署包

这里我们选择全局安装 命令行服务器http-server,用它在dist 目录开启服务。命令如下:

yarn global add http-server

cd dist

http-server

操作流程效果如下图所示:

bVbsAf1?w=2218&h=560

3)联调测试

在浏览器输入回显的地址即可访问打包后的前端项目,运行结果如下所示:

bVbsALV?w=2880&h=1716

前端项目运行成功且后端接口回显正确,说明联调通过,可以准备发布上线了。

二. 云服务器环境部署(JDK & Nginx)

本章目标是完成云服务器的环境部署,为了保证流程准确性,已将原有服务器重装系统,真正从零开始。(Tip:除非是自己的服务器不然不要随便重装)

云服务器厂商:腾讯云

系统版本:Centos7.4 64位

JDK 版本:jdk1.8.0_211

1. ssh登录云服务器

云服务器可以自行选购,最终会获得自己服务器的公网 IP 、用户名(一般默认为 root)和登录密码,这对用密码方式登录的情况已经足够了。开启终端输入 ssh 用户名@公网IP 然后回车,输入登录密码再次回车即可完成登录进入系统终端,演示图如下:

bVbsAL0?w=1142&h=236

2. JDK环境部署

JDK 环境为 SpringBoot 项目的运行提供了运行环境支持,所以需要先进行 JDK 环境安装, 步骤如下:

1) 检查系统是否自带 JDK 或者 openJDK,命令如下所示:

java -version

我的运行结果如下图所示,这种情况是系统不自带 JDK 环境:

bVbsAL3?w=556&h=102

如果运行结果和我不相同的话可以参考网上教程排查操作.

2) 下载 JDK

在服务器上新建文件夹用来存储安装包及上传文件,然后进入该文件夹

bVbsAMp?w=542&h=122

由于现在 Oracle 加了下载限制所以不能通过 wget 下载官网的包,只能在本地电脑先打开Oracle官网-Java下载,注册后登录下载 jdk-8u211-linux-x64.tar.gz 文件

bVbsAMB?w=1180&h=724

再通过 scp 上传到远程服务器上刚刚创建的 temp 文件夹, 命令如下:

scp jdk-8u211-linux-x64.tar.gz root@远程服务器的 IP 地址:/temp

bVbsAMF?w=1136&h=114

3) 安装 JDK

说是安装,其实是将下载下来的压缩包解压到指定位置,然后配置一下环境路径就搞定了。现在创建 java 目录并解压:

mkdir /usr/local/java

tar -zxvf /temp/jdk-8u211-linux-x64.tar.gz -C /usr/local/java/

然后使用命令 vim /etc/profile 打开配置文件,在文件末尾加上下面的内容后保存退出

export JAVA_HOME=/usr/local/java/jdk1.8.0_211

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

最后使用命令 source /etc/profile 使配置生效,再次输入java -version查看 JDK 版本即可

bVbsAMJ?w=976&h=112

3. Nginx环境手动部署

不同于直接访问某个 html 文件的前端项目,Vue这一类单页应用项目的正常运作需要将全部路由指向 index.html 文件,再由其路由机制处理跳转到对应的显示组件,所以这里我们需要借助 Nginx 来协助转发。

安装 Nginx 的两种方法可以看我之前的这篇文章Nginx笔记-0-Centos环境下安装,这里我们选择 从源代码安装 的方式, 安装完成之后尝试启动 Nginx, 并在本地浏览器通过服务器 IP 地址访问,如果 Nginx 配置成功并完成启动将能够访问到 Welcome to Nginx界面 即开启成功.

三. 项目部署

1. scp 上传项目到服务器

现在继续将前后端的部署包传输到服务器的temp文件夹

# 进入前端项目文件夹,进行前端部署包上传

scp dist.zip root@远程服务器的 IP 地址:/temp

# 进入后端项目文件夹的 target 目录,进行前端部署包上传

scp pokemon-0.0.1-SNAPSHOT.jar root@远程服务器的 IP 地址:/temp

2. 后端项目部署 & 测试

1). 项目部署准备

用下面的命令创建新文件夹并将项目部署包移动到文件夹中

mkdir /usr/local/pokemon

cp /temp/pokemon-0.0.1-SNAPSHOT.jar /usr/local/pokemon

cd /usr/local/pokemon/

2). 直接执行

java -jar pokemon-0.0.1-SNAPSHOT.jar

bVbsAMN?w=1144&h=1204

由于 SpringBoot内部自带 Tomcat,所以后台程序已经在服务器上的端口上打开了,我们可以在本地用浏览器访问 远程服务器IP地址:8095/hello, 效果如下所示:

bVbsAPL?w=1496&h=236

后端程序在服务器上运行成功了!

3). 后台执行

我们上面通过命令直接运行了后端程序,但是关闭终端或者 Ctrl+C 之后程序便会结束,这对需要长时间工作的后端程序来说是不科学的,我们需要通过某种方式让后端程序一直在服务器上运行,它的实现很简单,只需要在原本的直接运行命令上稍作修改(结尾不要漏掉):

nohup java -jar pokemon-0.0.1-SNAPSHOT.jar &

运行过程图如下所示:

bVbsAMS?w=1116&h=146

运行之后显示了一个数字,然后 Ctrl+C 关掉再访问接口,发现依旧可以访问到接口数据,至此后端程序已经成功部署到服务器上了!

如果想要关闭应用, ps -ef | grep pokemon-0.0.1-SNAPSHOT.jar 查询到后端程序运行的 PID 号,然后使用 kill 后端程序PID号 来关闭程序, 操作过程如下所示:

bVbsAMT?w=1158&h=264

当然本章节目的是把后端程序运行起来,这样接下来才能与线上的前端配合完成部署。

3. 前端项目部署 & 测试

1) 项目部署准备

前端打包文件现在正以 zip 格式静静躺在/temp 等待部署,现在我们将它移动到 /usr/share/nginx/html 目录(这是 Nginx 默认配置的前端目录,Nginx 的访问成功页面就是这里面的 index.html),然后将文件名字修改为 pokemon, 过程如下所示:

bVbsAMU?w=1008&h=620

前端项目不需要像后端项目一样运行,所以我们尝试用链接远程服务器IP/pokemon/index.html来访问前端项目了,效果如下:

bVbsANw?w=2878&h=1800

在浏览器上看到页面一片空白,但是标题写着 pokemon-fe,说明已经访问到了 index.html 文件,之所以不能显示可能跟右侧的失败请求有关,鼠标点击一条失败的请求看看原因:

bVbsANx?w=1428&h=884

可以看到,同在一个 pokemon 文件夹下的 css/app.6d7f6bba.css 文件,访问路径上却比浏览器地址栏的 index.html 文件缺少了 /pokemon 的路径,导致了资源访问的失败,这是为什么呢,我们来看看 index.html 中是如何引用该css文件的:

bVbsAND?w=1424&h=788

index.html 对于该 css 文件直接通过 /css/app.6d7f6bba.css 引用, 而 Nginx 的前端相关地址指向默认是 html 文件夹(/usr/share/nginx/html), 请求 IP 地址/css/app.6d7f6bba.css 指向的实际文件地址自然是 /usr/share/nginx/html/css/app.6d7f6bba.css 了,所以 css 和 js 都不能被正确访问到。

想要解决这个问题, 思路有两种。一种是改项目配置的思路,在代码中通过配置文件为项目的资源添加路径,也就是使 index.html 中的引用改为 /pokemon/css/app.6d7f6bba.css , 这样就能够正确访问到资源了,不过再改一次代码并上线稍显繁琐,这次我们可以先尝试借助 Nginx 的力量,在不改代码的情况下修复这个问题。

2) Nginx 导航

Tip:本小节内容仅为入门学习引导使用,正式环境部署项目的 Nginx 配置请参考之后章节

之后进入 /usr/share/nginx 目录, 运行vim nginx.conf, 修改 location / 配置如下:

bVbsANJ?w=658&h=184

然后运行 Nginx 操作命令测试配置并使配置生效:

bVbsANP?w=1126&h=120

将根目录的 root html 改为 root html/pokemon, 这样就能完成将所有请求转发到 pokemon 目录下了, 现在我们访问前端项目也无需输入 /pokemon 了,于是我们尝试访问 远程服务器 IP 地址/index.html,结果如下:

bVbsANQ?w=2880&h=1800

发现页面还是一片空白,只出现了 Home | About,而且右侧的请求全部成功,那么问题出在哪呢?尝试点击一下页面上的 Home 和 About 发现居然能够回到正常的工程页面,浏览器地址栏的路径非别是 远程服务器 IP 地址 及 远程服务器 IP 地址/about

bVbsANR?w=2878&h=1800

那么...

bVbsANS?w=474&h=355

当我们只是通过 远程服务器 IP 地址 访问的时候,请求进入 /pokemon 目录并被 Vue-Router 所处理到,接着依照前端项目中的 router.js 文件导航到组件 Home 并渲染,于是我们看到了显示着 Vue Logo 的界面,使用 远程服务器 IP 地址/about 访问亦是此原理。

那么为什么访问 远程服务器 IP 地址/index.html 只能看到只有 Home|About 的界面呢?答案就是路由找不到 index.html 这个路径,然后只能将其作为一个静态资源来解析渲染,等同于现在访问远程服务器 IP 地址/css/app.6d7f6bba.css只会渲染文字,,然而 html 文件不同于 CSS 和 JS 文件,它会被浏览器解析并显示,于是就出现了只包含 Home| About 的白屏界面了!以上(古美门脸

现在我们已经部署成...等等,这是什么

bVbsAN5?w=2888&h=1800

后端接口数据请求出错?这个接口有点奇怪呀,现在到了服务器上了,地址应该是 ip:8095/hello 而不是 localhost:8095/hello 吧. 我们回到上一篇文章 从零开始上线网站的日常(一)— 前后端分离网站本地调通 的 基于 axios 编写请求 部分,能够看到代码中是这样写的:

bVbsAOa?w=1352&h=806

这里通过硬编码的形式把请求固定为了 localhost:8095 开头... 果然什么配置都不修改直接打包是不行的呀(捂胸口

bVbsAOb?w=640&h=376

还能咋办?删除服务器上的前端项目(pokemon文件夹),然后回去改代码呗,把原来url配置改为以服务器地址开头的配置:

bVbsAOf?w=754&h=436

然后按照之前的流程在本地项目通过 yarn build 打包并 scp 传输到服务器,复制解压文件, 流程如下所示:

bVbsAOF?w=1136&h=1544

再次刷新网页查看部署结果:

bVbsAOv?w=2872&h=1714

完结撒花~ 现在我们已经成功完成了一次完整前后端分离网站的上线了!虽然还有许多问题存在,但是在接下来会的系列文章中一一解决的~

To be continue...

系列文章

版权信息

作者:Nodreame

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_798951.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享高性能ASP.NET网站的系统架构设计

大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。 大型动态应用系统又可分为几个子系统: Web前端系统负载均衡系统数据…

假如我来架构12306网站(一) - 概论

序言: 此文的撰写始于国庆期间,当中由于工作过于繁忙而不断终止撰写,最近在设计另一个电商平台时再次萌发了完善此文并且发布此文的想法,期望自己的绵薄之力能够给予各位同行一些火花,共同推进国内的大型在线交易系统…

企业网站推广的方法有哪些?

摘要: 网站推广就是以互联网为基础,借助平台和网络媒体的交互性来辅助营销目标实现的一种新型的市场营销方式。当前传播常见的推广方式主要是在各大网站推广服务商中通过买广告之类等等方式来实现,免费网站推广包括:SEO优化网站内…

网站设计如何兼顾优化?

开发十年,就只剩下这套Java开发体系了 >>> 网站设计除了设计网站的外观和风格以外,同时还要编写前端的代码,网站设计用描述性的标签来组织页面结构,可以提高内容对搜索引擎的可读性,有利于网站优化&#x…

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转载)

LoadControl 和输出缓存会话和输出缓存Forms 身份验证票证生存期视图状态:无声的性能杀手SQL Server 会话状态:另一个性能杀手未缓存的角色配置文件属性序列化线程池饱和模拟和 ACL 授权不要完全信赖它 — 请设置数据库的配置文件!ASP.NET 成…

做一个网站需要多少花费?

我是今年清明节(4.5)之后开始做自己的网站,这周(6.20号左右)网站正式上线。由于在上班,利用下班时间和周末,陆陆续续做了3个月,勉强做了个能打开,有内容(对&a…

搭建自己的ebook网站

2019独角兽企业重金招聘Python工程师标准>>> 搭建自己的电子书网站 下载代码方式: githubgitee项目介绍 项目使用spring-boot开发,使用maven主要分为manager,common,client模块。 manager 管理模块 参考 client 客户端…

注册网站域名多少钱_网站注册域名要知道什么?注意什么?

网站注册域名要知道什么?注意什么?网站注册域名的问题咱们聚名网已经跟大家说了很多了,但是注册好域名之后,接下来该做哪些,咱们聚名网还没和大家细细的说,一般网站注册好之后需要做哪些事情呢?…

iis网站属性在哪_IIS在使用URL Rewrite 重写的时候由于目标服务器响应时间长,导致出现502问题解决...

按照正常来说,再iis网站界面会有一个application requestrouting cache 的 icon, 可以点击 设置timeout 但是这里没有显示找到了 官方说明可以用命令行解决这个问题https://blogs.iis.net/richma/502-3-bad-gateway-the-operation-timed-out-with-iis-ap…

网站可行性报告范文_孝感做可行性报告本地立项范文

孝感做可行性报告本地立项范文 公司名称: 环建工程有限公司 公司介绍: 环建工程有限公司致力于发展成为一家业界的化服务公司,专注于为客户提供化的服务。主要经营范围项目建议书、可行性报告、资金申请报告、项目申请报告、商业计划书、计划…

springboot访问静态页面404_网站404是什么原因,网站404怎么解决

404对于SEO的影响是非常严重的。一旦处理不当网站就会被K,轻微的是降权。所以死链接的处理一定要用正规的处理方式。而更加重要的就是预防404,因为企赢SEO优化那么多网站从来没有出现过死链接这东西。首先我们要知道404出现的原因有哪些,才能…

5个在线资源搜索网站,用的人求生欲很强!

分享5个平时经常用的在线资源搜索网站,只有你想不到没有你找不到的资源!一起来了解下吧! 西林街搜索http://www.xilinjie.com/ 强烈推荐的资源搜索网站:视频、文库(文档、古籍、专业书籍、电子书[PDF、ePub、Mobi等格…

这6个免费精品自学网站,提升能力让你月薪2w(值得收藏)

学习是我们一辈子的事情,永远不会毕业的,我们只有不断的学习,不断的提升自己,才能成为人上人,这时候肯定有人会问,那么应该如何学习呢?我认为这取决于三颗心:"一信心、二决心、…

大神偷偷收藏的7个自学网站,质量高且免费,请低调使用

很多年轻人都不甘于现状,总想着努力提升自己, 摆脱当前困境。 那么下面我就给大家分享,大神也偷偷收藏的7个自学网站,质量高且免费,每天坚持学习半小时,能让你变得更优秀。 01*学堂在线 看到这个名字就激发…

实用帖!分享5个素材丰富的资源网站

如果你是从事设计相关的工作者,那么这篇干货贴你可得收藏好了,我保证你能用得上! 废话不多说,直接上干货! 1、FoodiesFeed 这个网站主打饮食、蔬果等,吃货设计师的最佳站点。 如果需要各种各样的美食图片…

php德育元素,wsb_v2.0 智睿学校网站系统定位教育网行开发的 , 首页 概况 校园新闻 德育教学 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...

文件名称: wsb_v2.0下载收藏√ [5 4 3 2 1 ]开发工具: EasyLanguage易语言文件大小: 6753 KB上传时间: 2013-03-27下载次数: 2详细说明:智睿学校网站系统定位教育网行开发的系统,网站首页 学校概况 校园新闻 德育教学 校园风彩 资源下载 求贤纳士 成…

网站发布到远程服务器时文件系统,php 文件上传到远程服务器

php 文件上传到远程服务器 内容精选换一换将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式。本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服务器的操作方法。Windows云服务器可以访问公网。在本地Windows计算机上&#xff0c…

匀速建站 华为云_笔记软件对比与使用云服务建立个人云笔记

此文作为自己的经验记录,也给经常使用笔记的同学们一些参考。以前人们使用笔记本记录想法,随着计算机和手机端广泛使用,越来越多的人使用云笔记,可以多端同步,有云备份不怕丢,但是各种笔记或多或少有些不便…

简单几步让网站支持https,windows iis下https配置方式

1.https证书的分类 SSL证书没有所谓的"品质"和"等级"之分,只有三种不同的类型。 SSL证书需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请。 CA机构颁发的证书有3种类型: 域名…

无法访问此网站 localhost 拒绝了我们的连接请求

解决方法 进入 SQL Server 管理环境中 展开 数据库 – BOOK 1 右击 BOOK – 属性 ,弹出BOOK的数据库属性画面 2 在选项页下面,点选 权限 3 在用户或角色列表中,点选 NT AUTHORITY/NETWORK SERVICE 4 在下面 NT AUTHORITY/NETWORK SERVICE …