Loading... # 部署 Gitea 代码托管平台(Ubuntu) **GitHub**、**Gitee(码云)**、**GitLab**、**Gitea**区别: ![][1] ## 一、数据库准备 ### 1.1、下载数据库 更新软件包: ```bash sudo apt update && sudo apt upgrade -y ``` 安装 MySQL 服务器: ```bash sudo apt install -y mysql-server ``` 启动 MySQL 并设置开机自启: ```bash sudo systemctl start mysql sudo systemctl enable mysql ``` ### 1.2、设置 MySQL 登录 MySQL: ```bash mysql -u root -p ``` 设置 root 数据库密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678'; FLUSH PRIVILEGES; ``` ### 1.3、创建数据库 创建 gitea 数据库用户,==% 为主机全ip访问== ```bash CREATE USER 'gitea'@'127.0.0.1' IDENTIFIED BY 'gitea'; FLUSH PRIVILEGES; ``` 创建 giteadb 数据库 ```sql CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; ``` 将 giteadb 数据库授权给 gitea 用户: ```sql GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'127.0.0.1'; FLUSH PRIVILEGES; ``` 连接远程数据库,`本地数据库 直接省略 -h`: ```sql mysql -u gitea -h 127.0.0.1 -p giteadb ``` 添加远程访问权限,修改 `bind-address = 0.0.0.0`、`mysqlx-bind-address = 0.0.0.0`后重启: ```bash vim /etc/mysql/mysql.conf.d/mysqld.cnf ``` ## 二、创建 Git 系统用户 ![][2] ```sql # On Ubuntu/Debian: adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git # On Fedora/RHEL/CentOS: groupadd --system git adduser \ --system \ --shell /bin/bash \ --comment 'Git Version Control' \ --gid git \ --home-dir /home/git \ --create-home \ git ``` 删除用户目录也删除: ```sql sudo deluser --remove-home git ``` ## 三、创建工作路径 全部执行: ```bash mkdir -p /var/lib/gitea/{custom,data,log} &&\ chown -R git:git /var/lib/gitea/ &&\ chmod -R 750 /var/lib/gitea/ &&\ mkdir /etc/gitea &&\ chown root:git /etc/gitea &&\ chmod 770 /etc/gitea &&\ touch /etc/gitea/app.ini ``` 临时开放权限 ```bash chmod 750 /etc/gitea &&\ chmod 750 /etc/gitea/app.ini &&\ sudo chown git:git /etc/gitea/app.ini ``` 待 Web 设置好了之后再设置回只读 ```bash chmod 640 /etc/gitea/app.ini ``` ## 四、环境变量 编辑: ```bash vim /etc/profile.d/my_cnf.sh ``` 环境变量添加: ```bash export GITEA_WORK_DIR=/var/lib/gitea/ ``` 刷新环境变量: ```bash source /etc/profile ``` 验证: ```bash echo $GITEA_WORK_DIR ``` ## 五、Gitea下载 ### Intel/AMD 平台: ```bash wget -O gitea https://dl.gitea.com/gitea/1.23.3/gitea-1.23.3-linux-amd64 chmod +x gitea ``` ### Apple Silicon 架构: ```bash wget -O gitea http://dl.gitea.com/gitea/1.23.3/gitea-1.23.3-linux-arm64 chmod +x gitea ``` ### 验证 GPG 签名 略,详细看官方文档:https://docs.gitea.com/zh-cn/installation/install-from-binary ### 将二进制文件复制到对应位置 ```bash cp gitea /usr/local/bin/gitea ``` ## 五、测试启动项目 ```bash GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini ``` ## 六、配置 service服务 ### systemd 创建 .service 文件: ```bash sudo vim /etc/systemd/system/gitea.service ``` 添加,参考 [Github-gitea.service](https://github.com/go-gitea/gitea/blob/release/v1.21/contrib/systemd/gitea.service): ```bash [Unit] Description=Gitea(一个带有茶的 Git) After=network.target ### # 别忘了添加数据库服务的依赖 ### # #Wants=mysql.service #After=mysql.service # #Wants=mariadb.service #After=mariadb.service # #Wants=postgresql.service #After=postgresql.service # #Wants=memcached.service #After=memcached.service # #Wants=redis.service #After=redis.service # ### # 如果使用套接字激活主 HTTP/S 服务 ### # #After=gitea.main.socket #Requires=gitea.main.socket # ### # (你也可以为 Gitea 提供一个 http 回退和/或 ssh 套接字) # # 一个例子 /etc/systemd/system/gitea.main.socket ### ## ## [Unit] ## Description=Gitea Web 套接字 ## PartOf=gitea.service ## ## [Socket] ## Service=gitea.service ## ListenStream=<some_port> ## NoDelay=true ## ## [Install] ## WantedBy=sockets.target ## ### [Service] # 如果你的仓库包含大量文件并且遇到 HTTP 500 错误,可以取消注释下面这一行 # LimitNOFILE=524288:524288 RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ # 如果使用 Unix 套接字:告诉 systemd 创建 /run/gitea 文件夹,其中将包含 gitea.sock 文件 # (手动创建 /run/gitea 不起作用,因为它不会在重启后持续存在) #RuntimeDirectory=gitea ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea # 如果你将 Git 安装到不同于默认路径的目录前缀,请取消注释下面的行并将该路径添加到 PATH # 如果你想启用 Git LFS 支持,不要忘记将 git-lfs 二进制文件也放在 PATH 中 #Environment=PATH=/path/to/git/bin:/bin:/sbin:/usr/bin:/usr/sbin # 如果你想将 Gitea 绑定到 1024 以下的端口,请取消注释下面的两行,或者使用套接字激活来传递 Gitea 的端口 ### #CapabilityBoundingSet=CAP_NET_BIND_SERVICE #AmbientCapabilities=CAP_NET_BIND_SERVICE ### # 在某些情况下,使用 CapabilityBoundingSet 和 AmbientCapabilities 选项时,你可能希望 # 将以下值设置为 false,以允许应用权限到 gitea 进程。如果设置为 true,它会沙盒化 gitea 服务,阻止任何进程在主机用户命名空间中以特权身份运行。 ### #PrivateUsers=false ### [Install] WantedBy=multi-user.target ``` 重新加载 systemd 配置: ```bash sudo systemctl daemon-reload ``` 添加开机自启动: ```bash sudo systemctl enable gitea ``` ### 服务命令 ```bash systemctl stop gitea # 停止 systemctl start gitea # 启动 systemctl restart gitea # 重启 ``` ## 关闭注册选项 `DISABLE_REGISTRATION`: **true**: 关闭用户注册。 ```bash vim /etc/gitea/app.ini ``` ## git 上传屏蔽 文件名字 ```bash .gitignore ``` 配置 ```bash # Logs # 忽略日志文件 logs *.log npm-debug.log* # npm 调试日志文件 yarn-debug.log* # yarn 调试日志文件 yarn-error.log* # yarn 错误日志文件 pnpm-debug.log* # pnpm 调试日志文件 lerna-debug.log* # lerna 调试日志文件 # Node Modules # 忽略 node_modules 文件夹,依赖可以通过 npm 或 yarn 重新安装 node_modules # macOS 系统文件 # 忽略 macOS 系统生成的 .DS_Store 文件 .DS_Store # 构建输出 # 忽略项目的构建输出文件夹 dist # 通常的构建输出目录 dist-ssr # 服务端渲染的构建输出目录 coverage # 测试覆盖率报告目录 *.local # 本地环境相关的临时文件 # Cypress 文件 # 忽略 Cypress 生成的视频和截图文件 /cypress/videos/ # 测试时录制的视频 /cypress/screenshots/ # 测试失败时的截图 # 编辑器相关配置文件 # 忽略常见编辑器和 IDE 的配置文件 .vscode/* # VSCode 配置文件夹 !.vscode/extensions.json # 保留 VSCode 的扩展插件推荐配置 .idea # WebStorm/IntelliJ 的配置文件夹 *.suo # Visual Studio 的解决方案用户选项文件 *.ntvs* # Node.js Tools for Visual Studio 的配置文件 *.njsproj # Node.js 项目文件(Visual Studio) *.sln # Visual Studio 的解决方案文件 *.sw? # Vim 的交换文件 # TypeScript # 忽略 TypeScript 构建过程生成的缓存文件 *.tsbuildinfo ``` ## FAQ 开放端口(如果有防火墙) ```bash iptables -I INPUT -p tcp --dport 3000 -j ACCEPT ``` ### 升级: 升级到最新版本 您可以通过停止程序,替换 `/usr/local/bin/gitea` 并重启来更新到新版本。直接替换可执行程序时不要更改或使用新的文件名称,以避免数据出错。更新前记得备份! [1]: https://a-hxin.cn/usr/uploads/2025/02/1426711602.png [2]: https://a-hxin.cn/usr/uploads/2025/02/30481003.png 最后修改:2025 年 02 月 19 日 © 允许规范转载 打赏 赞赏作者 赞 1 咱们谁跟谁,用不着~