网站报价内容/西安seo外包平台

网站报价内容,西安seo外包平台,用.net做视频网站的案例,网站建设开发程序代码一.介绍: gogs是一个用Go语言开发的自助Git服务,目标是简单、快速搭建Git服务, 支持多种平台,包括Linux、Windows等。它类似于GitHub,但更轻量,适合个人或小团队使用, 在简化git服务搭建流程的…


一.介绍:

gogs是一个用Go语言开发的自助Git服务,目标是简单、快速搭建Git服务,
支持多种平台,包括Linux、Windows等。它类似于GitHub,但更轻量,适合个人或小团队使用,
在简化git服务搭建流程的同时,平衡资料消耗和功能完整性 ,是轻量级私有代码托管的优质方案
gogs的作用
2.1.私有化代码托管:gogs提供与GitHub类似的仓库管理功能,支持本地化部署,适合存放敏感或私有项目代码。
2.2.灵活权限控制:支持仓库、组织、团队三级权限管理,可细化到读写、审查、合并请求等操作;
同时也提供分支功能,防止未经授权的代码提交。
2.3.协作开发支持:内置工单(Issue)、合并请求(Pull Request)、Wiki等功能,满足代码审查和文档协作
需求、支持通过组织管理多仓库,方便团队划分项目模块。
2.4.持续集成/部署:通过Web钩子与Jenkins、Drone等工具集成,实现自动化构建和测试。

二.部署:

在gogs官方有介绍,不建议直接使用root账户运行,这样风险太高了,平时我们发布应用也不建议这样
sudo adduser git

添加用户后需要修改一下/etc/sudoers 在文件以下位置加入
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL  # 这个是系统原有的
git     ALL=(ALL)       ALL
修改/etc/sudoers文件前需要把它改为可读写状态,不然编辑了无法保存,该文件默认是只读。
sudo chmod u+w /etc/sudoers 改为读写
sudo chmod u-w /etc/sudoers 只读
编辑完成后,建议把/etc/sudoers改为只读状态

su git 切换为git用户,我操作的时候发现切换为git用户,默认的home 属于root 组及root用户,
git用户没有操作权限,这个时候我们就需要把home改为git及对应的组
sudo chown git:git -R /home/git/**

安装基础环境
这里需要安装一下git
sudo apt-get install git

tar xvf 解压对应的目录
sudo tar xvf gogs_0.11.86_linux_amd64.tar.gz -C /home/git/

这里建议把文件解压到git用户的home里面,因为gogs里面很多的配置都是放在git用户的home里面,这样可以减少我们修改的成本。
解压完成后,建议创建目录及文件custom/conf/app.ini,custom属于gogs文件的子目录。
touch -c custom/conf/app.ini # 使用该命令即可

官方有解释为什么要创建这样一个目录及配置文件,这个配置文件是让我们修改默认配置而建立的。
因为不建议直接修改原配置文件。具体的配置模板见GitHub app.ini

配置完成后我们可以在gogs目录下执行 ./gogs web,看到以下信息就可以经行安装了,但是建议这样启动,
因为命令行一关闭,gogs服务就停止了,官方已经给出了很多的守护线程执行脚本,在scripts文件夹下

[git@VM_1_2_centos gogs]$ ./gogs web
2019/04/03 17:42:39 [TRACE] Custom path: /home/git/gogs/custom
2019/04/03 17:42:39 [TRACE] Log path: /home/git/gogs/log
2019/04/03 17:42:39 [TRACE] Log Mode: Console (Trace)
2019/04/03 17:42:39 [ INFO] Gogs 0.11.86.0130
2019/04/03 17:42:39 [ INFO] Cache Service Enabled
2019/04/03 17:42:39 [ INFO] Session Service Enabled
2019/04/03 17:42:39 [ INFO] SQLite3 Supported
2019/04/03 17:42:39 [ INFO] Run Mode: Development
2019/04/03 17:42:39 [ INFO] Listen: http://0.0.0.0:8002

设置systemctl启动原因
每次使用 nohup ./gogs web & 进行后台启动比较麻烦,不仅需要进入安装目录,还得敲这么麻烦的命令。
配置使用systemctl方式启动gogs,可以很方便的在任何目录下执行启动。
设置systemctl启动
这里,使用官方的启动脚本gogs.service(这里gogs.service脚本文件在你的gogs安装目录下),
使用以下命令,把启动脚本复制到Linux system目录下
cp /usr/local/gogs/scripts/systemd/gogs.service /usr/lib/systemd/system/
然后就可以很方便的在任何目录下启动和停止Gogs服务了。

复制好启动脚本后,就执行它
sudo systemctl start gogs.service # 启动服务

如果需要开机启动话执行(设置永久启动):
sudo systemctl enable gogs.service

查看服务运行状态
sudo systemctl status gogs.service

启动成功后会看到以下信息
● gogs.service - Gogs
   Loaded: loaded (/etc/systemd/system/gogs.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-04-03 17:49:14 CST; 5s ago
 Main PID: 32650 (gogs)
   CGroup: /system.slice/gogs.service
           └─32650 /home/git/gogs/gogs web

Apr 03 17:49:14 VM_1_2_centos systemd[1]: Started Gogs.
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [TRACE] Custom path: /home/git/gogs/custom
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [TRACE] Log path: /home/git/gogs/log
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [TRACE] Log Mode: Console (Trace)
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [ INFO] Gogs 0.11.86.0130
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [ INFO] Cache Service Enabled
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [ INFO] Session Service Enabled
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [ INFO] SQLite3 Supported
Apr 03 17:49:14 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:14 [ INFO] Run Mode: Development
Apr 03 17:49:15 VM_1_2_centos gogs[32650]: 2019/04/03 17:49:15 [ INFO] Listen: http://0.0.0.0:8002

/usr/lib/systemd/system/gogs.service文件内容:
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target


启动后通过客户端网页访问:192.168.127.130:3000  即可登录

首次配置需要匹配IP、账户用git,数据库选择sqlite3,数据库使用绝对路径/home/git/gogs/data,其他保持默认设置即可

三.特殊需求及实现方法

特殊需求:

Gogs支持通过组织(organization)和团队(team)来管理项目,并且可以为每个团队分配不同的仓库权限。
然而,当前的需求是将两个团队的文件分别存储到两个不同的物理盘中,以实现更高效的资源管理和隔离。
具体需求,项目分组:

将所有项目分为两个组织(例如:组织A和组织B),每个组织下可以包含多个团队。
每个团队可以拥有自己的管理员,负责管理团队成员及权限分配。
文件存储要求:
组织A的文件存储在第一个物理盘(例如:/data1)中。
组织B的文件存储在第二个物理盘(例如:/data2)中。
权限与管理:
确保每个团队的管理员能够独立管理其团队成员和仓库权限。
需要支持对不同存储路径的配置,以便将文件正确地存储到指定的物理盘中。


实现方法:

绑定挂载(Bind Mount)的详细配置说明
绑定挂载(Bind Mount)是一种将同一物理存储目录挂载到多个位置的技术,通过此方法可以实现目录的透明映射,
使得两个路径访问相同的数据。在Gogs的场景中,可以通过绑定挂载将不同组织的仓库根目录映射到不同的物理盘,
从而实现存储隔离。以下是具体步骤:

1. 准备工作
1.1 挂载物理盘
确保两个物理盘已正确挂载到目标路径(例如 /data1 和 /data2)。
假设物理盘1对应设备 /dev/sdb1,物理盘2对应设备 /dev/sdc1:

# 挂载物理盘1到/data1
sudo mkdir -p /data1
sudo mount /dev/sdb1 /data1

# 挂载物理盘2到/data2
sudo mkdir -p /data2
sudo mount /dev/sdc1 /data2
1.2 创建组织目录
在物理盘上为每个组织创建专用目录:

# 在/data1中为组织A创建目录
sudo mkdir -p /data1/orgA
# 在/data2中为组织B创建目录
sudo mkdir -p /data2/orgB
1.3 设置目录权限
确保Gogs运行用户(通常为 git)对目录有读写权限:

sudo chown -R git:git /data1/orgA /data2/orgB
sudo chmod -R 750 /data1/orgA /data2/orgB  # 仅允许git用户及所属组访问
2. 配置绑定挂载
2.1 挂载到Gogs仓库目录
假设Gogs的默认仓库根目录为 /home/git/gogs-repositories,需将物理盘目录绑定到该路径下的子目录:

# 绑定/data1/orgA到Gogs仓库目录下的orgA
sudo mount --bind /data1/orgA /home/git/gogs-repositories/orgA

# 绑定/data2/orgB到Gogs仓库目录下的orgB
sudo mount --bind /data2/orgB /home/git/gogs-repositories/orgB
2.2 验证挂载
使用 mount 或 df -h 检查挂载状态:

# 查看绑定挂载点
mount | grep -E 'orgA|orgB'

# 输出示例:
# /dev/sdb1 on /home/git/gogs-repositories/orgA type ext4 (rw,relatime)
# /dev/sdc1 on /home/git/gogs-repositories/orgB type ext4 (rw,relatime)
3. 持久化挂载配置
绑定挂载默认在系统重启后失效,需将配置写入 /etc/fstab 实现开机自动挂载:

# 编辑/etc/fstab文件
sudo vim /etc/fstab

# 添加以下两行:
/data1/orgA    /home/git/gogs-repositories/orgA    none    bind    0    0
/data2/orgB    /home/git/gogs-repositories/orgB    none    bind    0    0
验证持久化配置
# 重新挂载所有fstab条目
sudo mount -a

# 再次检查挂载点
mount | grep -E 'orgA|orgB'
4. Gogs组织与仓库配置
4.1 创建组织
登录Gogs,进入 「用户设置」→「组织管理」。

创建组织 orgA 和 orgB。

4.2 创建仓库
在组织 orgA 下创建仓库时,Gogs会自动将其存储在 /home/git/gogs-repositories/orgA,实际数据位于 /data1/orgA。

同理,组织 orgB 的仓库数据实际位于 /data2/orgB。


四.其他

gogs关闭注册按钮的方法
将app.ini中得以下参数的false改成 true,重启,再次登录页面,注册按钮已隐藏
DISABLE_REGISTRATION = false

添加用户错误时的相关操作:
添加错了用户,删除操作:
# 强制终止所有属于 git 的进程
sudo pkill -u git
# 删除用户及其主目录、邮件池
sudo userdel -r git
# 如果仍有残留,强制删除(慎用)
sudo userdel -f -r git

使用命令停止gogs服务
systemctl stop gogs.service

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

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

相关文章

Java-servlet(九)前端会话,会话管理与Cookie和HttpSession全解析

Java-servlet(九)前端会话,会话管理与Cookie和HttpSession全解析 前言一、什么是会话二、会话管理1. 隐藏的表单域2. 网址重写3. 使用 Cookie3.1 Cookie 的工作流程3.2 Java 中的方法,Cookie 类 三、Cookie 的实现1. 创建 Cookie2…

手写数据库MYDB(一):项目启动效果展示和环境配置问题说明

1.项目概况 这个项目实际上就是一个轮子项目,现在我看到的这个市面上面比较火的就是这个首先RPC,好多的机构都在搞这个,还有这个消息队列之类的,但是这个是基于MYSQL的,我们知道这个MYSQL在八股盛宴里面是重点考察对象…

基于Spring Boot的电动车智能充电服务平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【AI学习】人工神经网络

1,人工神经网络(Artificial Neural Networks,ANNs,连接模型,Connection Model) 模仿动物神经网络行为特征(突触联接的结构),进行分布式并行信息处理的算法数学模型。依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 2,前馈神…

场馆预约小程序的设计与实现

摘 要 时代在进步,人们对日常生活质量的要求不再受限于衣食住行。现代人不仅想要一个健康的身体,还想拥有一身宛如黄金比例的身材。但是人们平常除了上下班和上下学的时间,其余空余时间寥寥无几,所以我们需要用体育场馆预约来节省…

笔记:纯真IP库

最近需要使用到ip解析成对应的地域,查找了一些资料,发现纯真ip库,这个比较好用,而且社区版可以获得免费授权。 纯真ip库官网地址:https://www.cz88.net/ python版本git地址:https://github.com/tagphi/cz…

骨密度以及骨密度测量,测量方案,意义;提高;实现方案

骨密度及骨密度测量 骨密度(Bone Mineral Density, BMD) 是指骨骼单位体积或单位面积内矿物质(主要是钙和磷)的含量,是评估骨骼强度的重要指标。骨密度降低可能导致骨质疏松,增加骨折风险。 简单分析效果&…

知识就是力量——物联网应用技术

基础知识篇 一、常用电子元器件1——USB Type C 接口引脚详解特点接口定义作用主从设备关于6P引脚的简介 2——常用通信芯片CH343P概述特点引脚定义 CH340概述特点封装 3——蜂鸣器概述类型驱动电路原文链接 二、常用封装介绍贴片电阻电容封装介绍封装尺寸与功率关系&#xff1…

【deepseek 学c++】weakptr引用场景

std::weak_ptr 是 C 中与 std::shared_ptr 配合使用的智能指针,它本身不拥有资源的所有权,仅观察资源的状态,主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值:![ 为…

新手SEO优化实战快速入门

内容概要 对于SEO新手而言,系统化掌握基础逻辑与实操路径是快速入门的关键。本指南以站内优化为切入点,从网站结构、URL设计到内链布局,逐层拆解搜索引擎友好的技术框架;同时聚焦关键词挖掘与内容策略,结合工具使用与…

【操作系统】(四)体系结构

(一)大内核与微内核 把橘色部分划分到内核中的操作系统属于大内核,不把橘色划到内核中的操作系统属于微内核 大内核与微内核的具体区别: (二)计算机的层次结构 (三)操作系统内核非内…

Wi-SUN技术,强势赋能智慧城市构筑海量IoT网络节点

在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节…

Linux系统加固笔记

检查口令为空的账户 判断依据:存在则不符合 特殊的shell a./bin/false:将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示信息b./sbib/nologin:nologin会礼貌的向用户发送一条消息,并且拒绝用户登录…

23种设计模式-责任链(Chain of Responsibility)设计模式

责任链设计模式 🚩什么是责任链设计模式?🚩责任链设计模式的特点🚩责任链设计模式的结构🚩责任链设计模式的优缺点🚩责任链设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

【宇宙回响】从Canvas到MySQL:飞机大战的全栈交响曲【附演示视频与源码】

🌟 这是星际大战系列的第三篇,感谢一路以来支持和关注这个项目的每一位朋友! 💡 文章力求严谨,但难免有疏漏之处,欢迎各位朋友指出,让我们一起在交流中进步。 🎁 项目代码、文档和相关资源都可以免费获取,希望能帮助到更多对游戏开发感兴趣的朋友。 💌 如果您有任…

MyBatis-Plus(Ⅵ)插件

目录 一、分页插件 1.添加配置类 2.在测试类测试 结果 二、xml实现分页的自定义 1.UserMapper中定义接口方法 2.创建UserMapper.xml文件 3.在测试类测试 结果 三、乐观锁 1.场景 2.乐观锁与悲观锁 3.模拟修改冲突 数据库中添加商品表 添加数据 添加实体类 添加map…

火山引擎云上实战: DeepSeek R1 大模型(全尺寸)

本文将介绍两种在火山引擎云上部署 DeepSeek-R1 全尺寸模型服务的方案,涵盖大模型推理服务的 Terraform 一键部署、容器化部署、资源弹性伸缩和模型可观测。 来源 | 火山引擎云基础 在 AI 大模型日新月异的当下,企业在使用大模型时往往面临着数据隐私保…

工作流引擎Flowable介绍及SpringBoot整合使用实例

Flowable简介 Flowable 是一个轻量级的业务流程管理(BPM)和工作流引擎,基于 Activiti 项目发展而来,专注于提供高性能、可扩展的工作流解决方案。它主要用于企业级应用中的流程自动化、任务管理和审批流等场景。 Flowable 的核心…

【uni-app】引用公共组件

目录 一、建立公共组件 1.1新建vue文件 1.2编写公共文件代码 1.3使用 注意事项 一、建立公共组件 1.1新建vue文件 在公共组件文件目录下新建所需要的功能文件 1.2编写公共文件代码 按需求写对应功能的代码 1.3使用 在需要使用的文件下引用公共组件 注意事项 想要使用s…

STL中vector模拟实现

vector各个接口函数 //构造函数 vector() vector(size_t n,const T& valT()) vector(int n,const T& val T()) //拷贝构造函数 vector(const vector<T>& v) //迭代器版本的 vector(inputiterator first, inputiterator end) //赋值运算符重载 vector<T&…