Featured image of post Linux旧日个人练习记录

Linux旧日个人练习记录

–Linux 操作记录

这里将要记录 Linux 操作笔记, 包括感悟和体验, 以时间日志方式给出

我是什么时候踏上这条道路的呢?

现在想起来, 应该是 8 月 10 日-2023. 那一日我第一次装好了自己的 Linux 虚拟机, 虽然对这个世界全无了解, 然而却感到无比的雀跃.

这份心境, 也将伴随着我度过接下来布满荆棘的旅途.


# 8 月中本地虚拟机初体验

8.15 2023

# 练习中 Linux 装机记录

  1. 真-初号机

    8.15 日, 假期预演, 去微信号手把手以及 CSDN 看教程, 在 3 分钟内利用快速安装装了第一台虚拟机(选择最小安装, 导入镜像 iso 文件即可 run)

    8.16 日删除, 准备正式配置, 参考了更详细的教程

  2. 正式零号机-03

    由 3 次尝试后生成

    创建了多个账户, 设置了 root 账户密码

    8.22 日因系统重装被摧毁

  3. 正式二号机

    9.4 日重建, 与一号机基本相同

    9.5 上机处理问题:

    · [X] 学习 CV 方法

    · [ ] 处理鼠标闪烁(失败)

    · [ ] 设置共享文件夹(后面成功)

    早上 11 点, Settings 打不开, 无法解决, 遂从硬盘摧毁

  4. 正式三号机

    在处理共享文件过程中, 反应很慢, 逐渐演变为全程卡死. 遂被抹除

  5. 正式四号机

    设置文件共享: 安装 VMTool

    过程中发现无法下载. 原来是网络问题; 结果重启发现网络设置被吃了, 然后不停尝试修改 IP 和 DNS, 设置桥接模式以外的连接方式等 -> 全部失败

    最后按教程重启了网络设置, 勉强可以了

    晚上去教室自习发现我的主机 Windows 的网络也出问题, 连上一会儿就断联, 两天使用诊断服务处理了几次, 最后发现是系统服务出问题.

    现在已经平稳运行(大概)

    因祸得福, 现在挂完代理也不用重启网络了, 虚拟机的设备配置也没问题了.(你确定?来自 12 月)

  6. 初号机 Family

    目前使用的机器, 9.8 更新了一次全应用, 登录了谷歌准备同步内容

    存在问题; 光标闪烁( 主机芯片问题, 可以接受 ); 共享文件夹不稳定(可以接受)

    克隆生成了 Hadoop + Spark 集群

  7. 初号机 - Copy

    9.6 -> 12.1 课堂使用主力机, 拥有全套最新开发工具, 交互界面和经久耐用的性能

  8. =="终端"机 Family==

    (成员: 3)

    初始配置后发现难以交互, 无法 CV, 也无法传文件, 立刻在装好之后卸载了

    但是后面发现必须这样, 用 FinalShell 连接克服困难, 现在已经用的很习惯了

  9. 网络云服务器 - 死伤不计其数, 约配了 5 到 6 次, 销毁重装了好几次

  10. 终末 + 清算 ->12.24 彻底清理

  11. 以上统计到 2023 年, 2024 后由于熟练了不再记录

  12. 复盘, 发现 VMware 很可能是导致电脑问题的元凶

当时很兴奋, 看到第一天黑窗体的出现, 哪知道这是噩梦的开始

# 9 月菜鸟练习 + 被拷打

笔记整理完毕, 开始长线练习

下午艰难安装 Scala 和 VScode 完成另一门课的练习

直接采用归档安装会失败, 不知道是不是只有我会这样, 需要 rpm 命令安装.

很生气. VScode 安装 Scala 有点难顶, 一直下不完, 又懒得去配镜像, 只好一直等咯

总共整理了差不多一个月, 菊花宝典整理完了, 将知识保存到了本地.

可恶, 把我流量下完了 X _ X

安装 IDEA 和 VSCode, 测试 Java 和生产环境

在失败了十次甚至九次之后, 终于完成了生产环境的搭建了.

下了 Vscode, IDEA, Scala, JDK , 改了 Host , 同步 Github Settings … 晕倒了

好像一换到校园网就不能再在虚拟机里联网了

也罢也罢… 就用自己流量把

第二天也在主机上测试了一下, 发现除了 UI 不同之外速度都差不多, 那还是用主机的 IDEA 跑吧

这个时候还不懂什么网卡配置, 计算机网络真的要赶紧个上啊魂淡

# 9.27 装谷歌浏览器-失败

软件安装绕过商店方法尝试:

事实上这个商店(图形化), 几乎是烂了的样子, 什么都没有

Linux centos 安装 chromium

https://pkgs.org/download/chromium

选择 centos7 版本,进入详情页,找到【Download 】下的 binary package,直接下载 rpm 包. 速度很快

还需要在【Requires 】下载依赖包chromium-common-103.0.5060.114-1.el7.x86_64.rpm 和 nss-mdns-0.14.1-9.el7.x86_64.rpm

最后一直报安装失败 放弃

# 10 月集群整队

# 10.6IDEA 安装 HW-成功

压缩包或可执行文件安装

例如安装压缩包: idea.tar.gz​ 时候的操作

mkdir -p /opt/idea && tar -zxvf ./idea.tar.gz -C /opt/idea

到/opt/idea 启动!

./idea.sh

==配置 IDEA 环境变量==

目的是无论终端在哪个工作目录,都可以通过./idea.sh 指令启动 IDEA,不用进入到 IDEA 的环境目录了。

我们先假设我们解压后的目录为 idea-IC-213.6777.52(这个文件名与你下载的 IDEA 版本有关系,可能跟我的不一致,自行替换为自己的目录),查看这个解压目录名称的指令为:

ls /opt/idea

idea-IU-232.9921.47

记录下这个文件名,然后将其添加至环境变量中:

我们通过 vim 指令对环境变量文件进行编辑:

vim ~/.bashrc

然后将如下的内容添加至~/.bashrc​ 文件的最后一行( !!!注意替换掉对应的目录名!!! )。

export IDEA_HOME=/usr/local/src/idea/idea-IU-232.9921.47
export PATH=:$PATH:${IDEA_HOME}/bin

通过:wq​ 进行保存即可

接着我们让系统重新加载我们修改好的环境变量:

source ~/.bashrc

在任意目录下输入idea.sh​ 启动 IDEA 图形化界面了

我配出来的这个 Idea 需要跟随终端进行

# 一些安装 bug 记录

安装报 :installing not available
可以先执行: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
再完全更新一下 : yum update

安装发现:

获取秘钥失败

我能行的方法:

第一步安装指令
 yum -y install wget --nogpgcheck

第二步联网获取秘钥
cd /etc/pki/rpm-gpg/
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7


10.6.2023 国庆假期完成笔记本的整理

10.9 更新笔记本结构, 优化查找速度, 分为索引笔记本(TLB 原理)和完整笔记本(分页存储原理)

并且针对上课内容开辟新 space.

10.17

在完成 Hadoop 集群配置时候为了保证两门课的隔离性, 同时也是拯救本就捉襟见肘的 C 盘容量

在 D 盘创建了 3 个新虚拟机, 克隆自 C 盘

而后又克隆了一个 Linux 课虚拟机, 专门处理 Linux

剩下三个装配全套分布式实验环境

总大小预计 45+12 = 60GB

实验了 Hadoop + Spark 集群配置, 实验报告另附(合并)

发现了 VMware 不能实现虚拟机搬家(之后我的容量焦虑症因为这个时不时发作)

10 月下

今日大概是测试,下午打算一波带走 Hadoop 集群配置, 带不走就摆烂了

课前简单复习了下除了管道以外的其他内容, 做了细化目录整理

Oh My God! 竟然真的考管道

==“我不理解为什么大家都揪着最难的抽” –老师原话==

完全重构了 Linux 菊花宝典, 查阅笔记命令更加方便了, 性能提升 114.514%倍

讲授 IP 地址, 网关, 主机名等内容, 计算机网络的知识我基本自学了(你确定? 你确定? 你确定??? 学了, 但是实际用起来啥都不会那个时候)

网络配置什么的, 暑假就玩过了, 但是始终配不好, 后来发现是我网卡什么的有 bug, 需要重装解决

然后我重装不了了(保存的设置太多, 只能明年 1 月考虑)

后来也确实是 1 月才开干, 被拷打惨了, 具体参阅另一篇

# 补充内容: 分布式集群部署信息记录

‍–大数据的, 赛博牛马不搞这个

2023-11-21 晚 惨淡退场 三人幸终

# TODO

  • 询问老师最后一个 Spark 问题 ->JDK 配置?
  • 验证 SSH 传输问题
  • 修改软件包等信息名称
  • 不, 已经, 不用奋斗了…

# 机器名称

DS_SK spadek

DSslave1 spadekfake1

DSslave2 spadekfake2

均以 Root 账号登录, 用户界面为 cwx 账号

# IP

DS_SK spadek

192.168.0.134

DSslave1 spadekfake1

192.168.0.102

DSslave2 spadekfake2

192.168.0.163


# 软件包列表

jdk1.8.0_60 ->Installed OpenJDK 1.8.0_382 -> ​ jdk-8u202-linux-x64.tar.gz
hadoop-3.2.2 –> hadoop-3.2.4.tar.gz
scala-2.12.14 -> Installed 2.11.8
spark-3.1.2 –> spark-3.2.2-bin-hadoop3.2.tgz

变量位置

vim /etc/profile

hadoop-3.2.4
spark-3.2.2-bin-hadoop3.2
jdk1.8.0_202
scala
/etc/profile文件中添加下列内容:
export JAVA_HOME=/usr/local/cx/jdk1.8.0_202
export SCALA_HOME=/usr/local/scala
export SPARK_HOME=/usr/local/cx/spark-3.2.2-bin-hadoop3.2
export HADOOP_HOME=/usr/local/cx/hadoop-3.2.4


export PATH=$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib.dt.jar:$JAVA_HOME/lib/tools.jar

# 软件位置

除了 scala 放在/usr/local, 其余软件都放在

/usr/local/cx

后期调整…

与讲义上区别:

  • hadoop 没有次级 hadoop 目录, 只有 hadoop-..版本号 3.2.4
  • usr/local/cx, 而不是 usr/cx
  • spark 名称是 spark-3.2.2-bin-hadoop3.2 没有次级目录
  • Java 名称为 jdk1.8.0_202

# 热操作

在实验室不能用校园网, 虚拟机连不上

配 Hosts

vi /etc/hosts

环境变量配置生效

source /etc/profile

变量位置

vi /etc/profile

格式化 hadoop 集群

/usr/local/cx/hadoop-3.2.4/bin/hdfs namenode -format

启动 hadoop 集群

/usr/local/cx/hadoop-3.2.4/sbin/start-all.sh

关闭

/usr/local/cx/hadoop-3.2.4/sbin/stop-all.sh

启动 spark 集群

/usr/local/cx/spark-3.2.2-bin-hadoop3.2/sbin/start-all.sh

关闭

/usr/local/cx/spark-3.2.2-bin-hadoop3.2/sbin/stop-all.sh

流程

  1. 格式化 hadoop
  2. 启动 hadoop
  3. 启动 spark


复制实验报告内容

# BugFix

记录问题:

  1. 本机的 IP 地址由于有代理-宿主机打开 VPN - JP1, 每天发生跳变, 每次都需要修改原来的配置(取消!用手机流量来大致保证没有 IP 跳变, 根本原因是自己机子的 IP 设置问题)

  2. 改完环境变量配置记得重启!!! 不然很可能失败

  3. 不能在图形化界面把东西放到自己的家目录, 除非图形化界面的用户是 root, 否则 root 不能直接拿到其它私有用户的内容(改权限?不会)

  4. 刚开始因为屏幕识图出现非法字符导致配置文件爆炸…低级错误低级错误

  5. 普通用户不用导入, 但是使用 root 用户的时候回回都要导入, 解决方法:

    博客

    /root/.bashrc 文件尾部添加:source /etc/profile
    但是二号奴隶机还是不行

# 11 月进阶 Shell 练习 + 服务器拓展

最近在学服务器端的 Linux 配置, 看到网友的帖子说去实习公司配的 Mac 什么的 Linux 系统很难用, 看来这节课真的是学到位了,,,,吧?

其实我觉得这些东西自学就好了, 没必要老师来教. Python 一样, Java 也是这样, 都是讲一些 API, 扒一下源码就结束了. 这些内容网上多的是.

# 11.12 云服务器选型计划

# DO

首先是学生包白嫖的 赛博之海 DigitalOcean

鉴定为会员制

实际额度已经降到了 50 美元,且仅有一年有效期

需要有 Paypal 账号; 实际花费最小为 5dollar, 赚 45dollar

# Azure

已经有的微软的各种认证

注册 Azure

日本手机号根本没用, 乱写的

地址是野兽宅

开了, 主账号微软, 一年有效期, 100Dollar 额度

# Heroku

教程

注册账号, 日本, 谷歌邮箱

但是一直报错, 坏了

但是这个不是具体的服务器, 是容器之类的

# New Relic one

链接

用 Github 注册了, 之后需要安装应用, 卡在这一步安装不了

不懂配置代理! 选择的梯子是基础的, 无法手动装配代理

找到系统- 设置里面的代理配置, 找到网址黏贴进去

好好, 终于出现应用了- 只有一个应用而已, 失败了根本连不上, 大概需要更高级的 VPN, 等我手头的 2024.9 到期了再装新的

# 余下

双 11,618 国内这类活动挺多

后续: 解救大兵服务器计划

使用自定义代理私网访问服务器免除公网 IP 配置

记录结束. 使用了 Azure-白嫖开始

# 1115 云服务器搭建初体验事件

Finalshell 连接 Azure

在观望了多时之后决定入手云服务器

最后还是从白嫖开始, 因为有 GIthub 学生包, Azure 和 DigitalOcean 分别有 100 和 300(需要赔进去 5$)可以白嫖

域名本来用 Namecheap 的, 然后竟然说不识别河北大学的学生邮箱?! 这下河砖输麻了

冷静下来想想暂时不搞域名了, 怕出事.

目前主要是对付网课开着

真是杂鱼, 这点能耐就不行了(指虚拟机 CPU 被干满)

详细搭建见 11.17 文档

# 11.16 实操-FinalShell 连接服务器, 展示个人博客

在进行连接时候一直出问题, 不停的找文档, 结果就发生了锁链式的整体构想领悟

这是一个锁链式的整体构想, 需要 A, 就需要先把 B 做了, ->C->D ,,,等等等一层层往深处 diveinto, 最后往上一层层抛出

# 信息显示

版本 20.04Version

Linux version 5.15.0-1050-azure
(buildd@lcy02-amd64-032)
(gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34)

 #57~20.04.1-Ubuntu SMP Wed Oct 4 17:09:16 UTC 2023

初始化的机子 root 无密码, 直接 sudosuroot

展示的静态地址

  inet 10.0.0.5  netmask 255.255.255.0  broadcast 10.0.0.255

# 安装 yum

apitude 去装 yum

 apt-get install aptitude

aptitude 与 apt-get 都可以进行安装

aptitude 在处理包依赖问题上更好(不然就会陷入 python 依赖地狱!)

aptitude install yum

# 更换自带下载器 apt 的镜像

备份默认的源地址

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

打开修改源地址, 最后更新一下

sudo apt-get update

# Nginx 挂载静态页面

apt install nginx

安装完毕之后查看 nginx 状态

systemctl status nginx

查看 80 端口是否被 nginx 占用,然后在浏览器地址栏直接访问你的公网 ip 地址:80

netstat -anpt |grep ssh

访问公网 IP:80 成功!

# 配置防火墙 - 直接爆炸

允许流量通过 HTTP(80​)和 HTTPS(443​)端口。

假设你正在使用UFW​​ 启用 ‘Nginx Full’ profile

ufw allow 'Nginx Full'

验证状态

ufw status

打开

ufw enable

哦原来防火墙关闭了,打开

打开了, 查看状态

Firewall is active and enabled on system startup
Nginx Full                 ALLOW       Anywhere
Nginx Full (v6)            ALLOW       Anywhere (v6)

# 防火墙把我墙了, 重来!

(这里巨坑!不能随便开防火墙否则会把自己关在外面)

虚拟机:

“啊!? 你要和我分手?!”

“好, 那么好”

“–禁止访问, 因为打开了防火墙”

我: “啊!”

找不到方法, 寄了, 重装咯

重新来过

实际上只要直接去创建虚拟机就可以了, 不需要预先配接口

设置静态专有 IP 和公共 IP 地址 SKLinux-ip

# Nginx 配置文件

nginx.conf

重点

root 配置根目录,index 配置入口文件

location / {
    root /usr/local/front_page/dist;
    index index.html;
}

/etc/nginx 目录将目录下原有的 nginx.conf 拷贝一份, 自定义上传;

加载配置文件

/usr/sbin/nginx -s reload

# 文件传输

刚开始一直用不好, 总是穿不上还以为坏了呢

大佬建议 全文链接

建立 SSH 连接时,就必须使用 root 用户

若使用普通用户,即使在其中切换至 root 用户,也无法上传。

所以重新建立一个 root 用户的连接即可

大无语, 复制当前已经到了 root 的标签页然后在这个新的标签页上传…

哦哦, 还不能传递到没有权限的地方, 害得放到个人用户目录手动复制过去

其实最后发现可能和 FinalShell 也有关系, 自己的另一个 MobaShell 就没有毛病…(也许吧

# 打包前端

测试将前端文件打包并放到服务器

npm run build 打包生成 dist 文件。

这里我只有一个文件, 于是直接把 HTML 文件丢进去就好了

# 代理配置

自己电脑 ping 不到 – 设在日本服务器当然, 需要设置控制台的代理, 我自己的全局代理不行

使用好的全局代理访问较快, 反应卡顿大概是线路问题 –> 很可能不是

事实上这里我忽略了一个逻辑不能自洽的问题: 为什么通过静态页面能访问(这意味着我直接访问了一台国外的服务器 而没有收到 GFW 的影响, 那么我走 22 端口的 SSH 就没有理由说出问题了

现在 2024-03-27 通过更换 Clash 配置 VPN 发现, 真正的问题可能出在所谓 TUN 模式(也就是全局模式之上的代理全局应用的玩意), 当时没开, 或者坏了, 导致一直是用裸连, 使得连接延迟很厉害. 当然现在我还是选择香港服务器了, 一方面是国内, 同时也是墙外.

# 11.17Azure 初体验文档

11.17 2023

搭建文档 全套开发环境创建

资费管理 微软 Azure 一年免费 VPS避坑指南

无需独立部署各个网络附属资源, 虚拟机会自动创建对应资源(IP, 磁盘, 网络组…)

订阅资源(Azure for Students)

1-1 型号+64GB 乞丐白嫖版, 后续可升级为 2-4 型号

关闭监视中的诊断服务,以及静态 ip改为动态 ip等降低额度消耗


设置项

重点

名称 sklinux

使用 SSH 公钥

公钥

用户名 SpadeKXRMP

秘钥对名称 SpadeKey

入站端口增加 80 来服务器访问

简单

无需基础结构冗余

资源组:自定义名称。

虚拟机名称:自定义名称。

区域:可以选择东亚,服务器在香港。

安全类型:可以选择标准。

映像:这里选择了 ubuntu

大小:选择经济型的 B1s 简单使用。

管理员账户:可使用 SSH 身份验证,那么也需要创建一个自定义的密钥对名称。

入站端口:默认只开放 22,还可开放 80 用于浏览器访问。

虚拟网络配置为刚才上面的


公共 IP 20.222.38.120 端口 22 FinalShell 连接并使用 Nginx 展示静态页面, 在公网显示

私有 IP 10.0.0.4 端口 22 使用本机 Powershell 连接(操作不便), 只可双方连接

ssh -i C:\SpadeKey.pem SpadeKXRMP@10.0.0.4

但是连接不上因为是海外服务器, 尝试用代理? 结果不会用

但是我没有这样的代理, 虽然自己服务器里面显示允许访问了, 但是自己 WindowsPowershell 还是显示连接超时

这就是肉身撞墙了, 活该!

因此还是保留这个公网 IP 罢, 2 天花 0.4 美元, 10 天花 4 美元, 250 天 100$用完.

那么赶紧把网课看了然后把资源释放掉罢.

要申请域名, 然后赶紧关闭了, 否则给干爆了等下

域名一年免费 Namecheap

spadektlsg.me

可恶不让用. 因为不认识这个大专?!

再查看完整链接找找

Tech 域名

https://get.tech/

Name 域名

https://www.name.com/zh-cn/

算了算了之后准备好让人看了再来

# 11.20 硬盘扩容 - 硬盘爆炸事件

打算使用挂载功能完成扩容

这不是机会来了嘛, 大数据的数据分析课需要更大的空间了, 分配了新的 20GB, 现在尝试挂载到上面去这边真是十万猴急(汗)

挂载了, 但是格式化一直失败; 败北!

错力, 有反转!!

尝试命令行但是最后报错了, 挂载到机子上然后用图形化界面解决 – 使用图形化 CentOS7 的磁盘管理器应用

最后的结局是, 在实验报告最后附上了这样的战败宣言:

(我从来没有在大学的实验报告中发出如此败犬的言论…现在看来还是感到汗流浃背)

实验在进行了约 2.5h 后彻底失败, 因为本人电脑收到了物理损害; 由于环境都挂载在本地个人电脑, 而环境一直有问题, 实验宣告结束

主要原因: 本实验环境是采用 8 月份[配置的]最新驱动和应用依赖的 CentOS7, 而有些软件因为版本依赖问题导致无法启用; 并且当初划分硬盘空间时没有考虑到大小问题, ==只划了 20GB==, 事实上现在已经使用到了差不多 24GB 的空间, 这导致不可避免的硬盘搭载问题以及安全稳定性问题.

在多方求援无果后决定放弃实验, 也希望老师能够理解. 鞠躬

遗憾离场, 硬盘和所有内容都将释放.(60GB 空间)

挂载完硬盘我的桌面竟然不能动了? 打字都不行了

我是再也不敢这么搞了…Soorry. 所幸 Linux 课的这台还没被鼓捣坏了

三天后 BE LIKE

抓到你了! IDEA MAVEN 硬盘爆炸事件的元凶

你是敌人吧?

全部揍一顿, 全部给我滚到回收站!

MADE IN HAVEN…

世 界 清 净 了

大刀阔斧, 砍回到只剩下 4.5GB 空间的样子, 感觉好 HIGH 哟!

# 11.25 外卖项目搭建大爆炸事件

11.25, 完成一个网课的服务端(本地虚拟机)配置主从数据库实现前后端页面挂载, 同时搭配缓存 Redis 组件功能单体项目.

(采用本地 Linux 服务器, 等待时机成熟了再用远程服务器, 因为服务器在日本不好翻)

(新的受害者出现了 -> 黑窗口一号)

当时我也想在本地尝试一下远程服务器的感觉. 于是创了一个 VMWARE 中完全没有图形化界面的玩意, 结果被所谓响铃搞崩溃了, 太不人性化了, 找什么都要自己配.

1 小时后:

寄了, 基础的面板完全划不来: 根本就是一整个烂摊子, 字体稀烂, 补全音效炸裂, 体验下得了.

还是用我自己的自己测试罢, 克隆两台来作, 不影响上课的机子

反正在我的辣手摧花下, 容量已经由 17GB -> 4GB 了, 电脑里面基本是空的还有 270GB, 虽然我有很严重的容量焦虑症, 但是这点余裕还是有的

磕磕绊绊又回来了, 用 FinalShell 来解决这问题

Day+3 日早上完成初期环境搭建, 准备完成 MySQL 主从复制.(主从最后没报错但是也没有同步实现, 大概是网络问题)

确认 SSH 打开了之后,ifconfig 地址

Finalshell 直接默认端口 22 即可

用户使用 root, 密码验证要使用对应 root 用户的账户密码而不是 root 登录密码(旧的图形化 Linux 机子测试)

11.25 在 Mysql 密码验证完全败北

11.28 卷土重来

我从地狱回来了,老师!

# 初见

瑞吉外卖 - 曼哈顿之试炼

# 限界突破

新的 linux 生产工具-适用于生产端已经完全胜过了老式的教学环境机器

她于旧的躯体中浴火重生 -> 克隆自 2 天前完成大清洗的 SK 图形化机子, 拥有最舒适的体验

现在, 是时候将课堂所学应用于项目配置了

因为我, 不再是那个可怜的花京院

很好, 经过大量的翻阅测试, 找到了适合作为生产环境的空目录:

cd /usr/etc/

之后要在这里创建生产 WorkShop, 将 Win 的生产环境应用过来

(可恶, 目录要全大写啊混淡,我的 Win 电脑怎么成了这个样子?)(由于暂时没有使用对应功能, 有些层级没有显示)

目录层级:

    /usr/etc/

            |- WORKSHOP

                        |- CODE

                             ...(coding)

                        |- DATA

                             ...(files)

                        |- TOOL

                             ...(software)

之后的生产环境都在此进行, 不得在所谓个人文件夹运行

这次是第一次测试, 也是简单的网课部署需求, 因此不要求一步到位.

之后将使用到确确实实的云服务器上..

然后装好了就准备安装, 直接提取装到对应地方, 不要再像之前一样还要拉到对应位置了; 现在要求一步到位

采用大佬推荐 echo 指令进行快速末尾添加元素

echo ’ XXX ’ » /etc/profile

经典打 java -version 还是 OPENJDK, 当初没做好, 但是在 Hadoop 那边的经验是能定位到 JAVAHOME 是 1.8 就没问题

特别注意:环境变量值的结尾没有任何符号,不同值之间用:隔开(windows 中用;)

注意, rpm 操作中后面的具体版本号不用打出来

rpm -e --nodeps mariadb-libs

# Mysql 老是有依赖问题 - 爆炸了

还是试试自己的安装方法吗?

或者是上次的那个清理缓存给我清理坏了?

不理解了 yum 也没有反应, 镜像问题

解决链接尝试

1、将/etc/yum.repos.d/epel.repo​ 中的mirrorlist​ 改为baseurl

2//etc/resolv.conf​ 文件中增加nameserver 144.144.144.144

依然失败

博主链接

使用 yum 源信息安装

# repo的安装,执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
cd /etc/yum.repos.d/
# 注意:必须进入到/etc/yum.repos.d/目录后再使用yum命令进行安装
yum -y install mysql-server


# 如果报错误Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY,加上force和nodeps参数即可
# 例如:
rpm -ivh mysql-community-server-8.0.25-1.el8.x86_64.rpm --force --nodeps

大概 yum 是坏了罢

那么跳过数据库罢, Nginx 也跳过, 保存文档之后使用即可

任务失败一半(NE)

新环境存活时间: 11.25 15:30 ->17:00, 其兴也勃乎.

# 11.28 卷土重来事件

2023-11-28 16:56:11

记录, 主机没有网(指的是我这种特殊的没有网时间)的时候 ens33 网卡会完全找不到,只剩下一个 lo

好了, 开始安装内容吧, 按照上面的内容进行操作

使用 route 命令查看网关是否设置成功,若下面的显示项出现刚才配置的网关已经出现则说明成功,负责则执行 route add default gw 192.168.91.2 命令重新设置。

# 一线生机 × 没有活路

# Failed1

我又有鬼点子了

反正是虚拟机, 本地的也可以被 FinalShell 连接, 那么我就算不去安装 VMTOOL, 直接用 FinalShell 来完成文件和复制黏贴同步不就行了吗?

这样还能规避 Java(指一个报错)风险, 还能继续用黑框体验

我真是个​~~天才~~​大蠢蛋! 怎么没想到呢


2023-11-27 18:46:20

装配又一台虚拟机, 准备初步测试

首先卸载 JDK!

然后安装环境

什么都没有的情况下, 想要 idconfig 都不行, 只能使用 ip addr, 查看 ens33

结果连网卡都没有, 哦哦, 看了建议是最小安装也要把最小安装右边的几个选项打勾啊, 不然真的什么都没有

真的被拷打这里, 真的不能脱离前人优秀的建议自己走, 不然真的翻哪个沟里都不知道

好吧, 受害者++

# Failed2

好吧, 这次要一并把静态 IP 配好, 不然确实没有静态太麻烦了

开整: 最小安装, 并且删除声卡 USB 打印机等东西, 尽可能无害化安装

选择了 ens32, 因为是 NAT 模式

很好, 找到感觉了, 机子删除, 好像不小心把内存崩溃检测开了(艹)

明天再来测试(没电了)

# Failed3

虽然病了, 但是战斗还在继续

终于发现了一切问题的根源: 本机网络不能使用 NAT 模式, 只能用桥接连接本地 WLAN -> 这是因为我的 Intel 网卡坏了

大概原因是 Windows 更新异常问题-8.27 日

没想到啊,竟然会这样

本地的桥接的话, IP 地址是

硬件地址oo:0C:29:2E:C4:DO

IPv4地址192.168.0.117

IPv6地址2409:8a04:5381:b384:2a3c:3996:4038:9e6d/64

子网掩码 255.255.255.0

默认路由192.168.0.1

DNS 192.168.0.1


在安装选项中可以看到 IPv4 设置 - 自动 DHCP 等, 可以在这里选择静态

那么我试试罢

好, ping 通了 baidu, 接下来来处理万恶的静态 IP 问题

万恶淫为首(这是什么?), 我不要伤亡数字, 我只要静态 IP

参考

首先改一下我的主机名好看些

hostnamectl set-hostname SKSlave

由于是在 skmaster 操作,因此改为 master

找网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens32

查找 ifcfg 开头的文件:ll ifcfg*​ 两个文件 ifcfg-lo 为本地网卡的配置文件,127.0.0.1

vim 编辑器编辑 ifcfg-ens33,命令:vim ifcfg-ens33

我把网关放为 2

BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置

#配置IP地址信息
IPADDR=192.168.0.117
NETMASK=255.255.255.0
GATEWAY=192.168.0.2

DNS1=192.168.0.2#DNS 配置
DNS2=114.114.114.114

HWADDR=00:0C:29:2E:C4:D0 #MAC地址 从虚拟机管理面板获取

重启网络,命令行:

service network restart

114 DNS

114 DNS 源自南京信风 2010 年为中国电信及中国联通两个大省约 2000 万宽带用户提供备份服务的超大型 DNS 系统,同时提供公众 DNS 解析服务及权威 DNS 解析备份服务,114DNS 将为中国的互联网及电子商务提供可靠的基础安全保障。114DNS 为国内云安全 DNS 服务先行者,114DNS 平台由多个基础电信运营商与南京信风共建共享,但由南京信风提供技术支持以确保服务的优质高效。

IPv4 DNS 地址:114.114.114.114 / 114.114.115.115

学习 DNS 服务 链接

Google 公共 DNS IP 地址

Google 公共 DNS IP 地址 (IPv4) 如下所示:

8.8.8.8
8.8.4.4

但是这些都不顶用呢, 不是 VPN

重启 NetworkManager

systemctl restart NetworkManager

嗯, 怎么不行呢

From 192.168.0.117 icmp_seq=8 Destination Host Unreachable

大神救场

如果是在 VMware 中使用 Linux,并且使用的是桥接网络,还需要进行一些设置:

VMWARE-编辑-虚拟网络配置器

(我的电脑不能用 NAT?)

之后试试 NAT 罢

默认只开启了仅主机、NAT,点击“更改设置”,把桥接加进去。

使用动态 ip 不需要在这里面添加,使用静态 ip 才需要添加。

一下子给我跳出了 VMnet0, 自动桥接

如果机器(主要是笔记本)一会儿连公司的网、一会连家里的网、一会儿连学校的网,一会儿连自己的手机热点,一会儿连这个网,一会儿连那个网,连接的网络变了,需要重新配置上面那些地址,否则连不上网。

那么我还是寄了

静态 ip 适合一直使用某个网络的情况,比如服务器,一直使用机房的网。

我的建议是使用自习室先; (太傻了, 关机就变了啊喂) 调整了一下自己网络的配置, 好


那么再来试试 NAT 模式罢, 不然针的就做不好了

来, NAT 模式!启动

子网IP     192.168.91.0
IP        192.168.91.128
掩码      255.255.255.0
广播      192.168.91.255
网关    192.168.91.2
端口    22
位置MAC    00:50:56:24:51:95

ens32

BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置

#配置IP地址信息
IPADDR=192.168.91.128
NETMASK=255.255.255.0
GATEWAY=192.168.91.2

DNS1=192.168.91.2 #DNS 配置
DNS2=114.114.114.114

HWADDR=00:50:56:25:A8:EB #MAC地址 从虚拟机管理面板获取
service network restart

很好, 接下来没问题了, 还是 NAT 好!

话说回来, NAT 到底是什么啊?? 憨憨挠头


接下来压力测试: 是否会在关机以及切换网络情况下导致 IP 变化!

  1. 关机重开
  2. 换手机流量

?为什么连接不上了

NAT 配置静态 IP 后 FinalShell 连接不上

而且还 ping 不了了?

全部报废?

那么看来要改一下了, 应该是桥接换成 NAT 的文件问题

之后修改 IPADDR 的值为上面查到的子网 ip 到 255 的子网(即 192.168.64.0~192.168.64.255,不要选 0 和 255,选择中间的任意一个值,0 和 255 有专门的用途),GATEWAY 查到的对应的网关,DNS 与网关的值一致。

这里坏了

感觉还是 SSH 的问题?

要开启 sshd

service sshd start

然后又报错

java.net.NoRouteToHostException: No route to host: connect

哦哦自己电脑网络掉了, 看来还是自己电脑问题


我又彻底明白了,必须要安装时候就选择好 NAT 模式, 大概可以这样

既然知道了路线, 那么就重新开始罢

# 帝王是我 SpadeK 哒? NOOOOO!

NAT 模式!启动

ens33 网卡

子网IP     192.168.91.0
IP        192.168.91.129
掩码      255.255.255.0
广播      192.168.91.255
网关    192.168.91.2
端口    22
位置MAC   00:50:56:25:17:A0
默认路由/DNS: 192.168.91.2

这下是从图形界面配置了,输入三项然后保存 NAT 配置, 加上虚拟网络配置器

好,连接上了

最后自己的效果(和网上的文件样子不太一样,自动生成的能测试静态通过就不改了)

能 ping,能连接 91.129

(配置选项好像不用加上 255 那个了)

inet 192.168.91.129  netmask 255.255.255.0  broadcast 192.168.91.255

ONBOOT="yes"

IPADDR="192.168.91.129"
PREFIX="24"

GATEWAY="192.168.91.2"

DNS1="192.168.91.2"
DNS2="114.114.114.114"

测试*2

关机后又连不上了

尝试回退所谓 static 设置, 重新加载网络 -> 木大木大木大木大木大木大木大木大

# 斩断因果

终于找到了, 是自己禁用了服务!

就是这个关机上不了网问题!

就是服务不能在开机后就启动!

在服务设置开启了, 但是拒绝访问

网络连接窗口总是崩溃, 该死的问题原来真的在 Win10 这里啊!

原来是 8 月 25 日被自动禁用了服务项的启动, 本来应该是开机延迟启动的.

原来之前 9 月使用 NAT 连不上网都是这样, 因为内置的 NAT 没法获得网络

我真想回去给 8.25 的自己抽几个大嘴巴子

好,现在可以准备冲击 MYSQL 了, 主要问题就是依赖和安装包的问题

# 11.29 瑞吉斩杀

从和当前黑窗子 Linux 正式交互以来的笔记

# 打包运行测试

打一个 HelloworldServer 基础 Jar 包给 linux

Server.java (by - newbing)

// 导入必要的类和包
import java.io.*;
import java.net.*;

// 定义一个类,实现Runnable接口,用于处理客户端的请求
class ServerHandler implements Runnable {
    // 定义一个Socket对象,用于和客户端通信
    private Socket socket;

    // 定义一个构造方法,接收一个Socket对象作为参数
    public ServerHandler(Socket socket) {
        this.socket = socket;
    }

    // 重写run方法,实现业务逻辑
    public void run() {
        try {
            // 获取输入流,用于读取客户端发送的数据
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            // 获取输出流,用于向客户端发送数据
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            // 读取客户端发送的一行数据
            String line = in.readLine();
            // 打印客户端发送的数据
            System.out.println("Received from client: " + line);
            // 向客户端发送HelloWorld
            out.println("HelloWorld");
            // 关闭输入流、输出流和Socket对象
            in.close();
            out.close();
            socket.close();
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }
    }
}

// 定义一个主类,用于启动服务器
public class Server {
    // 定义一个常量,表示服务器端口号
    public static final int PORT = 8080;

    // 定义一个主方法,用于启动服务器
    public static void main(String[] args) {
        try {
            // 创建一个ServerSocket对象,监听指定的端口号
            ServerSocket serverSocket = new ServerSocket(PORT);
            // 打印服务器启动信息
            System.out.println("Server started at port " + PORT);
            // 无限循环,等待客户端的连接
            while (true) {
                // 接受客户端的连接,返回一个Socket对象
                Socket socket = serverSocket.accept();
                // 打印客户端的地址和端口号
                System.out.println("Connected to client: " + socket.getInetAddress() + ":" + socket.getPort());
                // 创建一个ServerHandler对象,传入Socket对象
                ServerHandler handler = new ServerHandler(socket);
                // 创建一个线程,执行ServerHandler对象的run方法
                Thread thread = new Thread(handler);
                // 启动线程
                thread.start();
            }
        } catch (IOException e) {
            // 处理异常
            e.printStackTrace();
        }
    }
}

然后传到 CODE-TEMP 目录下 执行

javac Server.java

生成 class 文件

-rw-r--r--. 1 root root 1332 11月 29 15:11 Server.class
-rw-r--r--. 1 root root 1278 11月 29 15:11 ServerHandler.class
-rw-r--r--. 1 root root 2780 11月 29 15:03 Server.java

然后运行

jar cvf Server.jar Server.class

生成了 jar 包

将 jar 包运行

java -jar Server.jar

报错

java -jar Server.jar​ Server.jar 中没有主清单属性

要解决这个错误,您有两种方法:

方法一:您可以手动创建或修改 MANIFEST.MF 文件,添加或修改 Main-Class 属性,指定您的主类的全限定名,例如 Main-Class: com.example.Server。然后,您可以使用压缩工具将这个文件替换或添加到您的 Server.jar 文件中。这样,您就可以使用 java -jar Server.jar 命令来运行您的程序了。

方法二:您可以使用 Maven 或其他的构建工具来自动创建或修改 MANIFEST.MF 文件,添加或修改 Main-Class 属性,指定您的主类的全限定名,例如 Main-Class: com.example.Server。然后,您可以使用 Maven 或其他的构建工具来重新打包您的 Server.jar 文件。这样,您就可以使用 java -jar Server.jar 命令来运行您的程序了。

其他就是设置后台了, 不能独占屏幕 no hang up

nohup java -jar boot工程.jar &> hello.log &
后台运行java -jar命令,并将日志输出到hello.log文件
查找进程 ps -ef|grep XXX

# Redis 测试

Redis 启动两个连接, 第一个开启 Redis

 redis-server

第二个启用客户端进行连接

 redis-cli

连接到了本地

测试

keys \*

查看当前存储的 keyvalue 对

成功

# MYSQL 主从复制

当前装好的 Master 复制

新的 IP 怎么和旧的一样? 哦,是一块连接卡片啊, 那么就要手动控制分配了

主机固定一个 IP, 从机从 129 开始分配比较好吗, 要测试一下

vim /etc/sysconfig/network-scripts/ifcfg-ens33

主网卡配置

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0d6610c3-9310-4ab0-bd2d-e4a3a50f6e34"
DEVICE="ens33"

ONBOOT="yes"

IPADDR="192.168.91.129"
PREFIX="24"

GATEWAY="192.168.91.2"

DNS1="192.168.91.2"
DNS2="114.114.114.114"

ZONE=public

Slave 网卡配置同上, 就是 MAC 地址不同

IP 改为 130

好的,连接上了两者

修改主库

修改 MySQL 数据库的配置文件

/etc/my.cnf

主机

log_bin=mysql-bin #[必须]启用二进制日志
server-id=128 #[必须]服务器唯一ID,只需要确保其id是唯一的就好

# 密码不合规 Failed

查看需要的规定

SHOW VARIABLES LIKE 'validate_password%';

修改

set global validate_password_policy=0;
set global validate_password_length=1;

不行啊, 这里主库没有显示自己是主库, 还是按照黑马的自己教程来吧

2023-11-29 16:55:35 工作暂停

先把主机的状态保存了, 之后项目可以用到

这样又到了三台机子共存的状态了, 可恶

大佬教程

网上介绍的方法大都是使用 grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ identified by ‘密码’;这种方式,但实测会出现……near ‘identified by 密码’ at line 1 这个错误!
经分析,出错的原因是新版的的 mysql 版本已经将创建账户和赋予权限的方式分开了,所以应该使用上面的方法

确实是这样

那么试试这种配置方式

create user 'slave'@'192.168.91.130' identified by '2333';
# 赋予replication slave权限但在使用从库的数据时还是要使用有read权限的账号
grant replication slave on *.* to 'slave'@'192.168.91.130';

flush privileges;

又来!

Your password does not satisfy the current policy requirements

看老子怎么拷打你

SHOW VARIABLES LIKE 'validate_password%';

然后调整我们的设置项

set global  validate_password_policy=LOW;
set global  validate_password_length=3;
set global  validate_password_mixed_case_count=0;
set global   validate_password_special_char_count=0;

这下允许访问了

当前可用测试账号

Kyle root

Slave 2333

然后就没有权限了, 两个都需要给与而外的权限给予操作

grant process on *.* to 数据库用户名;

刷新权限

flush privileges;

查看权限列表

show processlist;

重启服务

systemctl restart mysqld


还是不行, 看来是授权问题

grant replication slave on *.* to 'xiaoming'@'%' identified by 'root@2333';

validate_password_policy 取值

0 or LOW     只验证长度
1 or MEDIUM  验证长度、数字、大小写、特殊字符
2 or STRONG  验证长度、数字、大小写、特殊字符、字典文件

再次执行修改密码语句

ALTER USER 'root'@'localhost' IDENTIFIED BY '2333';

ok 最后没有实现的原因是把修改内容修改到 Slave 机子上了

结果竟然 mysql 打不开了

好, mysql 崩溃, 实验结束

# 拍屁股

此次完全完成了两台机子的搭配, 但是最后 mysql 又发电做不了了

OK, 那么保存第一台机子主从配置前的状态, 走人了…后面的等到苍穹结束了有一样的训练过程

查看所有用户

SELECT User FROM mysql.user

删除中间用户

delete from user where User='test'

保存走人了之后, 溜了溜了

# 阴差阳错

绝对的阴差阳错, 上面的绝对的最神奇的报错

又来了, 照着黑马打

grant replication slave on *.* to 'xiaoming'@'%' identified by 'root@2333';

结果是用了删除克隆虚拟机来解决了

------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog\_Do\_DB | Binlog\_Ignore\_DB | Executed\_Gtid\_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      441 |              |                  |                   |

虽然最后也没能完全复现, 就是没报错也没有最后一样的结果, 还是那里错了.

位置是 441

必须保证这个时候是开着的

现在去从库, 仍然是修改 etc/my.文件

然后 mysqld 下面

server-id=101
systemctl restart mysqld

发一条语句, 改两个地方 : 日志位置 和 Position

change master to
master_host= '192.168.91.129' , master_user= 'xiaoming' , master_password='Root@123456',master_log_file= 'mysql-bin.000002' ,master_log_pos=441;

start slave

show slave status;

效果

Slave_IO_State   | Master_Host   | Master_User | Master_Port | Connect_Retry | Master_Log_File  | Read_Master_Log_Pos | Relay_Log_File
Connecting to master | 192.168.91.129 | xiaoming  | 3306 |  60 | mysql-bin.000002 | 441 | SKMaster-relay-bin.000001

完成了! 没有报错, 一切正常(?

# 冀中寄

现在导入数据库到服务器主库

嗯? 无法配置, 明明没有报错了啊

网上教程说要手动同步, 这不是没意义了嘛

同步主库已有数据到从库

# 主从配置总结

主库配置

  1. 进入配置文件
    vim /etc/my.cnf
  2. 添加两行
    log-bin=mysql-bin #开启二进制日志
    server-id=201 #设置 server-id,唯一值,标识主机
  3. 重启服务
    service mysql restart
  4. 创建账号密码
    进入 mysql
    mysql -u root -p
    创建用户(IP 为可访问该 master 的 IP,任意 IP 就写’%’)
    CREATE USER ‘slave*userid’@’%’ IDENTIFIED BY ‘slave_pwd’;
    查看用户是否创建成功
    select user,host from mysql.user;
    分配权限(IP 为可访问该 master 的 IP,任意 IP 就写’%’)
    GRANT REPLICATION SLAVE ON *._ TO ‘slave_userid’@’%’;
  5. 刷新权限
    flush privileges;
  6. 查看 master 状态,记录二进制文件名 File 和位置 Position,后面配从库要用
    show master status;

从库配置

  1. 进入配置文件
    vim /etc/my.cnf
  2. 添加一行
    server-id=202 #设置 server-id,唯一值,标识主机
  3. 重启服务
    service mysql restart
  4. 登录进入 mysql,执行同步 sql 语句(主服务器名,用于主从的用户名,密码,二进制文件名,位置)
    mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='192.168.0.201',
MASTER_USER='slave_userid',
MASTER_PASSWORD='slave_pwd',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=755;
  1. 启动 slave 同步进程
    start slave;
  2. 查看 slave 状态,当 Slave_IO_Running 和 Slave_SQL_Running 都为 YES 的时候就表示主从同步设置成功了
    show slave status\G
  3. 可以改数据验证同步,可以 stop slave;执行看看效果
  4. 其他
    不同步哪些数据库
    binlog-ignore-db = mysql
    binlog-ignore-db = test
    binlog-ignore-db = information_schema
    只同步哪些数据库,除此之外,其他不同步
    binlog-do-db = game

# 跑项目

确实是可以了, 那么就跳过这一步, 手动同步一下

项目跑起来了, 但是找不到 redis, 哦每次都要手动开

Redis 启动

redis-server /usr/etc/WORKSHOP/TOOL/redis-4.0.0/redis.conf

# 日志综合

我又回来了, 虽然发烧了但是工作仍要继续
我找到问题的根源了, 我的一个 VMware 服务项被自己禁用掉了(8 月份误操作)
导致连接出问题

于是又把打包好的工程拆开, 然后建立 Master 机环境

调试 Redis 完毕, 主从同步没有问题配好了但是同步不起来, 手动同步(嘿咻)

登录页面

管理端 + 手机应用端

http://localhost:8080/backend/page/login/login.html

http://localhost:8080/front/page/login.html

接下来将项目部署到服务器测试

14 号整理文件等, 然后 22 号开始跟着做, 22,23,24 三天打完并且记录了(因为有 Linux 和 Git 基础,中间的很快)
25 今天下午本来能全部都解决的, 结果还是被自己机子的问题给搞麻了.
虚拟机有问题, 只能等着 1 月份回去了重装后解决了

或许就就这样鸽了罢

3 天,差不多总共 24 小时的工时就可以了.
余下的记录在笔记本之后参考部署

Pause reason : VMware Fail! MYSQL kept screaming!
I can’t stand it any more…
So I push the delete button to sentence its death…

# Nginx 跳过

接下来是 Nginx

不用看了, 后面一起来

# 总结

总结环节了

真的是, 今天一打开, IP 没问题, 但是 Finalshell 又连不上了

就是自己电脑垃圾网卡的问题, 网络太差了…

每次都要手动开启一下 redis, 连开机自启都不想去配的混蛋!

没错, 就是这家伙

# 11.30 苍穹后续拯救

最后想想还是不救了, 后面用云服务器+Docker 自己配

# 12 月项目结合演练 + 拐棍计划

# 12.05 NewPublicIP 课堂展示

开 IP 用来课程展示

IP - 动态

20.43.78.101

希望不要扣钱

使用

whereis nginx

查找忘记了地方的 nginx 目录

找到配置文件, 然后定位目录

转移新的文件过去

这里层级配置的有问题

 root         /usr/share/nginx/html;
location / {
            root /usr/local/front_page/dist;
            index index.html;
        }

只是一个小插曲, 不要在意

# 12.25 服务器拐棍 Linux 装配 Record

12.25(2023) 开始的拐棍计划

由于苦恼于本地 VMware 太流氓, 而且 Mysql 又吃资源, 并且后面需要… redis 也能用 IDEA 访问了

接下来是暂时在大陆安装一台能访问的虚拟机, 位置选东亚, 准备执行拐棍计划.

# 连接

从我本地 ping 这台机子还是 ping 不上吗, 尝试解决: 哦, 是微软本身为了安全而关闭的

既然是拐棍机子, 需要安装两个数据库(redis 和 Mysql), 于是用新学的 Docker 去找合适镜像安装基础生产环境

博客园参考

加入普通用户

sudo usermod -aG docker $USER

记得设置 root 密码

sudo passwd root

# JDK

ubantu 配 JDK 环境

sudo apt install openjdk-17-jdk

找到 OpenJDK 17 的安装路径。

使用 update-alternatives 命令来查找

sudo update-alternatives --list java

复制对应于 OpenJDK 17 的路径。

vim ~/.bashrc

在文件末尾添加以下行,但不要忘记将 /path/to/your/openjdk-17 替换为实际的路径。

export JAVA_HOME=/path/to/your/openjdk-17

# Docker

映像 image 装配

先装 mysql 与 redis

# Redis

个人手册+博客 Link

暂时不使用数据券

docker pull redis

# 目录

创建 redis 管理目录,方便后期管理

mkdir -p /usr/etc/WORKSHOP/TOOL/redis
mkdir -p /usr/etc/WORKSHOP/TOOL/redis/data

# 搭载

注:解析-p 6379:6379,-p 端口:映射端口;为了好看所以做了换行,执行的时候还是需要改成一行,每行一个空格隔开就可以了;

docker run -p 6379:6379 --name redis
-v /usr/etc/WORKSHOP/TOOL/redis/redis.conf:/etc/redis/redis.conf
-v /usr/etc/WORKSHOP/TOOL/redis/data:/data
-d redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -p 6379:6379 --name redis -v /usr/etc/WORKSHOP/TOOL/redis/redis.conf:/etc/redis/redis.conf -v /usr/etc/WORKSHOP/TOOL/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

参数解释

-p 6379:6379 #把容器内的6379端口映射到宿主机6379端口
-v /data/redis/redis.conf:/etc/redis/redis.conf#把宿主机配置好的redis.conf放到容器内的这个位置中
-v /data/redis/data:/data#把redis持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf#这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes #redis启动后数据持久化

# 验证
命令docker ps

# 测试
# 进入的时候可以写容器名或者容器ID,redis是我的容器名
docker exec -it redis /bin/bash # 进入redis 容器

redis-cli # 执行客户端命令

127.0.0.1:6379> set test 1 # 存数据测试
OK
127.0.0.1:6379> get test # 取数据测试
"1"

# 连接

修改密码

设置密码:config set requirepass 2333

连接 redis,认证:auth 2333

本地使用 IDEA 内置插件连接

# Mysql

创建并运行新 mysql 容器,挂载本地目录

这里作了简化, 无需手动创建目录, cd 到对应目录之后即可进行创建

# 搭载
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=2333 \
  -v ./mysql/data:/var/lib/mysql \
  -v ./mysql/conf:/etc/mysql/conf.d \
  -v ./mysql/init:/docker-entrypoint-initdb.d \
  mysql

# 测试

进入容器,并通过账号 root 查看 MySQL 服务能否正常连接

docker ps
docker exec -it mysql /bin/bash
mysql -h localhost -u root -p

# 维护

需要在 Azure 管理界面开放入站和出站端口 3306

内存快要吃饱了, 因此只能到此为止: 看来真的是太逊了, 两个开起来就把内存 CPU 吃爆炸了无法响应(还要加上 Docker 的配置), 看来要换 2GB 内存的家伙咯

# 快捷调用

# 地址
20.255.94.176

# redis -default -2333
docker exec -it redis /bin/bash
jdbc:redis://20.255.94.176:6379/12

# mysql -root -2333
docker exec -it mysql /bin/bash
jdbc:mysql://20.255.94.176:3306/

# Docker 管理

查看当前状态

docker ps

重启镜像

停止全部容器
docker stop $(docker ps -aq)

启动所有容器
docker start $(docker ps -aq)
docker restart mysql
docker restart redis

# 问题

目前内存占用过大, 需要后面调整内存分配. 要不还是自己配试试内存大小罢

# 12.28 拐棍二号白嫖 - 败北

升级链接, 单核的也不行, 经常跑满, 2GB 也可能吃到一半, 还是直接扩充到 2 核 4GB 为好

5,500 日元 = 38.567057 美元 , 一个月直接吃 40 刀乐, 两个月半直接用光额度, 不行不行, 白嫖失败咯

还是用免费的然后自己配罢. 就用基础的装配方法, 从头来一遍看看内存占用. 肯定是比 Docker 少的罢

好像可以设置吃的资源? 等验证不行了再来试试

使用了扩展功能, 重启一下就能重置大小了, 现在是 2 核 4GB

没用了之后再转换回来


那么接下来重装之后最小手动安装 Mysql 和 Redis 尝试, 降低内存占用

手动装 Redis 先跑跑, 这个不能装在本地因此必须要装在虚拟机, 看看效果

版本选择黑马推荐的老版本

# IP 爆炸

感觉有问题了

一直连不上, 使用故障排除?

啊这, 这稳定性也太差了罢. 香港应该没有什么墙的事情罢

又得全部删了重来, 大概是公有 IP 必须是自己创建的罢

对, 必须把原来的公有 IP 删除后立刻填入自己新建的, 让它来不及反应才行

# 12.29 拐棍三号

# Mysql

Ubantu 装这个 Mysql

apt install mysql-server

# Redis

sudo apt update
sudo apt install redis
service redis start

自启动

 systemctl enable redis-server.service

进入控制台设置密码

 redis-cli
config set requirepass 2333

查看自己的用户名

redis-cli CLIENT LIST

# 连接问题

天内怎么又连接不上了, 是什么毛病?

大概是我的梯子问题, 这两天网络和 VPN 问题太大了??

哦哦, 原来是刚才为了开服务, 打开了网络管理器, 然后它就把基础的 SSH 22 端口 和 HTTP 80 端口给覆盖了, 这下就连接不上了嘛…

说到底是自己太呆了

# 找不到远程问题

然后解决找不到远程问题, 是要改配置文件

那么去改

whereis redis.conf

在 vim 命令模式下键入“/protected-mode"回车进行搜索 protected-mode 关键字,按“n"查找下一个

yes -> no

搜索 bind 关键字,找到如图配置项,在 bind 前面加上“#”将当前行注释(或者改为你的主机 ip)

修改密码——搜索 requirepass 关键字,找到如下配置,按 i 进入输入模式,requirepass 空格后面就是要设置的密码

redis-server /etc/redis/redis.conf

然后重启服务即可

# 用户名被拒绝问题

公钥又不对了, 该死, 用自己的密码罢

这个时候修改用户名, 不修改密码也能连上了

# MYSQL 版本 8.0.35 针对性处理

mysql-server 和 mysql-client 区别

mysql-server 是 MySQL 核心程序将安装 MySQL 数据库服务器,用于生成管理多个数据库实例,持久保存数据并为其提供查询接口(SQL),供不同客户端调用。

mysql-client 是操作数据库实例的工具,允许连接到 MySQL 服务器使用该查询接口。它将为您提供 MySQL 命令行程序。

如果只需要连接到远程服务器并运行查询,只安装 mysql-client 就可以了。如果是服务器只提供连接服务的只需要安装 mysql-server

链接 1

链接 12

链接 123

自启动

service mysql enable

记录, 这边发现了问题: 只有在使用 root 用户登录的时候才能进入, 否则无法进入

  mysql> use mysql;

#开启远程连接
update user set host='%' where user='root';
#修改了之后刷新以下权限
flush privileges;

#修改数据库密码.
ALTER USER 'root'@'%' identified with mysql_native_password BY '2333';

#修改了之后刷新以下权限
flush privileges;

#退出数据库
quit;

正常使用 mysql -u root -p 然后输入密码已经可以正常进入 mysql.

从 root 退出到 spadek 普通用户: 直接 exit

确认可以, 就是说用默认用户连接进来已经可以了

# 连接不上数据库?

解决 Navicat 连接不上数据库的问题

配置远程连接

vi /etc/mysql/mysql.conf.d/mysqld.cnf 找到 bind-address,把 127.0.0.1 修改成 0.0.0.0, 把两个地址全部注释了也行

# 12.30 新机子小水管拐棍三号-改 - 运转中

使用 Mysql + Redis 手动配置, 因为没有 Docker, 内存没有爆炸.

CPU 单核小水管, 很慢, 内存只剩下 0.09GB, 也就是 90MB 剩余了, 一旦处理大的环境就需要立刻转移到大架构, 大架构最长支撑 3 个月.

综合来看, 这个体系能够撑 6 个月时间, 也就是到找实习的时候已经用上了

重新启动不会把 IP 弄掉, 因此出问题了重启即可

# 连接参数

# Redis

空用户 2333

jdbc:redis://XXX:6379/12

# Mysql

root 2333

jdbc:mysql://XXX:3306/

# 3 月复健

# 3.26LinuxVMware 教程配置

我不用本地虚拟机了, 因此不使用

# 安装 VMware

VMware 是业界最好用的虚拟机软件之一。

windows 版本的网站

特别注意,Windows10 以上版本操作系统需要下载安装 VMware Workstation Pro16 及以上版本,安装方式此处略。

如果自己电脑上已经有了低版本的 VMware,则需要先卸载,再重新安装。卸载过程比较麻烦

# 卸载旧版 VMware(可选)

首先,在控制面板找到程序和功能选项,找到 VMware,进行卸载操作:

卸载完成后,还需要看看 VMware 的安装目录是否有旧数据,一并清理掉。

比如安装在C 盘的 Program Files(x86)

接下来要清理注册表:

首先,按住 Windows + R , 在弹出框中输入 “regedit” 调出注册表:

进入注册表编辑器,如图:

打开**HKEY_CURRENT_USER​ 文件夹,找到Software**​ 文件夹并打开

找到“VMware.Inc”,右键删除:

# 安装 Linux 发行版

Centos7 是比较常用的一个 Linux 发行版本

老外的下载站 新 CentOS7iso 文件网址

CentoS-7-x86_64-Minimal-2009.iso

我去, 我原来的要 4.1G! 这不狠狠下载!

# 组装

在网络页面做下面的几件事情:

  1. 修改主机名为自己喜欢的主机名,不要出现中文和特殊字符,建议用 localhost
  2. 点击应用
  3. 将网络连接打开
  4. 点击配置,设置详细网络信息

接下来的配置要参考:

点击配置按钮后,我们需要把网卡地址改为静态 IP,这样可以避免每次启动虚拟机 IP 都变化。所有配置照搬你自己截图的网络信息填写,不要照抄我的:

上图中的四个信息参考之前的以太网(ens33)网卡的截图,不要照搬我的来写。

# 设置虚拟机快照

在虚拟机安装完成后,最好立刻设置一个快照,这样一旦将来虚拟机出现问题,可以快速恢复。

我们先停止虚拟机,点击 VMware 顶部菜单中的暂停​**下拉选框**​,选择关闭客户机​:

# 网络模式

# 桥接

在网络网卡上安装了一个桥接协议,让这块网卡处于混杂模式,可以同时连接多个网络的做法。

桥接下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样放在这个交换机当中,所以所有桥接下网卡与网卡都是交换模式的,相互可以访问而不干扰。

# Host-only

(仅与主机通信)
虚拟机使用 VMnet1 网卡与主机单独组网,主机对于虚拟机相当于路由器

# NAT

虚拟机使用 VMnet8 网卡与主机单独组网,主机对于虚拟机相当于路由器,VMnet8 网卡通过 NAT 地址转换协议与物理机网卡通信

# 3.28 完全复健后云资源(服务器等)下一步计划

自己的服务器直接用 Docker 快速装配即可, 不用去鼓捣手动装了. 因此不能再用小水管 1 核 1GB 玩意了.

首先升级当前微软配置, 等到三个月后配额用完了直接趁 618 购买国内服务器提供小水管服务. 而后静态页面等需求我不打算另外的公开博客, 因此对于 GFW 外的服务器暂时没有需求.

OSS 也一样, 项目开写时直接购买

May. 6th, 2024, hide secret key pairs

Licensed under CC BY-NC-SA 4.0
最后更新于 2024-03-26 10:32 CST
本博客已稳定运行
发表了14篇文章 · 总计180.21k字
Powered by Blood, Sweat, and Tears
使用 Hugo 构建 主题 StackJimmy 设计