解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题
前几天出了教程本地部署gogs,在后期运行时发现两个问题:
第一:邮件明明配置了,后台显示未配置,不生效
第二:在新建仓库时勾选“使用选定的文件和模板初始化仓库”报500错误或者其他各种奇葩错误,在网上查了各种资料都无法解决,最终耗时48个小时,终于解决了。
先解决邮件问题,直接替换成如下配置即可。
vim XX/gogs/custom/conf/app.ini ## gogs所在的真实路径
将以下代码复制到mailer下
[mailer]
[email]
ENABLED = true;启用邮件配置在这里呢
;进入电子邮件配置部分。
ADD_PLAIN_TEXT_ALT = true
SUBJECT_PREFIX = [%(BRAND_NAME)s]
;设置主题行的前缀。这个前缀会在邮件主题的最前面出现,通常用于标识邮件的来源。%(BRAND_NAME)s是一个占位符,可能会在实际发送邮件时被替换为相应的品牌名称。
HOST = smtp.126.com:25 ;SMTP服务器的主机和端口126的邮箱也是一个大坑,端口是25
FROM = XXX@126.com ;指定邮件发送者的邮箱地址。不要填写别的内容,否则QQ邮箱将无法正常接受邮件!!!!
USER = XXX@126.com ;指定登录SMTP服务器所需的用户名,与发件人邮箱地址相同。
PASSWORD = DIRHLXGDRQADXTQO ;这里不是邮箱密码!!不是邮箱密码!!不是邮箱密码!!是授权码!!! 授权码!!!授权码!!!
DISABLE_HELO =true ;控制是否禁用HELO操作,当主机名不同时使用。HELO是SMTP协议的一部分,用于在SMTP会话开始时标识发件人的主机。
;HELO_HOSTNAME = ;指定用于HELO操作的自定义主机名。
;SKIP_VERIFY = false ;控制是否跳过验证服务器的证书。设置为“false”表示不跳过,即会验证服务器的证书。
;USE_CERTIFICATE = false ;控制是否使用客户端证书进行身份验证。
;CERT_FILE = custom/email/cert.pem ;指定客户端证书文件的路径。
;KEY_FILE = custom/email/key.pem ;指定客户端私钥文件的路径。
;USE_PLAIN_TEXT = false ;控制是否使用“text/plain”作为邮件内容的格式。控制是否在发送HTML邮件时附加纯文本备用。这样做是为了支持老版本的邮件客户端,并让垃圾邮件过滤器更加愉快。如果需要启用,这里设置为true
;对于 DISABLE_HELO 和 HELO_HOSTNAME 两个配置项:
DISABLE_HELO:
;这个选项用于控制是否禁用 SMTP 协议中的 HELO 操作,当发件人的主机名与实际主机名不匹配时。通常,SMTP 服务器在会话开始时会发送一个 HELO 或 EHLO 命令,以标识自己的主机名。如果设置为 true,表示禁用这个标识;如果设置为 false,则会使用系统的主机名。一般情况下,建议将其设置为 false,除非有特殊需求。
HELO_HOSTNAME:
; 这个选项用于指定自定义的主机名,用于在 SMTP 会话开始时发送 HELO 或 EHLO 命令时使用。如果 DISABLE_HELO 被设置为 true,那么这个选项就不会起作用。如果需要自定义 HELO 操作中使用的主机名,就需要设置这个选项。一般情况下,如果没有特殊需求,可以将其保持为空或者与系统的实际主机名一致。
天坑 在[mailer] 里边直接配置ENABLED = true是不生效的,结果就是茹茹
一定一定要配置到[mailer][email]里边,邮件配置完毕,务必重启gogs!务必重启gogs!务必重启gogs!
[mailer]
;ENABLED = true ;注释掉
[email]
ENABLED = true
按照以上配置邮件,则可以正常使用。如果是gmail的话,还需要进行授权。
错误描述:Gmail 发送返回 Error 534: Please log in via your web browser and then try again
可能原因:这是因为 Google 不信任您的服务器导致的。
解决方案:
访问 https://accounts.google.com 并登录。
访问 https://accounts.google.com/DisplayUnlockCaptcha 单击 continue。
重试发送。
第二个问题 解决gogs勾选“使用选定的文件和模板初始化仓库”报错500
An error has occurred : initRepository: initRepoCommit: git push: warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: 无法推送一些引用到 '/git/gogs-repositories/zero/create_new_git.git'
Application Version: 0.13.0
这一段的意思很明确,如果意思git版本小于2.0则 ‘matching’ 修改为 ‘simple’,反之则是小于2.0版本的我们需要执行git config --global push.default matching即可,我执行了,gogs重启了,结果没有毛用,依旧报错。废话不多,直接上思路及解决方法。【git小于2.0版本的有设置成功的欢迎留言/私信交流】
问题排查
第一:先查看git版本
git --version
如果git小于2.0版本,不要挣扎了,直接升级git版本。以下为升级的全部过程,这里我升级的2.9.5版本 _ 升就升到最新
git的官网下载链接 点此下载git
第一步 安装依赖,这里一行一行的写,方便各位码友复制也方便各位码友理解
yum groupinstall "Development Tools" -y # 安装Development Tools包工具
yum install gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel curl-devel libcurl-devel expat-devel perl-ExtUtils-MakeMaker -y
第二步 下载git
wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz --no-check-certificate #可以不用 --no-check-certificatec 如果报错错误: 无法验证 www.kernel.org 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:颁发的证书已经过期。要以不安全的方式连接至 www.kernel.org, 就加上 个人建议直接加上个
第三步 解压git包 并进入git文件
tar -zxf git-2.9.5.tar.gz && cd git-2.9.5
第四步 进行编译 这里将git安装到/usr/local/git目录中
make prefix=/usr/local all
如果没有报错,直接进行安装即可
make prefix=/usr/local install
第五步 如上图则表示安装成功,查看git版本是否为2.9.5
git --version
第六步 非常豪横的执行设置simple
git config --global push.default simple
设置完毕之后查看是否设置成功
git config --list
如果则表示设置成功。
第七步 将gogs进行重启,以下为配置server服务的重启方式
systemctl restart gogs
第八步 查看gogs的运行状态
systemctl status gogs
到这里就彻底OK了,打开gogs新增一个试试
截止到此 gogs勾选“使用选定的文件和模板初始化仓库”报错500彻底解决啦。
在多讲一下,如何更换gogs的模板,这里只讲操作流程,自行实践
第一步 将源码克隆下来,建议放到/opt目录下,你可以随便放,但是一定一定一定不要放到gogs目录中
git clone https://github.com/gogs/gogs.git gogs
克隆完毕之后找到templates 这里边就是页面源文件
想要修改那个页面,就把哪个页面的文件夹复制过去。