首页
友情链接
点点滴滴
关于本站
秋码记录
一个游离于山间之上的Java爱好者 | A Java lover living in the mountains
累计撰写
144
篇文章
累计创建
323
个标签
累计创建
47
个分类
栏目
首页
友情链接
点点滴滴
关于本站
搜索
Windows构建基于 Chromium 的浏览器之环境准备篇安装 Visual Studio(103.0.5060.68 之一)
引言 在信息快速发展的当今,人们似乎对电子设备依赖层度越来越深了,尤其是智能手机的普及,逐渐改变了人们在网上冲浪的方式,除非了是需要在电脑上处理的事情,才会去打开那落满灰尘的电脑。 手机本就是为了能与方便交流沟通而诞生的,虽然现如今,在手机前加了智能两字,并不是说这手机能有多智能,它无非是能像电脑一样,能浏览各大网站,玩游戏,看视频,网上购物等等。 甭管是在电脑上,抑或是在智能手机里,我们想要搜查资料,第一得先打开浏览器应用程序,一般浏览器都默认为用户选定了一个搜索引擎,第二,我们在搜索引擎的输入框打上要查找资料的相关信息,等输入好了,等它个几百毫秒之后,你会看到,搜索引擎为你罗列出了与你在输入框填写文字相关的内容。第三,点击列表中你看似符合你要求的结果。 说起浏览器,可谓是五花八门,王婆卖瓜,自卖自夸。如果你不是一个IT人士,那么你的电脑装上了国内的360浏览器、2345浏览器、hao123浏览器、qq浏览器……(毕竟你作为一个非互联网人,不知道国内的这些流氓软件还可原谅,这其中尤以360浏览器最为离谱,了解过360杀毒的,都知道它自己本身就一个病毒)。 可假使你是一位互联网从业人员,却在电脑里安装了360极速浏览器的话,那么只能说明你是……(自行脑补吧!) 市场份额排在第一的Chrome(身为一个IT人员,对它应该不陌生吧!它可是google公司的开发的浏览器,而且还是基于google开源的chromium V8),你却不用,非要使用国内的360浏览器,可当你电脑安装了360浏览器之后,时不时的会在电脑右下角弹出广告(也就是显示日期和时间的那个角落里弹出一个广告,这是不是很恶心,这就是这些国内浏览器的套路和玩法!) 除了Chrome,你也可以选择其他的浏览器,诸如:Mozilla出品的firefox(火狐),它也是基于Mozilla公司开源的浏览器,microsoft公司的Edge(Edge也是基于chromium开源项目的浏览器)、Apple公司的Safari浏览器,opera浏览器也是基于chromium的,…… 序言 我想要构建一个基于Chromium内核的浏览器由来已久,可为什么直到现如今才着手开始搭建呢? 拖大抵是人类的通病吧,但最主要的莫过于把空闲时间用在了旅游(无非是逛逛商场,虽然鲜少在商场内购物,但我还是比较逛的)、爬爬山去暂时的放空心灵,暂避那喧嚣的都市。 逛商场,目之所及皆是人来人往,有人手里拎着好多东西,与同伴有说有笑着,从我身旁路过;而有些人则是将商场几个层楼,都绕了一圈下来,也没见他进哪家店里买东西,我就是属于这类人,纯粹是来这里感受下商场里人流量的震撼。 信步登山,不单单只是放空自己,远离那喧嚣的都市;而是在贴近大自然,你可以把生活或工作的烦闷给释放出来,甚至你大可吼一声。 不管是购物时的满心欢悦,抑或是爬上山巅坐在石凳,惬意的度过一个下午,但你终究还是要回到现实生活中来,闲暇的时光总是那么短暂的。 那么现在怎么就能把闲暇时间用起来呢?难道不去逛商场了吗?亦不去登山了? 也全是,商场该逛还是会去逛的,山也会去爬,偶尔也会在山巅吼上那么一嗓子的,但是现在,也该做些自己曾说过要做的事情了。 必备准备 在编译chromium源码之前,我们有必要为电脑配置好所需的environment(环境)。 作为一名coder(程序员或码农),深知开发一套软件或是编译知名的开源项目时,系统里总是免不了配置好符合当前开发软件或编译开源软件的必要environment(环境),这就好比,想要开发C/C++软件,那么你的电脑是少不了安装GCC/g++decompiler(编译器),其次你还需有一个对C/C++语法支持且纠错的IDE。 要说哪款IDE广受C/C++程序员的热捧,那么microsoft公司出品的Visual Studio无疑是登上C/C++ IDE宝座的王者,想必是无人敢反驳吧! 还有一个必要的条件,那就是你的电脑能正常访问以下网站(至于怎么可以正常访问呢?却不在本文范畴内,我想你总能找得到)。 1、Chromium官网:https://www.chromium.org/ 2、Chromium git 仓库:https://chromium.googlesource.com/chromium/src.git 3、Chromium 版本分支说明:https://chromiumdash.appspot.com/branches 从chromium 官网文档中可以看出,你的电脑还必须具备以下条件: 1、64 位 Intel电脑,至少 8GB 内存。 强烈建议超过 16GB。 2、NTFS 格式硬盘至少有 100GB 可用磁盘空间。 FAT32 将无法使用,因为某些 Git 包文件大于 4GB。 3、安装相应版本的Visual Studio。 4、Windows 10 或更新版本。 然而我的电脑除了不是Intel外,系统还达不到要求,还是贫民级别的Win8.1。 为此我还特意把电脑磁盘空间清理了下,看看最后哪个盘符下最接近100G的可用空间。 安装Visual Studio 2019 Community 对于Windows系统想要build(构建)chromium,安装Visual Studio版本是有要求的: Chromium 需要 Visual Studio 2017 (>=15.7.2) 来构建,但首选 Visual Studio 2019 (>=16.
2024-09-21
[chromium]
为什么网站加载速度总是那么不尽如人意呢?(网站优化篇)
那些年,但凡一得空,便会去逛逛公园、爬爬山,让那颗浑浊的心灵,能在这大自然中洗涤。 公园树荫下,总是有那么多人,他们或坐于石凳与好友畅聊,或是往那石桌上摆下棋盘,你总能遇到对手。 既然选择放空自己,不管是与好友们闲聊,抑或是棋逢对手,就不要把生活中的不如意或当下的困境说出来,因为这里并不是宣泄消极情绪的好地方。 然而,快节奏生活的当下,鲜有人会在公园逛那么一个下午了。 快节奏的生活,逐渐使人们失去了耐心,同时也让人变得很容易烦躁。 即便是当下人手一部智能手机(更有甚者多达好几部),也不愿花几秒钟来等待访问某个网站,页面却一直处在加载中。用户会毫无犹豫的关掉这个网站。 因为等待让人觉得烦躁,这便是时下快节奏的生活所导致的! 用户评判一个应用(APP)、网站的体验效果好坏,其中很重要的一点便是,产品的响应速度是否能控制在用户接受的范围之内(除非你的应用或网站是知名的,如:阿里云、腾讯云等网站响应速度何止是慢。) 网站优化方案 无论是简单的企业门户网站,还是看似复杂的博客网站,它们总是由html、javascript、css、图片文件等构成的,而呈现在用户眼前,便是通过这些文件拼凑而来的一个页面。 提升服务器带宽 在你访问网站时,网站文件所在的服务器在接受到你的指令后,是要将服务器上相对应的html、javascript文件等响应给你,也就是浏览器请求这些资源(可以说从服务器下载这些资源)。 我们深知,但凡从网络上下载任何文件,它总是跟你的网速有关的,若你带宽是100M的话,那么下载那是很快。当然咯,网站所搭载的服务器带宽若不是很好,网站加载慢那是再所难免的!这便是网站优化的方案之一,关于这一块,是需要花费的成本的。 使用 CDN 有没有那么一种可能,那就是你把服务器的带宽提升上去了,可用户访问你的网站,依旧是页面处于正在加载中。那可能是浏览器访问你的网站,需要请求很多javascript、css文件等资源,虽然用户与你的网站服务器同属在国内,但不免由于地域的缘故。 为了解决用户在不同地域访问你的网站,能以用户所能承受的加载时间范围内,渲染出网站页面出来,那么,这样对用户来说,你的网站算是一个用户体验不错的网站。 我们既然知道了,导致网站加载慢的症结是javascript等资源,那么,我们可以将这些文件托管在距离用户较近区域的节点上,让用户在访问你的网站,不再是请求服务器的javascript等资源,而是从歫用户较近的节点上读取这些文件,从而使得用户所在的区域访问你的网站便快了。 没错,这便是内容分发(CDN)。它不单是在国内每个区域设有节点,还遍布全球,你可以把原先放在服务器上的javascript等文件,迁移到CDN上,这样一来,继而减轻了服务器的”压力“,又能让你的网站在用户眼前加载起来快如闪电。当然咯,这也需要你额外付出成本的! 压缩静态资源 若你不想再额外花钱的话,那么,就要从javascript、css等文件大小上来考虑,相对于网络传输来讲,当然是文件小一些,它自然快于大文件的传输速度了。 虽然,市面上有公共CDN,但那也都是些知名的第三方library,自己的网站,总是离不开自定义的javascript、css等文件。 对于压缩方式可以选择,网上在线压缩,前提是你只定义了那么一两个javascript、css文件。 可若是你为你的网站自定义了好些个javascript、css,那么,在线压缩就不适合了,一来文件多了,处在起来还是比较麻烦的,二来文件一多,处理起这些繁杂的工作,总是让人很是烦躁。 既然在线压缩,处理多个文件,委实使人力不从心,那么,我们可以借助程序来实现文件压缩啊。 Gulp 压缩静态资源 至于gulp是什么呢? https://www.gulpjs.com 介绍说它是自动化构建你的项目,减少你浪费的时间,从而创造出更大的价值。(虽然口气有点大) 首先,你的确保你的电脑是否安装了node.js,如果没有,那么可以去 https://nodejs.com 进行下载安装。安装nodejs还是比较简单的,一路Next。 若你的电脑已安装过nodejs的话,那么,你可以使用以下命令来检查,你电脑安装的nodejs版本。 node --version 在nodejs高版本,都会在你安装了nodejs之后,同时默认的安装了npm(用于管理nodejs的library,就像java的maven、gradle,PHP的composer,golang的module等一样),和npx,同样的话,可以使用以下命令来检查npm、npx的版本。 npm --version npx --version 随后,我们通过以下命令来全局安装gulp。 npm install --global gulp-cli 创建项目 我们可以在一个空文件下,再次新建一个空文件夹,而后通过npm init来初始化项目,这条命令能为我们在当前文件夹下自动生成一个package.json文件。 npm init 之后我们再项目安装gulp依赖,来为项目实现自动化构建。 npm install --save-dev gulp 创建 gulpfile.js文件来压缩静态资源 我们在项目根路径下,新建一个名为gulpfile的javascript文件,文件名必须叫gulpfile这个名称,若你问我为什么?那我只能回答你,那是因为gulp规定的,也就是gulp-cli会读取这个名为gulpfile的javascript文件,若你改成了其它名称,那么gulp-cli是无法找到名为gulpfile`文件的,那么也就无法进行下去了。 在编写gulpfile.js文件之前,我们的项目需要安装几个依赖,它们适用于压缩javascript、css文件的。 npm install --save-dev gulp-uglify npm install --save-dev gulp-minify-css 安装好library后,那么,我们可以对gulpfile.js进行编辑了。 const { src, dest, series } = require('gulp'); const uglify = require('gulp-uglify'); const minifyCss = require("gulp-minify-css"); //在 gulp 里 这就是一个任务 function miniCss () { return src('src/css/*.
2024-09-14
[建站]
海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)
通过前两篇的实践,我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库,一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而,在这请求量与日俱增的情况下,MariaDB数据库显然是在超负债·的工作,压力那不是一般的大。 为了缓解mariaDB数据库的压力,我们可以采取缓存策略,也就是那些请求量比较频繁的数据,可以缓存起来,以便用户再次请求时,不再去读取数据库数据,而是将缓存数据响应给用户,从而减少了因频繁读取数据给数据库带来的压力。 我们可以使用业界、开源界享誉盛名的NoSQL——redis。它是一个K/V 键值对存储,内存型的非关系型数据库,也正是由于它是内存型存储方式,所以它在读写方面快于SSD 型存储的数据库。 下载 redis 由于redis都是通过源码编译进行安装的,故而我们首先得下载redis源码,随后在Linux 发行版进行编译安装。 redis官方地址: https://redis.io/downloads/ 截止发稿前,redis最新版本已经到7.4.x了,然而7.x版本以上是需要商业授权的,这也是众多开源软件走向商业化的途径。 当然咯,redis官方还是会一如既往地向公众开源,但那只是community(社区版),却足以应对日常问题了。 我们将下载下来的tar压缩包,通过SSH工具上传到海外云服务器/VPS对应的目录下。 解压压缩包 首先我们进入到刚刚上传过来的redis压缩包目录下。 使用以下命令进行解压: tar -zxvf redis-6.2.14.tar.gz 在Terminal执行完这行命令后,会在当前目录下多了一个与压缩包同名的文件夹。 编译并安装 redis 由于redis采用C language编写,而想要编译C language的话,是需要专门用来编译的C language 的编译器。 首先,我们先在Terminal输入gcc -v命令,查看当前的Linux 发行版是否安装了gcc,假使你在输入命令后,得到了如下与下图一样的提示信息,那么说明当前的Linux 发行版是没有安装过gcc,你可以从提示信息中看到,有一行apt install gcc的信息,瞬间让你觉得很是贴心,虽然当前Linux 发行版没有gcc环境,但你可以通过apt install gcc来安装gcc。 你可以使用apt update命令来更新你的系统镜像源。 apt update apt install gcc gcc -v 随后,我们再次输入gcc -v命令,terminal便输出了刚刚安装gcc版本信息了。 之后,我们进入redis刚解压的目录内,对redis源码进行编译。 提示:某些`linux 发行版`可能出现以下信息,那么,按照提示信息进行操作即可。 root@XXXX:/usr/local/redis# cd redis-6.2.14/ root@XXXX:/usr/1ocal/redis/redis-6.2.14# make Command 'make' not found, but can be installed with: apt install make apt install make-guile root@XXXX:/usr/1ocal/redis/redis-6.
2024-09-07
[海外云服务器]
海外云服务器安装 MariaDB 10.6.X (Ubuntu 18.04 记录篇二)
MariaDB 的由来(历史) 谈起新秀MariaDB,或许很多人都会感到陌生吧,但若聊起享誉开源界、业界知名的关系型数据库——Mysql,想必混迹于互联网的人们(coder)无不知晓。 其实mariaDB是由Mysql分支出来的一个项目,而且同属于同一个作者(Michael Widenius)。或许你会纳闷,既然Mysql如此优秀,作者而又为什么再次创造出一个新的数据库呢? 谈起mariadb的诞生,那就不得不说Mysql那命运多舛的际遇咯!起初,Mysql以开源的形式瞬间火爆互联网圈,这其中就包括创造出 Java 的公司—— sun,彼时的他们亟需一套小巧且功能强大的数据库,来摆脱其他商业化数据库。故而,sun 公司看准了时机,斥巨资收购了彼时还处在蓬勃发展的Mysql。 时间一晃,来到了2009年,号称全球数据库巨头 Oracle以当时看来是天价的价格收购了sun 公司,作为sun 公司的附庸品,当然也卖身到新雇主,Mysql再次改投公司,并非它所愿,实是无奈之举。 倘若sun 公司没被Oracle收购,或许不会出现mariaDB,毕竟sun 公司创造出了java这一从它诞生以来稳居于年度 program language(编程语言)排行榜前三,毫不夸张的说,它影响了一代的互联网的进程。 可事与愿违,sun 公司终将被oracle 公司收购了。自打oracle公司并购了sun 公司,全球数以千万计的Java Engineer,便开始为Java是否还会开源起了忧虑之心。 果不其然,oracle 公司还是向java开刀了,他们修改了java的一些开源策略,如:商业授权…… 也正源于此,作为Mysql的作者,不得不为mysql的未来而担忧。然而,现在的mysql已经属于Oracle 公司,看似开源出来,但Oracle 公司随时都有可能将它闭源化。可他唯一能做的就是从开源的mysql开出一个分支,构建出一个新的数据库,而它将改进Mysql所出现的问题,虽然mariadb是由mysql作者主导的,但主要还是靠开源社区来贡献代码。 安装前准备 我们知道大多数开源软件,多多少少会使用第三方(开源工具类库)软件包。虽然,你的项目大可不必依赖第三方类库,完全由自己着手编码来实现,那也是没问题,但在编写完这些工具库时,你的项目引入之前,你总得为你所编写的类库做unit test吧! 工具类库代码量不是非常庞大的话,由你自己编写,亲自做unit test,这都没什么,毕竟自己从零开始实现一个与第三方相似的工具类库,给自己带来的不单单是一种炫技感,更多的是成就感、喜悦感。 可倘若工具类库代码行数达到上万,甚至十来万行呢?此时的你,再想从头写起与第三方类库类似的功能,怕是力不从了吧!且不说编写那十来万行的代码所消耗的时间,而是在接下来的事,是需要对它做unit test,将会让你开始怀疑人生。 一个开源项目/产品能赢得越来越多用户的追捧,其中最为重要的一点莫过于产品的迭代更新速度是否快于竞争对手/友商。 为了能使产品在迭代更新上快于他人,产品的研发团队往往会将项目中公共模块抽取出来,形成一个工具类库,或是使用了第三方开源类库,从而降低了花在这上面的时间以及精力4,以便能够全身心的着眼于产品本身。 安装所需的软件包 至于安装mariaDB前,为何要安装software-properties-common这个软件包呢?其实你也是可以不安装这个依赖库,而是直接安装MariaDB,那也是没问题的!只是在安装MariaDB过程中,会出现Error,最终导致无法正常的安装MariaDB,而出现错误的原因却是当前Linux发行版还未安装某个软件包。 为了使MariaDB能够继续的安装下去,你便按照error提示,安装MariaDB所需的第三方类库。 既然是这样的话,我们何不将MariaDB所需的软件包提前安装呢! apt install software-properties-common -y 添加 MariaDB 镜像仓库 无论你当前系统属于哪个Linux 发行版,使用在线安装软件时,总是会在当前系统的镜像库搜寻,以此来下载软件。 当然咯,系统里的镜像仓库的软件版本或许有些旧,毕竟某些软件更新迭代快,以至于Linux 发行版来不及去更新镜像仓库内的软件版本。 故而,我们可以将需要下载哪个版本的MariaDB添加到系统镜像仓库里面。 至于那个MariaDB key 是官方所要求的,你将它下载下来就对咯! apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.ustc.edu.cn/mariadb/repo/10.6/ubuntu bionic main' 安装 mariadb-server 和 mariadb-client 热身的差不多了,是该真正露出本领的时刻了,此处应有振聋发聩的掌声,不绝于耳的那种掌声。
2024-09-04
[海外云服务器]
海外云服务器安装 JDK8 (Ubuntu 18.04 记录篇)
曾几何时,我可是国内云厂商的忠实用户啊。 而今,却不再为云服务器(尤指国内云厂商)续费了,作为我的个人网站 秋码记录 选择了托管在 gitlab.com Pages服务上。 国内云厂商对新老用户持有两种截然不同的价格,致使众多用户在云服务到期之际,便毅然决然地弃用了这家云厂商。 国内云厂商对同一配置、同一规格、同一型号、同一时限……的云产品来说,新用户总是能得到低于市场同类产品的价格,这便是国内云厂商让利于新用户,以求得在用户量上碾压行业内竞争对手。 反观老用户,通常老用户是指,但凡在国内云厂商某个平台购买了云产品,那么,你的身份便由新用户转换为老用户了(美其名曰:会员),那么,彼时的你是再也无法享受只专供于新用户的优惠云产品咯。而这样的规则,却不局限于互联网这个圈子,可以说,整个国内各行各业都在运用这条规则,小到街边门店,大到商场酒楼……,随处可见它的身影。 云服务器即将到期了,作为老用户是很少会选择续费的(除了特别有钱的企业或个人),那是对该云服务器续费价格望而却步,或有转场它处继续前行下去,也是大有人在,几轮下来,国内各大云厂商你都混了个脸熟,这也就是近几年来国内各大云厂商的新用户增长量有所放缓的缘故。 新用户增长量持续放缓,那说明了云产品卖不出去了,因为国内云厂商销售云产品很大程度上是靠新用户,虽然从新用户身上得到的利益明显少于老用户,但也总比老用户不再卖他家的云产品强,正所谓,苍蝇再小,它也有肉。 国内云厂商的云产品卖不出去了,不单单是市场饱和了,还有更多深层次问题(我相信你是懂得,倘若你不懂的话,那就忽略它。其实,懂得太多,它也是一种烦恼!)。 国内云厂商的窘迫该如何有效的决解呢?其实我不知道,但从年初 罗永浩直播卖阿里云服务,揭秘中国云计算走向衰落的真相 便能瞧出国内云厂商的穷途末路(虽然有点夸张的成分)。 在说完国内云厂商的那摊破事,也该聊聊本文的标题海外云服务/VPS了。或许,你会问,“你不是说了,qiucode.cn 租用的国内云服务器不再续费了吗?难不成国外的云服务器/VPS就很便宜了,就算国外云服务器/VPS便宜,但在国内访问起来,那犹如蜗牛爬树——何时能爬上啊?” “qiucode.cn 现在既没有选择国内云服务器,也没有改用国外云服务器/VPS产品,依旧托管于 gitlab.com pages,而标题中的海外云服务,那是一客户租用的,我搭建了Linux·基础环境,在这里只是纯粹做个记录而已罢了!” 将JDK 上传到服务器 首先我们先到oracle官网下载JDK8,至于该怎么下载,可以浏览 虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇),这里就不再赘述。 你可以选择惯用的SSH工具,进行操作。 虽然,也是可以在云服务器内使用wget命令来直接下载JDK的tar压缩包文件,究其原因,无非是云服务器带宽所限。 我们将下载下来的JDK tar压缩包,通过SSH工具,上传到云服务器。 我们可以将中间件及基础环境同一放在/usr/local/目录下。 cd /usr/local mkdir java 对 tar 压缩包进行解压 等待JDK压缩包上传成功后,我们便要对压缩包进行解压。 tar -zxvf jdk-8u421-linux-x64.tar.gz 当压缩包解压好了之后,我们要对解压后的文件夹进行重命名,那是因为,tar命令默认将压缩包文件名作为解压后的目录名,除非你带了参数-O 目录名称。 可以使用mv命令对目录名,进行重命名。 mv jdk-8u421-linux-x64 jdk-8u421 配置环境变量 配置JDK环境变量犹如一道魔咒,始终盘旋在即将踏入Java Engineer的上空,给他们带去了无法抹去的记忆。 我们打开/etc/profile文件,在其末尾追加上以下内容。 `JAVA_HOME`是你`JDK`解压缩的文件路径(需根据实际情况,做出相应修改)。 export JAVA_HOME=/usr/local/java/jdk1.8.0_421 export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 若你使用的是像我这样的可视化编辑器,那么你可以直接按住键盘上的Ctrl + s组合键,进行保存。 可假使你使用的是Terminal Command的话,如:vi、vim等命令,那么你需先按住键盘上的Esc,之后输入:wq,在按Enter键即可。 配置好了JDK环境变量后,先是让/etc/profile文件生效。
2024-09-01
[海外云服务器]
虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇)
我们已然在上一篇讲解了如何快速的搭建一个Linux虚拟机,通过vagrant命令化工具,我们很方便的构筑了虚拟机,那么,我们所搭建出来的Linux系统主要是为了调试产品,以便产品在部署生产环境之后,能够顺利运行,这才是我们在本地电脑或局域网安装虚拟机的最终目的。 由于你服务端程序所选的program language(编程语言)因素,造成了虚拟机或将要部署到生产环境上的所必要基础环境差异化,这是无可厚非的。 闲话少叙,切入正题。本篇除了在安装JDK与其他服务端有所差异之外,其他mid-ware(中间件)安装方式都是一样的,没有什么不同,包括但不限于redis、MariaDB、mongodb等。 安装JDK 首先,我们进入Oracle官网:https://www.oracle.com/cn/java/technologies/downloads/ ,找到你项目所对应的JDK版本,系统当然选择的Linux。 当你再看到下图时,请你暂时别笑,虽然现在JDK最新的LTS(长时间支持)是JDK21,而我呢,却还在下载JDK8,之所以选择JDK8,那是因为项目是早期的,我相信有很多与我相似情形的。 我现在的做法便是,保持生产环境能够稳定运行,随后则在本地迁移到JDK17,直至项目整体架构迁移完成,在虚拟机调试没有太大的问题之后,再行更改生产环境的JDK版本。 我们将下载下来的JDK,移动到宿主机映射到虚拟机的文件夹内,这样就将宿主机文件成功的挂载到虚拟机里面了。 那么接下来,我们打开VirtualBox这款虚拟化工具,之后进入到虚拟机的路径,调出Terminal,输入vagrant up来启动虚拟机。 当虚拟机启动成功后,我们可以使用vagrant ssh进行连接虚拟机,也就是进入虚拟机,对其操作。 进入到虚拟机后,我们由vagrant用户切换到root用户。 若你对root用户如何修改密码,可以查看我的上一篇文章,倘若你又不想链接来链接去的,那么你可以使用sudo passwd root来修改root密码,输入你新的root密码即可。 在安装JDK之前,我们有必要对当前虚拟机或将要部署到生产环境检测是否默认安装了JDK,因为Linux某些分支会在系统默认安装了JDK。 java -version 随后我们在虚拟机中创建一个java文件夹。 mkdir /usr/java 创建好java文件夹之后,我们cd到宿主机文件挂载虚拟机的路径下,对刚刚下载好的JDK的tar包进行解压。 tar -zxvf jdk-8u421-linux-x64.tar.gz 等解压完成了,我们将解压好的整个文件移动到刚刚创建好的路径里,也就是移动到/usr/java/这个路径下。 mv jdk1.8.0_421/ /usr/java/ 那么,接下来将要配置JDK的环境变量了,关于这一点,相信很多Java Engineer是再清楚不过了。 配置JDK环境变量 要想在Linux系统中配置JDK环境,只需对/etc/profile文件进行追加java相关信息即可。 export JAVA_HOME=/usr/java/jdk1.8.0_421 export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 先按键盘上的Ins(插入键),它的位置处在Del(后置删除键)的上方,让profile处于INSERT(编辑)状态,才能对文件进行修改。 配置好了JDK信息后,我们需要保存此次所做的修改,故而,我们敲下键盘上的Esc,它的位置是在键盘的左上角。 紧接着,我们继续敲下:wq!几个字符,这才保存了刚刚对profile文件所做的任何修改。而加不加!,其实都可以保存,但加了!则表示是强制退出。 这时你便可以在当前Terminal输入java -version命令,以验证你是否安装java成功,然而当你Enter(回车键)之后,却出现了之前系统没有安装java的状况。 可是不过几秒钟的时间,你忽然拍了前额,笑道,“居然忘记了这一步……”。 那么,你究竟是遗漏了哪一步呢?而又为什么你能在几秒钟反应过来呢? 但凡你修改了系统的相关配置文件,在当前Terminal是不会生效,若想配置生效,除非打开一个新的Terminal,可倘若你不想弹出另外的Terminal呢,你就要在当前Terminal验证呢!那么你只需输入以下命令即可: source /etc/profile
2024-08-29
[虚拟机]
怎样快速搭建 Linux 虚拟机呢?(vagrant 篇)
作为一名Coder(程序员或码农),供职于中小型互联网公司,而你恰恰偏向于服务端,那么,产品部署在生产环境的艰巨任务,便毫无疑问的落在你身上了。 只有大厂(大型互联网)企业才有运维部,而能进大厂的显然是少部分人,大多数Coder终究还是混迹于初创或中小型互联网公司,一名服务端 Coder往往都是身兼数职,甚至有可能干掉了frontend(这也就是初创或·中小型·互联网公司在Job Descriptio[职位描述]中,要求你在懂得服务端技术知识,还需熟悉frontend相关内容),当然咯,也有些中小型公司会分工明确,虽然没设立什么运维部,但起码也有一两个深耕于Linux 服务器多年的运维人员。 甭管你是Full Stack engineer(全栈),抑或是backend(服务端),总逃不掉要将开发完成的程序部署到服务器上吧!由于开发环境和生产环境之间存在着差异,从而导致了你按照开发环境所需的必要准备,在生产环境开始部署程序,出乎意料的一幕总能让你吃惊不已,你挠着头,口中喃喃说道,“这不可能吧,都按着必要环境部署的,不应该啊!……” 所以嘛,在把程序部署到生产环境之前,我们有必要在本地安装虚拟机,而这虚拟机所对应的系统便是生产环境上的系统,之后在该虚拟机上安装程序运行的必要条件,随后,在虚拟机环境里调试程序,等一切调试妥当后,方可部署到生产环境中。 安装 Vagrant 安装 VirtualBox 在安装Vagrant之前,我们必须安装一个虚拟化工具,它是跨平台的,也就是说,搭建一个虚拟机,安装了它就可以,Vagrant可以到一边凉快去了。 既然它(VirtualBox)本身就可以搭建一个虚拟机,而为什么又要Vagrant呢?对于这个问题,我不置可否,你回过头看看本文的标题,其中有个关键词——快速(虽然有点夸张的成分),你或许便能明白了。 至于怎么安装 VirtualBox,不在本文的范畴内,况且它跟其他软件安装方式一样,一路Next(下一步)下去 。 VirtualBox 官方地址:https://www.virtualbox.org/ 安装 Vagrant 在安装完VirtualBox,接着安装Vagrant,而它的安装也是同安装其他软件一样,一路Next(下一步)下去,除非你要修改安装路径。 Vagrant官方地址:https://www.vagrantup.com/ 。 安装好Vagrant后,可以在Terminal中输入vagrant version,便会输出当前安装的Vagrant版本信息。 初始化虚拟机 我们在某个空文件夹下,调出Terminal,并输入vagrant init centos/7 当初始化成功之后,会在当前目录下自动生成一个Vagrantfile配置文件。 你可在这里:https://portal.cloud.hashicorp.com/vagrant/discover 找到你想要的系统。 我们启动刚刚安装好的VirtualBox软件,可以看出目前是没有任何虚拟机。 我们再次回到Vagrant初始化虚拟机的Terminal中,继续输入vagrant up命令,用于启动虚拟机。 当我们转过身,去看VirtualBox,明显有一个虚拟机正在运行。 连接到虚拟机 我们可以在当前Terminal中,键入vagrant ssh进入虚拟机,默认是vagrant用户。 可是有时在Linux安装软件时,是需要root权限的,那么,总得使用root来操作吧! sudo passwd root 再输入两次密码后,便可以使用su root切换到root用户了。 退出虚拟机 可是使用logout退出虚拟机,回到宿主机。 关闭虚拟机 在回到宿主机下,方能使用vagrant的所有命令。 vagrant halt 配置私有网络(内部网络/局域网网络) 在虚拟机搭建起的服务,总得需要外部来访问吧,这其中当然就包括宿主机,所以,就需要就知道虚拟机的IP地址。 我们打开前面用Vagrant init初始化的虚拟机,自动为我们生成了一个vagrantfile配置文件。 打开注释。 config.vm.network "private_network", ip: "192.168.33.10" 还需配置一个使用频繁的文件传输功能,毕竟,我们在宿主机开发的程序,需要传输到虚拟机进行部署调试,那么,宿主机与虚拟机之间的文件传输就再所难免,在使用过VirtualBox 或VMware等虚拟化工具时,文件传输总是令人头疼。然而,Vagrant通过文件夹映射,实现了宿主机与虚拟机之间能很好的进行文件传输。 还是在vagrantfile配置文件中,去掉文件夹间的映射前的注释。 config.vm.synced_folder "./data", "/vagrant_data" ./data是在宿主机下的文件夹,也就是与vagrantfile配置文件同属一个路径下。 /vagrant_data是虚拟机内的文件夹。
2024-08-24
[虚拟机]
个人站点迁移之gitlab.com pages 绑定自定义域名
前言概要 能浏览本文的你,想必是在gitlab.com上创建了Repository(仓库),并将本地代码push(推送)到该Repository(仓库)中了,开启了Pages服务,然而,gitlab.com并不会像github.com那样,给你生成以username.gitlab.io这样的子域名(二级域名/subdomain),而是生成了以你的的Repository(仓库)名称(比如我创建的Repository名称是qiucode.gitlab.io)加上-你的username,再加上一串由字母、数字组成的字符串,像是UUID一般的字符串,最后则拼接上gitlab.io,最后便如我的这般:https://qiucode-gitlab-io-qiucode-aee06712da2e10b24ab5079f6b5a4a09c943b.gitlab.io/ 这也就是我在上一篇 不要你掏腰包,就能搭建个人网站之 gitlab.com Pages 托管服务 所遗留的问题,之所以会产生那么一长串的domain(子域名),那是由于gitlab.com给你生成URL时,默认是开启了unique domain(唯一域),这也是我查看了官方文档方才知道的,其实,稍微注意一下,在Pages当前页滚动页面,就会看到那个unique domain(唯一域)的开关了。 既然知道了gitlab.com默认开启了unique domain(唯一域),那么,我们只要把它关闭了,不就可以了嘛!是的,那么在当前Repository(仓库)左侧选项中找到Deploy(部署)中的子选项Pages,会看到下方settings属性,有个checkbox(复选框),它就是是否Use unique domain(使用唯一域)的开关,我们只需点击它,checkbox也就处于未选中(Uncheck)状态,点击底下的save changes(保存更改)就可以了。 配置自定义域名 如果你不想花钱去购买域名,而使用username.gitlab.iol来作为你的站点的域名,是可以的,没有任何毛病,毕竟很多博主、站长也都是这么干的。既省去了购买域名的费用(当然也有免费的二级域名,但那还不如使用username.gitlab.io呢!),又省去了SSL的困惑。这才是真正意义上的不要你掏腰包,就能搭建一个个人网站的最终完结篇。 可有些博主、站长(比如: qiucode.cn)还是希望能自定义域名。 要想自定义域名,还是在当前Repository中找到Deploy,选择它的子选项Pages 滚动页面找到Domain属性,点击右侧的New domain(新域名/添加新的域名) 当你添加完了域名后,来到了Pages Domain新页面,它便是要求你在你的域名 DNS 添加下列Record(记录),以此来验证你添加的域名所有权。 可以看出,我们需要在域名 DNS添加两条记录,然而,第一条记录中ALIAS(别名),却没在我的域名 DNS选项里,你说这,是不是在为难我啊! 这么着吧,还是看官方文档,看看该如何配置自定义域名。 官方文档关于如何配置自定义域名:https://docs.gitlab.com/ee/user/project/pages/custom_domains_ssl_tls_certification/index.html 。 按官方文档来看,分为三种情况: root domain(根域名/主域名,如: qiucode.cn) DNS添加一条A记录并指向gitlab.com Pages服务器IP地址(gitlab.com上的IP是35.185.44.232)。 再添加一条TXT记录用来验证你的域名所有权。 主机记录 记录类型 记录值 @ A 35.185.44.232 _gitlab-pages-verification-code.qiucode.cn TXT gitlab-pages-verification-code=00112233445566778899aabbccddeeff subdomain(子域名:如:lab.qiucode.cn) DNS添加一条ALIAS 或 CNAME 记录,并指向Pages服务器 再添加一条TXT记录用来验证你的域名所有权。 主机记录 记录类型 记录值 lab.qiucode.cn ALIAS/CNAME qiucode.gitlab.io _gitlab-pages-verification-code.lab.qiucode.cn TXT gitlab-pages-verification-code=00112233445566778899aabbccddeeff 可按照官方文档来配置自定义域名,那个Verification status(验证状态)却一直都是Unverified,当然你在域名DNS添加纪录之后,得点击旁边的刷新按钮,其实它是将整个页面进行刷新,而不是页面局部更新数据。以至于修改DNS主机记录: 主机记录 记录类型 记录值 lab.qiucode.cn ALIAS / CNAME qiucode.
2024-08-12
[建站]
不要你掏腰包,就能搭建个人网站之 gitlab.com Pages 托管服务
当你看到文章标题时,不会还以为我实在忽悠人吧!也难怪,这是我们身处的环境所造就的,这一点我倒是可以理解,毕竟,我们身边总是充斥着以免费、不要你一分钱……为噱头的各种声音,贪小便宜是人的天性,殊不知,他们因贪这小小地便宜,反倒是损失了更多。 人们在上当受骗了首次,也就对身边的“免费”东西不再感冒了。只有那么少部分人知晓这世上是不会有免费的午餐、天上也不会无缘无故的掉馅饼,倘若真掉馅饼了,并且还砸中了你,那是行骗之人瞄准了你的口袋而不去理会这些所谓的“免费”。 要是在互联网早期,你说,“不用你掏腰包,就可以搭建一个专属的个人网站。”那么,在别人眼中,此时的你就是个骗子。 而到了云计算兴起后,你再说同样的话,这时便有少部分人相信了。 可以参考:其实,低成本甚至免费的,也是可以搭建个人网站的哦! 为何选择 gitlab.com pages 服务呢? 但凡是代码托管平台,它都提供pages服务,如果没有,那它就是阉割版的代码托管平台。 享誉海内外知名的github.com、提供开源版和在线的gitlab.com、……等众多海外声名显赫的代码托管平台,都提供了pages 服务。 当然咯,国内也是有很多代码托管平台,诸如:gitee.com pages 已经光荣下线了,请不要试图在上面托管任何静态网站了!!!、coding.net pages 服务会在页面停留 5s(5秒),像是在检测你的静态站点、以及一些不知名小众的托管平台,也都提供了pages 服务,但是,这些国内托管平台对于个人想要开启pages是有要求(条件)的。 若不是github.com在国内的访问速度限制,以及时常出现该网站无法访问的种种原因,想必国内的coder(码农或程序员)是不会将站点托管在国内的coding.net等其他不知名小众托管平台上的,gitee.com就别提了,现在可以把gitee.com称为阉割版的托管平台了,因为它不再提供pages了。 你以为将站点托管在coding.net,你就会觉得在国内访问速度提升了嘛?你是否觉得它会比github.com托管站点访问来的快?若你是这么觉得,那你认为错了,正所谓:你以为的以为不是你的以为。coding.net pages 服务会在你托管在其上的站点提留5秒钟,这反倒没有github.com快了。 国内的gitee.com骤然下线了pages服务,使得众多托管在gitee.com上的众多站长纷纷迁往它处(github.com、gitlab.com等海外托管平台),而托管在国内的coding.net上,迟早也是会忍受不了那莫名其妙的5秒钟页面空白提留检测,改用其他托管平台的。 或许有人跳起脚来,指着我的鼻子,骂道,“你为何老是贬低国内互联网产品呢?而一味地夸耀海外的互联网产品呢?照这样下去,国内的互联网行业还这么能兴起呢?” “在你说这些话之前,烦请你在电子设备中使用浏览器访问国内的gitee.com,看看它的pages服务是不是下线了,以及coding.net是不是有在页面提留5秒中,还有些国内小众托管平台,如CSDN也有托管平台,它也提供了pages,对于个人来讲,是有条件限制的。” 对于国内的这些托管平台,gitee.com可谓是坐上了国内托管平台的“第一把交椅”,然而,它却没有任何形式的通知托管在其上的众多站长,以至于很多站长都蒙在鼓里,也只有在更新文章,推送到gitee.com上,方才知晓,自己托管在gitee.com上的站点出现了Timeout;coding.net给每个托管在它上面的站点停留 5 秒钟的时间,以此来检查你的站点;国内数一数二的托管平台都有这样或那样的限制,或者干脆下线了,那么,国内那些小众的、初出茅庐的托管平台岂不是对个人想要在该平台开启pages有了更多严苛`的条件了。 gittlab.com 创建 Repository(仓库) 在创建Repository之前,你得为你的gitlab.com配置好SSH Key,以便Repository的pull(拉取)和push(推送),至于该如何配置,可参考:国内 gitee.com Pages 下线了,致使众多站长纷纷改用其他托管平台 或在 CSDN上的 国内 gitee.com Pages 下线了,致使众多站长纷纷改用 github、gitlab Pages 托管平台 。 登陆gitlab.com官网,在左上角,点击账户头像旁边+按钮,进行创建一个新的project或repository。 随后,我们便在右侧看到,可以创建project或repository的各种“款式”。 我这里选择Create blank project(创建一个空白/白板项目)。 这里的项目名称取为username.gitlab.io是方便公网访问的。 假设project name为blog,那么你的project URL为:https://gitlab.com/username/blog/ 。一旦这个project启用了GitLab pages,并构建了站点,站点访问url为:https://uesrname.gitlab.io/blog/ 。如果你要创建一个user page,假设此时project name为qiucode.gitlab.io(qiucode为你的Gitlab username),则你的project URL为:https://gitlab.com/qiucode/qiucode.gitlab.io 。一旦这个project启用了GitLab pages,并构建了站点,站点访问url为:https://qiucode.gitlab.io。 使用以下命令将创建好的project克隆到本地。 git clone git@gitlab.com:username/qiucode.gitlab.io.git 当然咯,你要在gitlab.
2024-08-11
[建站]
国内 gitee.com Pages 下线了,致使众多站长纷纷改用其他托管平台
作为一位IT或coder(码农、程序员),在日常工作中,多多少少都会有技术知识的积累(生产环境中所遇到的问题【亦可称为是坑】)。俗话说得好,好记性抵不过烂笔头。不管是前沿技术的研习后的心得,还是工作中所遇到的问题,亟需将这些笔记留存下来,为的是以备后续查看(未来有可能遇到类似的坑,也好该如何下手,以不至于手忙脚乱的),当然咯,在方便自己的同时,也分享给他人。 那既然只是为了留存笔记而已,又何必去搭建一个个人博客网站呢?国内在线攥写博客的平台多如牛毛,既“省时”又“省力”,又何必非要去为难自己来搭建一个专属于自己的个人博客网站呢?诸如CSDN、知乎、博客园、掘金、简书……,攥写文章都是免费的(如果这都不免费,那恐怕这些平台都要下线了),又何必花钱购买云服务器/VPS、域名,网站你可以自己编写(省去了这部分成本),或是可以使用github pages、gitee.com pages来免费托管静态网站,但至少比在大平台攥写文章时,多了一步,那是将写好的文章push(推送)到你的远程仓库,那不成大平台免费的,它不香么? 回答上述“三个何必” 既然只是工作中的知识笔记,或是前沿技术的研习心得,国内有大把的博客、社区以供攥写,而缘何非得去搭建一个个人博客呢?的确,第三方平台有诸多的优点,但它的弊端也是显而易见的,就拿我2022-12-08在CSDN攥写的一篇关于如何注册 ChatGPT的文章,过了几个月后,居然被CSDN批注为未通过审核。 当我看到CSDN发来的站内通知,顿时懵圈了,不禁发问,“这是怎么回事?CSDN居然还有这波操作,着实令人费解啊!” 这就是你在第三方平台上攥写文章的困境,当然咯,你写的文章符合该平台的规则,那么一切将是风平浪静,反之,平台随时可以以审核未通过之借口,使得你热心分享知识给他人,却无形之中让人泼了一脚盆洗脚水,从头凉到脚。故而,搭建一个个人博客势在必行,而大三方平台照样会更新文章,而它只是作为更好地分享知识给他人,诸如 花了不到1块5,玩了下全网最火的ChatGPT 。 有人说,“你平常就写写知识笔记、以及你工作所遇到的问题解决方案,你就非得去花钱折腾出一个个人网站出来吗?难不成现成的大平台它不香吗?” “大平台它香,但也让瞬间挠着头发,在房间里踱来踱去。而现如今搭建一个人网站也可以是低成本,甚至免费。”可以参考: 其实,低成本甚至免费的,也是可以搭建个人网站的哦! 。 github、gitlab、gitee(已经下线了)、coding.net(要结合腾讯云)等国内外知名代码托管平台,都有提供Pages服务,也就是可以托管你的静态资源,以此来搭建一个静态网站,然而,每次在本地编译生成好的静态资源 推送(push)到这些托管平台总是比较麻烦的,毕竟,这相较于在第三方平台上攥写文章,费力了很多。 对于每次更新文章,都要在本地编译生成静态资源,总让觉得很是枯燥。去这些托管平台看看有没有属于这套程序的CI/CD(持续集成)相关文档。 gitee.io(gitee pages)终究还是下线了 据将站点托管在gitee pages的站长称,2024-05-01假期回岗,却发现自己的站点出现了Timeout,一时间,他很是不解,不应该啊!只是托管个静态资源,既然也出现了Timeout。 随即,他去gitee.com咨询官方客服,到底是出现了什么问题?回复他的是,gitee pages光荣下线了。(这是我预料之中的,我也并不是看不好国内这些互联网平台) 当然咯,有些站长还是不死心,竟然跑到gitee官方账号下提issue,很显然,这个issue官方是不会回复的,犹如一封信,内容写好了,却在最后忘记把寄往何处的地址写上,最终信是无法到达彼处的,可谓是遥遥无期。 当初,那些站长之所以会选择gitee pages来建站,也是有原因的,毕竟github pages在国内访问速度,,真是一言难尽啊,如果光是访问速度慢些,到还是勉强接受,不幸的是,github pages时常在国内出现了无法访问该网站的情形,这还让你的站点怎么分享知识给他人呢? 介于github pages在国内访问速度慢,还时常无法打开的缘故,很多站长终究还是勉为其难地选择了国内的托管平台(诸如:gitee.com pages、coding.net pages)。 gitlab.com pages托管站点 不同于github pages,gitlab pages是通过CI/CD来实现pages,也就是他没有像github那样的纯静态托管机制。当然咯,github也是可以通过CI/CD来实现站点的托管的。 要想在gitlab.com pages上托管站点,那么,毫无疑问的是,你得登陆 gitlab.com或注册一个新的gitlab.com账号(可以直接使用你的github账号),这里就不赘述gitlab.com账号的注册了。 在登陆gitlab.聪明·后,我们着手创建一个仓库(Repository`),名称随你意,只要你欢喜。 通常,我们都是使用SSH来远程操作的,那么,就需要配置gitlab的SSH Key,关于key的配置,之前,我也是有相应的文章来介绍配置github和gitee的SSH Key,如果不是很清楚的话,在这里,我将再次讲解如何配置gitlab SSH Key。 我们本地使用以下命令来生成SSH公私钥. ssh-keygen -t rsa -f ~/.ssh/gitlab.com/id_rsa -c "邮箱地址" # -f SSH私钥文件地址 随后,我们将生成好的公钥复制到gitlab.com上,可以使用以下命令。 cat 以 .pub 后缀的文件 当你git clone时,却出错了。 然而,你以为这样就好了嘛,可gitlab却还不行,还需再生成SSH 公私钥的文件位置下,编辑config文件,加入以下内容。 # GitLab.com Host gitlab.
2024-08-10
[建站]
1
2
3
...
15