前言 frp 是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持 TCP、UDP、HTTP、HTTPS 等协议类型,并且 web 服务支持根据域名进行路由转发。 当然frp作者已经提供多达20种已编译好的各种版本可以供大家使用,几乎不需要自己编译。 但是有时候我们需要自定义一些内容,这时候就需要自行编译了。
搭建GO环境
1、安装依赖
#Ubuntu sudo apt-get install bison ed gawk gcc libc6-dev make
#CentOS sudo yum install gcc
2、下载go支持包 各版本的下载地址 https://www.golangtc.com/static/go/,我使用的是当前最新的1.9.2版本
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz
3、解压go包 sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
4、添加环境变量和go工作区
vim /etc/profile
在文件的底部添加以下两行:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/gopath
:wq 保存退出后,
重新加载环境变量
source /etc/profile
至此,go环境搭建完毕。
5. 下载编译frp 直接运行以下命令 go get github.com/fatedier/frp
cd /usr/local/gopath/src/github.com/fatedier/frp/ make make
编译完成后,frp里会多出一个bin目录,放着frpc和frps,对应客户端和服务端的可执行文件。服务端上只需要用到 frps,可以删掉 frpc,客户端则相反。
6.修改404页面
404页面在源码路径
utils/vhost/resource.go
文件里,你可以自行更改后编译
7. 压缩Golang 编译出的可执行文件70%大小
工具 upx
#Ubuntu sudo apt-get install upx
upx frps
例如:我编译的约 11M. 压缩后只有 3.4M. 详细教程不在说明
8.全平台编译
go支持跨平台编译,平时我们在mac或者windows上面开发,部署服务器的时候需要编译成linux的可执行文件,可以使用命令行进行跨平台编译,但是每次敲命令有点麻烦,gogland简单配置一下也可以实现同样的功能。
打开configuration:
添加Go Application,在environment里面添 GOOS=linux;GOARCH=amd64
$GOOS $GOARCH
android arm
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips
linux mipsle
linux mips64
linux mips64le
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
———————
作者:zhaobisheng1
来源:CSDN
原文:https://blog.csdn.net/zhaobisheng1/article/details/81265310
版权声明:本文为博主原创文章,转载请附上博文链接!
然后运行就能编译出在linux下面运行的可执行文件。
参考文章: