最近因为学校项目的一些关系,在频繁的写和更改代码,代码这种重要的东西,自然是需要多多备份的,一但丢失,就再也找不回来了。所以一开始选用程序员们都知道的GitHub和Gitee做为备份仓库。
不过使用一段时间后问题就来了,GitHub的上传和拉取速度实在感人,对于我这种急性子的人来说,实在是难以忍受。而无论是GitHub还是Gitee呢,都不能无限制私人仓库,这就让人非常苦恼。毕竟自己要毕业的项目暂时不能随随便便公开,而且最重要的是分支比较多,这样我就需要多个仓库来存放代码,目前因此事已经苦恼多日。
偶然听别人说可以自己搭建代码托管平台,于是打算动手实践。在网上浏览了一圈服务器之后发现真的好贵,而且环境的配置也非常困难。我在交流群里面询问小伙伴们有没有更好方案时,有一个小伙伴向我推荐轻量应用服务器,我随后便去了解了一下这个叫做轻量应用服务器的产品,发现他不仅环境配置简单,在安装系统时就有各式各样已经打包好的环境供用户选择,而且价格也是相当的亲民,于是当机立断开了一台来部署私有代码托管平台。
我选的这个开源Git代码托管服务平台是Code Fever,我也考虑过比较有名的GitLab,但是他太吃内存了,我消费不起啊,而且对于我这种只想备份代码的个人来说,其实Code Fever就足够了。那么话不多说,让我们开始今天的教程吧~
CodeFever
提供 从零开始安装
和 Docker 镜像安装
两种安装方式,可以根据自己的实际需要选择安装方式。
0.轻量应用服务器的选购
孟买现在半价特惠,大家如果想购买可以点击文末或者评论区链接。这里建议小白使用宝塔镜像,如果使用centos镜像可以看宝塔搭建教程。
1.宝塔搭建
首先,登录你购买服务器厂商的控制台,我这里用的是腾讯云轻量应用服务器,系统选择的是Centos7.6。
如果你你没有云服务器可以点击链接购买:
新用户优惠:https://curl.qcloud.com/9KXjqLTT
老用户抽奖代金券:https://curl.qcloud.com/vdUaMx2U
找到你的服务器之后点击右上角的登录按钮(如果不喜欢这种方式登录可以选择自己喜欢的方式:putty,xshell,terminal 等等)当然如果选用其他方式记得先重置密码还在在购买的时候就创建密码,不然无法登录。
输入管理员指令:sudo -i
接下来输入命令安装宝塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
PS:如果没有宝塔账户先去注册一下,注册链接:https://www.bt.cn/?invite_code=MV9obmppdmo=
安装成功后会看到下面的界面:
接下来我们去防火墙开一下宝塔面板的8888端口:
然后访问外网链接访问宝塔面板并输入账户密码登录,第一次登录会让你阅读协议并登录宝塔账户(就是刚才注册的)
选择LNMP一键安装,PHP版本可以选高一点。
Docker 镜像说明
CodeFever Community 版本
的 Docker 镜像
是从 dockerhub
上的 centos:centos7.9.2009
镜像开始按照 从零开始安装中的步骤进行构建, 构建架构是 x86_64 (amd64)
如果有其他需求请自行构建镜像。
拉取镜像并启动
启动 CodeFever Communiy 版本
的 Docker 镜像
先登录宝塔面板的终端,输入下面的拉取镜像命令。
docker run -d --privileged=true --name codefever -p 80:80 -p 22:22 -it pgyer/codefever-community:latest /usr/sbin/init
http://127.0.0.1
或 http://
登录22
端口作为 Git
的 SSH 协议
端口,你需要在启动镜像前将宿主系统的 SSH 服务
端口
先修改成其他端口[email protected]
, 密码: 123456
。登录后请修改密码并绑定 MFA 设备。此安装步骤是 从头开始安装
步骤, 举例的脚本适用于大部分 Linux
操作系统。
本文以 CentOS 7.6 Linux
操作系统为例,不同操作系统可能会有不同差别,需要用户自行对应到相应操作。
整个安装过程需要使用 root
操作系统用户来完成。
步骤1
-步骤8
均为软件环境安装步骤。如果你的操作已经具备当前步骤的软件或环境,此步骤可以跳过。
PS:小白推荐使用宝塔安装环境,可以略过下面环境安装,不愿意使用宝塔可以按下面步骤搭建环境。
选择合适的 Linux
发行版本,推荐使用 CentOS 7.x
。
1800 MB
内存,如果内存不足 1800 MB
请临时添加交换分区使可用内存到达 1800 MB
。# 临时增加 1000 MB Swap 空间
dd if=/dev/zero of=/root/swap bs=1024 count=1000000
mkswap /root/swap
swapon /root/swap
为了顺利的设置必要的软件环境,以下的软件包必须安装到系统上。
# 安装基础软件包
yum install -y sudo tcl tk gettext autoconf gcc cmake3 wget initscripts openssh-server crontabs mailx sendmail pcre pcre-devel libcurl libcurl-devel libxml2 libxml2-devel openssl openssl-devel sqlite sqlite-devel libpng libpng-devel libwebp libwebp-devel libjpeg libjpeg-devel libXpm libXpm-devel freetype freetype-devel oniguruma oniguruma-devel libyaml libyaml-devel
除此之外,你还需要安装 libzip 1.7+
库,需要去官网下载源码包解压后安装。
下载地址: https://libzip.org/download/
# 编译安装 libzip
cd libzip-1.x.x
mkdir build
cd build
cmake3 ../
make && make install
export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig/:/usr/local/lib/pkgconfig/"
访问 http://nginx.org/en/download.html 下载 Nginx
源码解压后编译并安装安装到 /usr/local/nginx
目录下:
# 安装 nginx 到 /usr/local/nginx 目录
cd nginx-1.x.x
./configure --prefix=/usr/local/nginx
make && make install
访问 https://www.php.net/downloads 下载 PHP
源码 (推荐 7.4
版本),解压后编译并安装到 /usr/local/php
目录下
配置检查过程可能会提示缺少某些软件包,需要根据配置检查过程提示自行安装后再重复配置检查过程
# 安装 php 到 /usr/local/php 目录
cd php-7.4.x
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-bcmath=shared --with-pdo_sqlite --with-gettext=shared --with-iconv --enable-ftp=shared --with-sqlite3 --enable-mbstring=shared --enable-sockets=shared --enable-soap=shared --with-openssl --with-zlib --with-curl=shared --enable-gd --with-freetype --with-jpeg --with-xpm --with-webp --with-mhash --enable-opcache --with-mysqli --without-pear --with-libdir=lib64 --with-zip --enable-mbstring --enable-pcntl
make && make install
Codefever
还需要以下PHP 扩展
才能良好工作,按照下面地址下载并安装
# 安装 php yaml 扩展
cd yaml-2.x.x
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
访问 https://mirrors.edge.kernel.org/pub/software/scm/git/ 下载 Git v2
的源码,解压后编译并安装到 /usr/local/git
目录下
# 安装 git v2 到 /usr/local/git 目录下
cd git-2.x.x
./configure --prefix=/usr/local/git
make && make install
连接可执行二进制文件到 /usr/local/bin
目录下
# 链接可执行文件
ln -s /usr/local/git/bin/git /usr/local/bin/
访问 https://golang.google.cn/dl/ 下载 1.16 版本以上的二进制安装包解压后复制到 /usr/local/go
目录下
# 复制到 /usr/local 目录下
cp -R go /usr/local
连接可执行二进制文件到 /usr/local/bin
目录下
# 链接可执行文件
ln -s /usr/local/go/bin/go /usr/local/bin/go
ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
访问 https://nodejs.org/en/download/ 下载 16.10
以上 LTS
版本二进制安装包解压后复制到 /usr/local/node
目录下
# 复制到 /usr/local 目录下
cp -R node-v16.x.x-os-arch /usr/local/node
连接可执行二进制文件到 /usr/local/bin/
目录下
# 链接可执行文件
ln -s /usr/local/node/bin/node /usr/local/bin/node
ln -s /usr/local/node/bin/npm /usr/local/bin/npm
ln -s /usr/local/node/bin/npx /usr/local/bin/npx
ln -s /usr/local/node/bin/corepack /usr/local/bin/corepack
访问 https://yarnpkg.com/getting-started/install 按照页面指导安装 Yarn
# NodeJS v16.10 以上打开 corepack 即可使用 Yarn
corepack enable
MySQL 不需要单独安装,直接使用系统自带软件工具安装软件包即可。需要安装于 MySQL 5.7
以上的相当版本。
去官网按照指导使用镜像源安装二进制版本 (https://mariadb.org/download/?t=repo-config 选择 xTom GmbH - San Jose
镜像),如果你使用使用云数据库,你可以跳过此步骤。
运行 service mariadb start
或 service mysql start
启动服务后使用 mysql_secure_installation
或 mariadb-secure-installation
初始化数据库
*当设置 root
密码为 123456
时,不需要在下一步中修改 env.yaml
中的数据库设置。
如果你使用 MySQL 5.7
版本数据,需要修改 SQL MODE
变量,否则创建数据库时会报错,如果使用 MariaDB
可以忽略此选项。
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
去 Github
上下载源码并安装 /data/www/codefever-comminuty
目录下
mkdir -p /data/www
cd /data/www
git clone https://github.com/PGYER/codefever.git codefever-community
cd codefever-community
Github
的 HTTP
服务访问速度较慢,可以尝试使用 SSH
服务(需要提前设置 SSH Key
)git clone ssh://[email protected]:PGYER/codefever.git codefever-community
编译 HTTP
网关服务
cd /data/www/codefever-community/http-gateway
export GO111MODULE=off
export GOPROXY=https://mirrors.aliyun.com/goproxy
go get gopkg.in/yaml.v2
go build main.go
编译 SSH
网关服务
cd /data/www/codefever-community/ssh-gateway/shell
export GO111MODULE=off
export GOPROXY=https://mirrors.aliyun.com/goproxy
go get gopkg.in/yaml.v2
go build main.go
执行安装脚本
cd /data/www/codefever-community/misc
sh ./install.sh
按照 install.sh
运行后提示修改 env.yaml
文件设置参数
运行数据库迁移脚本
cd /data/www/codefever-community/misc
sh ./create_db.sh
如果你不需要对 Code Fever 进行代码上的修改, 或者将来不计划运行单元测试, 可以删除测试数据
cd /data/www/codefever-community/misc
sh ./remove_test_data.sh
为服务开启 chkconfig
以开机自动运行
chkconfig mariadb on # 或 chkconfig mysql on (根据安装的数据库类型, 如果使用云服务忽略此项目)
chkconfig sendmail on
chkconfig nginx on
chkconfig php-fpm on
chkconfig codefever on
chkconfig crond on
尝试访问 http://127.0.0.1
或 http://
来登录
默认管理员用户: [email protected]
, 密码: 123456
。登录后请修改密码并绑定 MFA 设备。
其实这款平台非常好用,非常轻量,适合个人使用,美中不足的是不能从其他平台仓库直接克隆项目到本地服务端,只能通过自己手动上传,希望作者以后能增加这个功能。