前言
在公司或个人里,会有需要部署属于自己 git 仓库,网上的总归于在他人的服务器上,市面上也有很多种仓库选择,本次我使用的是 gitea,系统是 Ubuntu。
安装
- 本次我默认大家都服务器上都有安装了 git,mysql
- 大致介绍下 mysql 需要的东西,需要创建一个数据库,网页配置 gitea 时需要,
为了数据库的安全着想,建议在 root 用户下创建数据库,然后创建一个用户,并赋予该用户可操作的数据库\表。
- gitea官网 gitea.io/zh-cn/ 上有很多安装方式,我选择使用二进制方式安装(主要懒得再上传到服务器了)
wget -O gitea https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64
chmod +x gitea
- 创建用户(推荐使用名称
git)
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
- 创建工作路径
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
注意: 为了让 Web 安装程序可以写入配置文件,我们临时为
/etc/gitea路径授予了组外用户git写入权限。建议在安装结束后将配置文件的权限设置为只读。此时的
app.ini并没有创建,需要选创建。
chmod 750 /etc/gitea
mkdir /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini
- 配置 Gitea 工作路径
export GITEA_WORK_DIR=/var/lib/gitea/
- 复制二进制文件到全局位置
cp gitea /usr/local/bin/gitea
启动
本次介绍两种启动方式
- 命令行
- Nginx 反向代理
通过命令行终端运行
- systemctl方式运行(推荐)
- 命令行运行
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
通过 Nginx 反向代理运行
安装 Nginx
Nginx 安装方法也有很多种,具体参考官网:nginx.org/en/download…
Debin/Ubuntu 上安装
# 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包:
apt-get update
apt install -y curl gnupg2 ca-certificates lsb-release \
debian-archive-keyring
# 下载并保存 NGINX 签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# 使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/${OS} ${RELEASE} nginx" \
| tee /etc/apt/sources.list.d/nginx.list
# 再次更新软件包信息,然后安装 NGINX
apt-get update
apt-get install -y nginx
nginx
Centos 上安装
# 创建一个名为 /etc/yum.repos.d/nginx.repo 的文件,其中包含以下内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
# 修改文件,将 URL 中间的 OS 替换为 rhel 或 centos,具体取决于您的发行版本。分别
# 将版本 7.x 或 8.x 的 OSRELEASE 替换为 7 或 8。然后运行以下命令:
yum -y install nginx
systemctl enable nginx
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
Nginx 目录介绍与基本使用
/etc/nginx/目录是 NGINX 服务器的默认配置根,您可以从中找到指示 NGINX 如 何运行的配置文件。
/etc/nginx/nginx.conf文件是 NGINX 服务使用的默认配置入口点。此配置文件能够 为 worker 进程、调优、日志记录、动态模块的加载以及对其他 NGINX 配置文件 的引用设置全局设置。在默认配置中, /etc/nginx/nginx.conf 文件包括顶层 http 代 码块,也就是上下文,它提供了下述目录中的所有配置文件。
/etc/nginx/conf.d/目录包含默认的 HTTP 服务器配置文件,其中以 .conf 结尾的 文件都包含在 /etc/nginx/nginx.conf 文件的顶层 http 代码块中。最佳实践是利用 include 语句并以这种方式组织配置,从而保持配置文件的简洁。在某些软件包仓 库中,此文件夹被命名为 sites-enabled,配置文件链接到 site-available 文件夹; 此惯例已不再使用。
/var/log/nginx/目录是 NGINX 的默认日志位置,您可以从中找到一个 access.log 文件和 error.log 文件。访问日志包含 NGINX 服务的每条请求的条目。如果启用了 debug 模块,则错误日志文件包含错误事件和调试信息。
# 查看 Nginx 版本
nginx -v
# 启动 Nginx,任选一个
start nginx
systemctl start nginx
# 停止 Nginx
nginx -s top
systemctl stop nginx
# 重载配置文件
ngins -s reload
配置 Nginx
server {
listen 80; # 这里是访问您外网所监听的端口,可修改
server_name git.example.com; # 这个是随意起,但尽量不与其他配置文件重复
location / {
proxy_pass http://localhost:3000; # 代理到 gitea 的端口地址
# 下面是配置请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置完成后重新加载配置文件
nginx -s reload
防火墙设置
# Ubuntu
# 启动防火墙
ufw enable
# 查看开放的端口
ufw status numbered
# 开放端口
ufw allow 80
# 重载防火墙
ufw reload
# 服务器通用方式
# 开启防火墙
systemctl start firewalld
# 开放端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看端口号
netstat -ntlp # 查看当前所有tcp端口·
netstat -ntulp |grep 1935 # 查看所有1935端口使用情况
启动
这时候就可以使用浏览器去访问了,进行图形界面配置后即可使用 gitea。
如果还访问不了,那么请检查你购买的服务器商家那里是否开放端口。具体开放不再阐述介绍。