当前位置: 代码迷 >> 综合 >> debian 9 安装 gogs+supervisor+nginx反代
  详细解决方案

debian 9 安装 gogs+supervisor+nginx反代

热度:23   发布时间:2023-12-08 02:57:31.0

debian 9 安装 gogs+supervisor+nginx反代

前言


分了一台阿里云, 所以在上面跑了debian9, 换了源为163的debian9源(aliyun有点问题), 打算跑个git server, 选了gogs最新版, 使用源码编译安装, 现在记下流水以便后续使用

安装go


全部在root下执行

#wget https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
#tar -C /usr/local -xzf go1.12.4.linux-amd64.tar.gz

编辑 ~/.basrhc (我用的zsh, 一样的)

export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPATH=/home/go
export GOALL=$GOROOT:$GBIN:$GOPATH:$GOPATH/bin
export PATH=.:$PATH:$GOALL

保存退出后

source ~/.bashrc

执行go 输出go的配置

安装supervisor


aliyun仓库的supervisor 有hash mismatch 问题, 所以我重新用了163的debian strech 源

wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list
sed 's/jessie'strech/g' /etc/apt/sources.list
apt-get clean
rm -rf /var/lib/apt/lists/
apt-get update && apt-get upgrade -y
apt-get install supervisor
/etc/init.d/supervisor start

安装nginx, mysql


自行搜索

安装配置gogs


我采用编译安装. 服务器上已经配置了nginx和mysql,
mysql端口274400

配置gogs DB

mysql -h127.0.0.1 -uroot -p -P27440
create database if not exists gogs character set utf8 collate utf8_general_ci;

安装gogs

go get -d github.com/gogits/gogs
cd $GOPATH/src/github.com/gogits/gogs
go build

注意这里要保证内存可用. 我这个aliyun是1G的ram, 跑了mysql后只有500M不到, 所以停掉mysql先.

mkdir -p /var/log/gogs

先测试下gogs 直接命令跑

gogs web

在这里插入图片描述
启动没有问题, 现在用supervisor来启动, 在/etc/supervisor/conf.d/ 下增加一个gogs,
注意一定要配environment, 不然会报错gogs: ERROR (spawn error) , 因为supervisor 不会读取/etc/profile加载的数据.

[program:gogs]
user=root
environment=HOME="/root",USER="root"
command=/home/go/src/github.com/gogs/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB

保存后加载然后启动

supervisorctl update

nginx反代, 反代3000端口

upstream gogs {server 127.0.0.1:3000;
}server {listen 80;server_name git.xxx.com git.xxx1.org git.xxx2.com;charset utf-8;location / {proxy_pass   http://gogs;proxy_redirect     off;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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_max_temp_file_size 0;proxy_connect_timeout 90;proxy_send_timeout 90;proxy_read_timeout 90;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;}access_log /var/log/nginx/gogs.access.log access;
}

保存后重新reload 下nginx, 这里要配下域名, 我用的子域名 git.xxx.org 来指向gogs服务

然后浏览器输入git.xxx.org 就会跳到install 页面, 注意, 页面有一个选项, 是否使用内建的SSH-server, 不要勾, 我的服务器已经有SSH server了. 端口是27439. 所以要改下端口.
Gogs 在install的时候, 会默认把conf/app.ini 的配置, 复制一份到custom/conf/app.ini, 并且在install的时候会链接数据库.
HTTP_PORT 要填写原始的3000端口, 而不是反代的80.
完整的安装后的app.ini 如下

APP_NAME = Gogs
RUN_USER = root
RUN_MODE = prod[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:27430
NAME     = gogs
USER     = root
PASSWD   = root
SSL_MODE = disable
PATH     = data/gogs.db[repository]
ROOT = /home/gogs_repo[server]
DOMAIN           = git.xxx.org
HTTP_PORT        = 3000
ROOT_URL         = http://git.xxx.org/
DISABLE_SSH      = false
SSH_PORT         = 27429
START_SSH_SERVER = false
OFFLINE_MODE     = false[mailer]
ENABLED = false[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = false[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = false[session]
PROVIDER = file[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /home/go/src/github.com/gogs/gogs/log[security]
INSTALL_LOCK = true
SECRET_KEY   = xxxxxxx

如果安装失败需要重装, 做如下操作


1, drop database gogs;  #删除掉数据库, 然后重新创建个
2, rm -rf gogs/custom/  #删除掉自定义配置文件
3, supervisorctl start gogs

我为了干净, 重新go clean && go build了一次. 这样安装完, 就可以登录了
在这里插入图片描述