源码gitea+nginx+ssl+https

2019-11-28  本文已影响0人  Hmcf

环境:centos7、postgresql10.6、gitea 1.11

官方文档:https://docs.gitea.io/zh-cn/command-line/

首先在服务器上配置go基础环境。这里再回顾一下centos下配置go开发环境。

源码编译安装golang

简单点上傻瓜代码流

wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz
tar -xvf go1.13.4.linux-amd64.tar.gz -C /usr/local/
vi /etc/profile 
export GOROOT=/usr/local/go 
export GOPATH=/root/gopath 
export PATH=$PATH:$GOROOT/bin 
source /etc/profile
yum install -y git
adduser git

下载gitea源码

go get -d -u code.gitea.io/gitea
cd $GOPATH/src/code.gitea.io/gitea

选择稳定的版本(源码包路径下)

git branch -a            // 列出版本
git checkout  版本名

编译(源码包路径下)

TAGS="bindata" make generate build
go build

启动测试(源码包路径下)

./gitea web

浏览器输入IP:3000


1574918124(1).png

在有特殊需求的情况下可以二次开发,具体方法在参照官方源码。


接下来看看使用nginx代理,配置ssl证书,达到https要求。

鉴于很多情况下是在测试,没有实际上的证书,所以自己造一个。
造证书:

放在nginx/conf/ssl目录
1.创建服务器证书密钥文件 server.key:
openssl genrsa -des3 -out server.key 1024
输入密码,确认密码,自己随便定义,但是要记住,后面会用到。
2.创建服务器证书的申请文件 server.csr
openssl req -new -key server.key -out server.csr
输出内容为:
Enter pass phrase for root.key: ← 输入前面创建的密码
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, YOUR name) []: ← 此时不输入
Email Address []:admin@mycompany.com ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入
4.备份一份服务器密钥文件
cp server.key server.key.org
5.去除文件口令
openssl rsa -in server.key.org -out server.key
6.生成证书文件server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

安装nginx(这里就不说步骤,网上很多https://www.cnblogs.com/ghjbk/p/6744131.html

nginx -t 检查nignx.conf配置文件的语法
nginx -s stop
nginx -s reload 重启
nginx 启动

修改nginx.conf(建议cp)

[root@gitea ~]# cat /usr/local/nginx/conf/nginx.conf

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    server{
            listen 80;
            server_name inofagit.com;
            rewrite ^ https://inofagit.com/$request_uri? permanent;
    }
    server {
            listen 443 ssl;
            #ssl on;
            server_name inofagit.com;
            #证书(公钥.发送到客户端的)
            ssl_certificate ssl/server.crt;
            ssl_certificate_key ssl/server.key;
            #ssl_session_timeout 5m;
            #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #ssl_prefer_server_ciphers on;
            location / {
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_redirect off;
                    proxy_pass http://localhost:3000;
            }
    }

}

[root@gitea ~]#

修改配置文件要重载nginx -s reload

本地测试的话为了达到更好的效果,需要配置hosts文件,将server name 配置上。
添加一行内容到末尾。
192.168.122.162 inofagit.com


外传:
Nginx 系列 - 用 GoAccess 实现可视化并实时监控 access 日志
可以监控到网站的访问请求
可参考:https://www.codercto.com/a/73999.html

效果如下

image.png
上一篇下一篇

猜你喜欢

热点阅读