云计算基础
-
环境准备
- 配置虚拟机
- 安装docker
- 前提
- 安装
- 步骤
- 命令
- 效果图
- 安装docker-compose
- 前提
- 安装
- 步骤
- 效果图
- 安装gitea
- 步骤
- 命令
- 效果图
- 执行docker-compose命令
- 浏览器初始gitea配置
- 浏览器登录gitea
- 创建组织
- 创建仓库
-
Drone安装
- 步骤
- 效果图
-
非自动化部署
- nginx安装
- redis安装
- jdk安装
-
自动化部署
- tmocat安装
- nginx
环境准备
配置虚拟机



安装docker
前提
- 确保系统内核版本在3.10以上
- 确保系统已经安装了docker
离线安装
准备安装包 docker-18.06.1-ce.tgz
下载地址https://download.docker.com/linux/static/stable/x86_64/
“本项目需要安装 docker,建议使用 docker-18.06.1-ce.tgz 版本,你可以从 docker 官方网站获取安装包。”
- tar -zxvf docker-18.06.1-ce.tgz 解压安装包
- cp docker/* /usr/bin/ 将解压出来的docker文件复制到 /usr/bin/ 目录下
- vi /etc/systemd/system/docker.service 新增docker.service文件,复制进docker配置文件,这样可以将docker注册为service服务
docker配置文件如下:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
- chmod +x /etc/systemd/system/docker.service 给docker.service文件添加执行权限
- systemctl daemon-reload 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
- systemctl start docker 启动docker
- docker -v 查看docker版本

- systemctl status docker 查看docker状态

显示如上图则表示docker启动成功
daemon.json配置文件
- sudo mkdir -p /etc/docker
- vim daemon.json
daemon.json的配置文件内容如下:
{
“registry-mirrors”: [
“https://docker.1ms.run”,
“https://do.nark.eu.org”,
“https://hub.geekery.cn”,
“https://docker.linkedbus.com”,
“https://docker.cloudlayer.icu”,
“https://a.ussh.net”,
“https://docker.5z5f.com”
]
}
这里特别提醒一下 :该配置文件为镜像加速文件,如已经无法使用可去网站查找其他的镜像加速网址,例如阿里云镜像加速网址等等
- systemctl daemon-reload
- systemctl restart docker
安装docker-compose
前提
注意版本号
安装
上传docker-compose到 /usr/local/bin目录下面
(可以从docker-compose官网下载,也可以从github上下载)
下载地址:https://github.com/docker/compose/releases
步骤
- cd /usr/local/bin
- chmod +x /usr/local/bin/docker-compose
- docker-compose -v
效果图

安装gitea
步骤
- 上传docker-compose-gitea.yml到/usr/local/bin目录
# docker-compose-gitea.yml内容示例如下
version: "3"
networks:gitea:external: false
services:server:image: gitea/gitea:1.19container_name: giteaenvironment:- USER_UID=1000- USER_GID=1000restart: alwaysnetworks:- giteavolumes:- /home/local/gitea/data:/data- /home/local/gitea/timezone:/etc/timezone:ro- /home/local/gitea/localtime:/etc/localtime:roports:- "8081:3000"- "8082:22"
- 执行docker-compose命令
- 打开浏览器输入:ip:8081端口(8081是yml配置文件里面指定好的)
- 初始gitea配置
- 创建组织
- 创建仓库
- 上传代码
- 拉取代码
- 提交分支
- 查看更新状态
命令
cd /usr/local/bin
docker-compose -f docker-compose-gitea.yml up -d
效果图
执行docker-compose命令

接下来打开浏览器输入linux本机的ip地址加上8081端口,就可以看到gitea的页面了,然后按照提示进行配置即可。
浏览器登录gitea
例如本机ip地址为http://192.168.xxx.xxx:8081/(xxx为自定义ip地址,本例子隐藏所以用xxx)
浏览器初始gitea配置

如下为样本示例

登录之后,创建组织,创建仓库,上传代码,拉取代码,提交分支,查看更新状态等操作。
创建组织


创建仓库




Drone 安装
步骤

上述新令牌先保存好,只会出现一次,下次就看不到了。然后再进行创建应用。


进入这个页面之后先保持不动,切换到linux操作命令行,执行如下命令:
cd /usr/local/bin
docker-compose -f docker-compose-gitea.yml up -d
然后回到浏览器页面,点击创建应用,然后复制应用地址,回到linux命令行
执行如下命令:
cd /usr/local/bin
将docker-compose-drone.yml从网站上下载出来,移动到/usr/local/bin目录下如图

然后执行如下命令:
vim docker-compose-drone.yml
# docker-compose-drone.yml文件示例内容如下
version: '3'
services:drone-server:restart: alwaysimage: drone/drone:2.13.0container_name: drone-serverports:- "8083:80"volumes:- /home/local/drone/server/drone:/var/lib/drone/- /home/local/drone/server/data:/data/environment:- DRONE_GITEA_SERVER=http://192.168.126.130:8084- DRONE_GITEA_CLIENT_ID=3b972c45-59ab-4e9b-800e-8c436cd37b59- DRONE_GITEA_CLIENT_SECRET=gto_m3omsxcricdv5pngfmvsddks5zczs37l5tyw25zlbpesebca4q5q- DRONE_SERVER_HOST=192.168.126.130:8083- DRONE_SERVER_PROTO=http- DRONE_RPC_SECRET=eebf4781aa0d19a63aaac1ad9706e1ecbf3d8f6e- DRONE_GIT_ALWAYS_AUTH=true- DRONE_GIT_USERNAME=adminwl- DRONE_GIT_PASSWORD=links@123- DRONE_USER_CREATE=username:root,admin:truedrone-runner:restart: alwayscontainer_name: drone-runnerimage: drone/drone-runner-docker:1.2volumes:- /var/run/docker.sock:/var/run/docker.sock:rwenvironment:- DRONE_RPC_PROTO=http- DRONE_RPC_HOST=drone-server- DRONE_RPC_SECRET=eebf4781aa0d19a63aaac1ad9706e1ecbf3d8f6e- DRONE_RUNNER_NAME=drone-runner- DRONE_RUNNER_CAPACITY=2
docker-compose-drone.yml文件内容操作如下图:

docker-compose -f docker-compose-drone.yml up -d

这个地方特别提醒一下:
在我修改了一次docker-compose-drone.yml文件之后,执行docker-compose -f docker-compose-drone.yml up -d命令时,出现如下报错:

下面附上解决方法
sysctl net.ipv4.ip_forward
sudo sysctl net.ipv4.ip_forward=1
vim /etc/sysctl.conf
sysctl.conf中加入net.ipv4.ip_forward=1,这个为上述vim里面的操作
sudo sysctl -p
systemctl restart docker

进行防火墙开放8081 与 8083 端口操作如图
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8083/tcp --permanent
firewall-cmd --reload

访问drone的页面:http://ip:8083
效果图
例如本机ip地址为http://192.168.xxx.xxx:8083/(xxx为自定义ip地址,本例子隐藏所以用xxx)



如图填写注册信息
进去之后效果图如图


实现多用户共享文件如图:









非自动化部署
nginx安装
- 安装nginx配置环境
yum -y install gcc
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
下载nginx安装包
wget http://nginx.org/download/nginx-1.21.2.tar.gz
mkdir nginx #创建nginx解压之后的文件
cp nginx-1.21.2.tar.gz nginx #将压缩包移入nginx文件
tar -xzvf nginx-1.21.2.tar.gz nginx #解压压缩包
cd nginx-1.21.2
输入一下命令进行编译
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
make || make install
cd /usr/local/nginx/sbin

然后运行它

redis安装
- 下载redis的安装包
下载地址:Index of /releases/

可自行选择版本,本例选择图中红框中的版本,下载到/usr/local/software目录下
tar -zxvf redis-7.2.3.tar.gz #解压redismv redis-7.2.3 /usr/local/ #移动到/usr/local目录下


cd /usr/local/redis-7.2.3 #进入到redis-7.2.3的目录
make install #编译安装
ls #查看redis-server是否安装成功

vim redis.conf #修改配置文件
注释掉bind 127.0.0.1

添加如下代码

找到daemonize 将no后面改为yes

将protected-mode 设置成no

- 启动redis
systemctl start redis #启动redis
systemctl enable redis #设置开机自启
systemctl status redis #查看redis状态

firewall-cmd --zone=public --add-port=6379/tcp --permanent #开放6379端口
firewall-cmd --reload #重新加载防火墙

which redis-server #查看redis-server的安装路径
./redis-server #启动redis

jdk安装
-
从官网上下载jdk
下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html -
将安装包移动到/usr/local/software目录下

-
解压安装包
tar -zxvf jdk-8u161-linux-x64.tar.gz
mv jdk-8u161-linux-x64.tar.gz jdk #重命名
效果图如下:

- 配置环境变量
vim /etc/profile
在文件末尾添加如下内容:
export JAVA_HOME=/usr/local/software/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HEMO/lib/tools.jar

java -version

得到如上图则表示jdk安装成功
自动化部署
tomcat
docker pull tomcat #拉取tomcat镜像
cd root
mkdir tomcat || cd tomcat
docker run -id --name=c_tomcat -p 8090:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
#$PWD表示宿主机的当前目录在这里表示/root/tomcat
docker start tomcat
mkdir test
把xyj.zip上传到/root/tomcat/test下面,并解压缩

用浏览器访问ip:8090/test/xyj.html

nginx
docker pull nginx
docker run -d --name nginx01 -p 3344:80 nginx
curl localhost:3344

打开浏览器访问页面 ip:3344


相关文章:
云计算基础
环境准备 配置虚拟机安装docker 前提安装 步骤命令效果图 安装docker-compose 前提安装 步骤效果图 安装gitea 步骤命令效果图 执行docker-compose命令浏览器初始gitea配置浏览器登录gitea创建组织创建仓库 Drone安装 步骤效果图 非自动化部署 nginx安装redis安装jdk安装…...
利用kali linux 进行自动化渗透测试
本方案旨在自动化创建渗透测试全流程 一、架构 1.智能信息收集体系 class IntelligentOSINT:def __init__(self, target):self.target targetself.intelligence_sources [OSINT_Platforms,DeepWeb_Crawlers, SocialMedia_Trackers,ML_Correlation_Engine]def advanced_col…...
【Vue中BUG解决】npm error path git
报错内容如下: 从错误信息可知,这是一个 ENOENT(No Entry,即找不到文件或目录)错误,并且与 git 相关。具体来说,npm 在尝试调用 git 时,无法找到 git 可执行文件,下面为…...
GPT-4o微调SFT及强化学习DPO数据集构建
假设,已经标注的训练数据集df包含了提示词、输入和输出三列。 构建微调SFT的数据集代码如下: data [] for x in df.values:prompt x[1]user_content x[2]assistant_content x[3]data.append({"messages": [{"role": "sys…...
element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题
这个问题通常是因为 el‑dialog 默认会锁定 body 的滚动(通过给 body 添加隐藏滚动条的样式),从而导致页面在打开对话框时跳转到顶部。解决方法是在使用 el‑dialog 时禁用锁定滚动功能。 <el-dialogv-model"dialogVisible":lo…...
MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32
MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32 1. 获取代码:2. 加入你的项目2.1 以 STM32 为例:2.2 以 ESP-IDF 为例: 3. 对接 API3.1 以 STM32 为例: 4. 更多函数说明5. 写入 EEPROM 示例 MT6835 Framework 纯C语言实现,跨平台&…...
vue REF 和 Reactive区别、特点、优势
REF 和 Reactive 是两种不同的编程范式。下面是它们之间的对比以及各自的优势劣势和特点: REF(可变状态编程): 优势: 易于理解和学习:REF 编程模型更贴近传统的命令式编程,因此对于大多数开发…...
Elastic Cloud Serverless 现已在 Microsoft Azure 上提供技术预览版
作者:来自 Elastic Yuvi Gupta Elastic Cloud Serverless 提供了启动和扩展安全性、可观察性和搜索解决方案的最快方法 — 无需管理基础设施。 今天,我们很高兴地宣布 Microsoft Azure 上的 Elastic Cloud Serverless 技术预览版现已在美国东部地区推出。…...
Spring Boot + MyBatis Field ‘xxx‘ doesn‘t have a default value 问题排查与解决
目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行代码的时候,出现某个字段无法添加 ### Error updating database. Cause: java.sql.SQLException: Field e_f_id doesnt have a default value ### The error may exist in cn...
kafka的架构和工作原理
目录 Kafka 架构 Kafka 工作原理 Kafka 数据流 Kafka 核心特性 总结 Kafka 架构 1. 生产者(Producer) 2. 消费者(Consumer) 3. 主题(Topic) 4. 分区(Partition) 5. 副本(Replica) 6. 代理(Broker) 7. ZooKeeper(旧版本)/KRaft(新版本) Kafka 工作…...
游戏引擎学习第100天
仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天,我们开始了反射和环境贴图的工作,成功地根据法线显示了反射效果。然而,我们还没有实现反射向量的计算,导致反射交点的代…...
机器学习:朴素贝叶斯分类器
贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 贝叶斯定理是贝叶斯决策论的基础,描述了如何根据新的证据更新先验概率,贝叶斯定理&…...
打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?
两个月没有使用vscode编写代码,今天使用的时候发现了以上的问题导致我的vscode无法编写程序,接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统,是一个在Windows 10\11上能够运行原生Linux二进制可…...
力扣24题——两两交换链表中节点
#题目 #代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ clas…...
android launcher拖动图标释放错位
由于为了设备流畅把所有动画效果设置为0.5,不设置为0是因为锁屏在开机时会有闪黑屏的现象。在此背景下,测试发现在拖动桌面图标时,在图标动画过程中错位时释放图标,则图标会留在错位的位置,不会自动对齐。 原因就是动…...
window ssh免密码输入
生成本地公钥 打开dos,使用以下命令手动生成一个公钥: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\aero/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same pas…...
2024年博客之星年度评选—主题文章创作评审文章得分公布
博客之星活动地址:https://www.csdn.net/blogstar2024 创作影响力评审入围名单:https://blogdev.blog.csdn.net/article/details/145189549 目录 主题文章创作评审得分排名 主题文章创作说明 主题文章评选说明 创作影响力评审主题文章创作评审目前排名 博…...
vscode插件Remote - SSH使用教程
Remote - SSH 是一款非常实用的 Visual Studio Code (VSCode) 扩展插件,它允许开发者通过SSH连接到远程服务器,并像在本地一样进行代码编辑和调试。这意味着你可以直接在VS Code中打开位于远程机器上的文件夹,并利用本地安装的VS Code功能,如语法高亮、智能感知、Git集成等…...
自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑
如果你的预算是 3万元人民币,希望训练和微调 7B 参数规模的人工智能大模型(如 LLaMA、Mistral 等),你需要一台高性能的深度学习工作站。在这个预算范围内,以下是推荐的配置: 1. 关键硬件配置 (1) GPU (显卡…...
github不翻墙就可以访问
目录 简介资料准备windows平台设置下载运行git设置firefox设置 ubuntu平台设置下载启动服务设置系统代理git设置firefox设置证书 注意事项 简介 由于github访问不稳定,严重影响了国内软件开发,在网上搜索并验证了一些方法.现在整理出来一个可以正常使用的方法, 在windows和Lin…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
