整理文档发现好多文件在多个终端设备上都有存档,整理起来费劲。希望所有文件可以多设备同步,频繁编辑的文件最好还兼具版本管理的功能。从有限的个人经验里想到先搭建个GitLab在个人局域网里,把频繁编辑文件的同步和管理解决掉。本文章在虚拟机的Unbuntu系统上装的Gitlab,先体验下,以后可打算装在实体机器上。
安装过程需网络,配置和同步过程需切换内网。每次同步都切换内网,虽麻烦但暂时不改。
涉及到vmare/ubuntu/gitlab/git/pkg/ssh/apt/vim/nano等软件或系统使用。
本文章步骤不详细主要列大纲,参考的文章都有链接,除unbuntu安装没参考其它文章。
1. win11 安装虚拟机
- vmware17.0资源。
- vmware17.0 安装步骤只参考其中的虚拟机安装部分即可。
2. 虚拟机安装Unbuntu
- ubuntu下载镜像源,官网下载需要login。
- 考虑自己的内存和硬盘空间选择了一个无GUI的server版本ubuntu-24.04.1-live-server-amd64。
2.1 新建虚拟机
步骤略(本次用的配置为2核4G内存30G内存),在新建虚拟机向导中,指定磁盘容量步骤建议将虚拟机磁盘存储为单个文件(以便跟后续移动虚拟机时,给新虚拟机添加硬盘),大小根据需要而定 。
2.2 Unbuntu系统安装步骤
参考:虚拟机安装Ubuntu。
配置虚拟机的cd/dvd路径为下载的ubuntu iso的路径.新建完成后直接开机即可,安装过程需要连网。
虚拟机开机,基本无脑下一步,记录自己做过的几个选择如下:
- 安装还是测试,选择安装。
- 已经下载的当前版本,是否update,选否。
- 键盘布局选择,使用的默认English-US。
- choose the base of installation.Unbuntu Server/--minimized/additional option search for the third-party drivers,选择第一个。
- network configuration 选的默认。
- proxy 没有填写。
- ubuntu mirror address 没有更改。
- 配置a guided storage layout,or custom(自定义)one,默认即可。
- 配置用户信息时myname/servername/username/pwd,分别是用户名字/机器名字/登陆系统用帐户和密码。
- 不升级ubuntu pro。
- 安装opensshserver。
- 网络适配器设置桥接模式/NAT模式/仅主机模式/自定义/LAN区段,使用的默认NAT模式。
3. Unbuntu安装Gitlab
参考:如何在Ubuntu 18.04上安装和配置GitLab
2023最新Ubuntu安装部署Gitlab详细教程(每个步骤均配图)
3.1 安装依赖项
sudo apt update
sudo apt-get upgrade
sudo apt-get install curl openssh-sever ca-certificates postfix
运行以上命令,在postfix安装时弹出的配置选项我选择的Internet Site 确定,下一页再确定就可以.
3.2 安装gitlab
参考linux中国上的文章如何在Ubuntu安装Gitlab。
- 添加 GitLab 仓库,运行以下 curl 命令。它将自动检测你的 Ubuntu 版本并相应地设置仓库。
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
2. 在ubuntu上自动安装和配置gitlab-ce
sudo apt install gitlab-ce。
3. 终端显示gitlab狐狸图形表示安装完成.
4. Gitlab服务器设置 (切换内网,虚拟机适配器改为桥接模式)
4.1 防火墙设置
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
sudo ufw status
备注:允许http(80端口)和https(443)端口,/etc/services文件中提供了HTTP和HTTPS的端口映射协议,因此我们可以按名称允许该流量。sudo ufw status查看当前防火墙状态。
4.2 管理员用户名密码设置.
- 默认的管理员用户名root,密码存放在/etc/gitlab/initial_root_password文档中,需要修改。
- 打开控制台 sudo gitlab-rails console -e production
- 查询用户账号信息并赋值给u u=User.where(id:1).first
- 设置root的密码 u.password = '
' - 确认密码 u.password_confirmation = '
' - 保存信息(勿丢感叹号) u.save!
- 退出 exit
- /etc/gitlab/gitlab.rb中external_url设置gitlab网页ip和端口号,修改成了ubuntu的IP地址。
"sudo vim /etc/gitlab/gitlab.rb"
4.3 服务器的签名证书(本步骤未验证,因为在内网中)
为提高安全性,可使用自签名证书或 Let's Encrypt 为 GitLab 实例配置 HTTPS。Let's Encrypt 只适用于互联网上有 A 记录的公有域。
- sudo nano /etc/gitlab/gitlab.rb,进入规则文件将external_url中的http改为https.
- 从Let's Encrypt请求和启用免费TLS / SSL证书的功能.取消注释并填写此内容letsencrypt['contact_emails']
- 使用自签名证书来确保 GitLab 的安全。
4.4 常用服务器命令
- 启动/停止/重启/重配gitlab服务 sudo gitlab-ctl start/stop/restart/reconfigure
- 设置开机自启动 sudo systemctl enable gitlab-runsvdir.service
5. 登陆服务器及新建账号
- 网页登陆gitlab,地址栏输入unbuntu虚拟机的地址,管理员用户名密码用4.2里面设置的即可。
- 新建账号在登陆网页选择注册即可,注册完需要再以管理员账户登陆approve一下.
6. 服务器建仓库,win11建仓库并连接到服务器仓库
- 用注册的账号登陆gitlab,新建test仓库,没有特殊需要使用默认选项.
- win11上在需要上传的项目目录下,执行初始化仓库,暂存所有文档,提交(终端运行以下命令git init/git add ./git commit -m commitmessage).
- 配置密钥使得本地主机能和gitlab服务器能建立ssh链接
- win11主机在终端运行 ssh-keygen -t rsa [-C "it@szhuarong.com"],方括号内未验证.
终端回应询问创建位置,和两次输入密码,本次使用的都是回车默认或空.本地用户目录的本账号目录下将会生成.ssh/id_rsa.pub(需要拷贝到GitLab).
- win11主机在终端运行 ssh-keygen -t rsa [-C "it@szhuarong.com"],方括号内未验证.
- 登陆新建的gitlab账号例如Example,单击个人资料设置在左侧列表中选择SSH密钥,添加新密钥,将id_rsa.pub中的内容拷贝到网页输入框内保存,取消时间框设置将密钥将永久有效.
- 测试链接ssh -vT git@172.23.23.23,IP更换为自己的gitlab服务器IP即可.
- 本地项目中添加远程项目的链接地址
git remote add origin git@172.23.23.23:Example/test.git(假设你已经初始化好本地仓库并在Example账号下新建好工程test).
git remote -v,查看本地设置的远程链接地址. - 将本地分支推送到远程.
git push origin <branchname> branchname 要推送的分支名称.
7. 手机下载安装termux并连接到服务器仓库
网上搜索了许多推荐软件sgit mgit github/gitee网站推荐,最后决定用termux安装git,这样不用担心git客户端不升级,而且termux可以扩展更多应用。
参考 手机软件推荐。安卓手机上的Git服务器
7.1 手机安装termux
termux github仓库。termux wiki。
下载安装termux,安装apk.下载的版本为termux-app_v0.118.1+github-debug_universal.apk。
7.2 termux 安装Git
在termux中安装git及相关软件.手机termux终端输入pkg install git openssh vim termux-auth.(并没有设置termux镜像,好像安装命令后自动测试了可用镜像源).
7.3 手机从Gitlab同步文档
- termux生成密钥拷贝到对应gitlab网页.termux终端输入 ssh-keygen -t rsa生成密钥,像步骤6里那样拷贝到Gitlab服务器即可。
- termux访问手机存储授权,termux终端输入termux-setup-storage.termux软件的存放路径在手机不可见,用pwd命令即使看到termux的路径也在手机中找不到.运行这条命令会将DCIM downloads music等文件夹挂在termux的当前home路径下。通过这步可以在手机可见的文件夹里同步文件。
- termux中cd /storage/download,然后git clone+仓库ssh地址即可。
- 修改文件后用git push 命令推送到服务器。
注意:
- 手机操作空白md文件后保存的不是UTF8格式,手机上装的软件目前还没找到能够另存为utf8的软件,暂时用mt管理器编辑文件。
- git仓库的分支管理;git fetch/merge/pull,git status/git show等常用命令熟悉。
- 在3.2.2中自动安装gitlab的时候不要设置EXTERNAL_URL(sudo EXTERNAL_URL="http://gitlab.linuxtechi.net" apt install gitlab-ce),否则在仓库生成的地址会@EXTERNAL_URL,然而不设置,默认是啥未知,只是手动把http://gitlab.linuxtechi.net改成了机器的IP地址。