本地与windows server连接(搭建Git远程私库)

一、概叙

本地代码写好部署到远程服务器需要通过SSH建立通信,Git支持SSH连接,连接成功后可以对Git仓库进行克隆、提交代码等操作,蛋是环境需要自己配置。windows是没有open ssh这个东西的,需要自己装软件来实现这个功能,目前有两种选择:CopsshGitblit

二、Copssh

什么是Copssh?

Copssh is an OpenSSH server and client implementation for Windows systems. It is a yet another packaging of portable OpenSSH, Cygwin,some popular utilites, plus implementation of some best practices regarding security.

网上能找到的都是Copssh4.1.0,这个版本很低(官网最新版已经7.1了),在windows 2012成功安装后,COPSSH Control Panel打不开,后来把服务器操作系统换到windows 2008也是同样的问题😳。原来免费版的只支持32位操作系统,但是云服务器不能装32位系统,最新版的Copssh需要去官网付费下载😹。总之,折腾了好久最终选择放弃。

三、Gitblit安装与配置

什么是Gitblit?

Gitblit is an open-source, pure Java stack for managing, viewing, and serving Git repositories. It’s designed primarily as a tool for small workgroups who want to host centralized repositories

Gitblit需要运行在JDK环境上,所以需要先下载安装JDK并配置环境变量。下载安装就不写了。

3.1、配置JDK环境变量

新建系统变量JAVA_HOME,变量值为JDK所在目录
在这里插入图片描述
新建系统变量CLASSPATH,变量值为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意前面有个.)
在这里插入图片描述
编辑系统变量Path,加入%JAVA_HOME%\bin ;%JAVA_HOME%\jre\bin变量
在这里插入图片描述
配置完后,在cmd输入javac输出类似下图这样的信息就说明jdk环境变量配置成功了
在这里插入图片描述

3.2、Gitblit安装与配置

  • 3.2.1、下载成功Gitblit后直接解压到指定目录就行了,然后修改/data/defaults.properties文件:
1
2
3
4
5
6
7
8
9
10
#Git仓库的文件路径
git.repositoriesFolder = C:/myBlog
#HTTP协议使用的端口号
server.httpPort = 1111
#HTTPS协议使用的端口号, Tomcat的HTTPS默认使用的是8443端口
server.httpsPort = 8443
#HTTP协议传输数据的接口,外网要访问赋值为空
server.httpBindInterface =
#HTTPS协议传输数据的接口,外网要访问赋值为空
server.httpsBindInterface =

注意:我用的版本是1.8.0之前的版本是修改gitblit.properties文件

  • 3.2.2、双击gitblit.cmd文件就可以启动了,启动效果如下:
    在这里插入图片描述
  • 3.2.3、现在是英文的,如果要改为中文,可以登录后(默认账号密码都是admin)点击my profile-preferences修改。如下所示:
    在这里插入图片描述
  • 3.2.4、把gitblit设置为windows服务
    在Gitblit文件夹中编辑installService.cmd文件
    在这里插入图片描述
    修改保存后,以管理员方式运行后,windows服务会生成一个Gitblit服务
    在这里插入图片描述
  • 3.2.5、外网访问gitblit
    需要在云服务器控制台中放通1111、29418端口。1111是上面设置的http协议端口,29418是Git提交代码需要访问的端口
    在这里插入图片描述
    这样配置后,外网就可以输入服务ip:1111访问到Gitblit主页、克隆仓库到本地了
  • 3.2.6、克隆服务器仓库到本地
    先在服务端创建一个仓库
    在这里插入图片描述
    复制刚刚版本库的地址(localhost需要改为公网ip),通过Git克隆到本地
    在这里插入图片描述
    仓库的初始化文件拉到本地就成功了
    在这里插入图片描述
    能从远程服务器拉代码到本地,说明SSH通信连接已经建立,自然就能提交代码上去,提交代码步骤就不写了。
  • 3.2.7、自动化部署
    修改C:\gitblit-1.8.0\data\groovy\localclone.groovy文件的rootFolder为你想部署的文件夹
    在这里插入图片描述
    然后编辑仓库-receive-post-receive脚本-在select中选择刚刚编辑的文件
    在这里插入图片描述
    设置完记得保存。这样本地每次提交代码到服务器,Gitblit都会自动把本地的所有最新代码放到c:/blog文件夹下,实现自动化部署。

四、填坑记录

  • 4.1、从本地复制JDK到云服务器时多次操作均报类似下面这种错误
    在这里插入图片描述
    最终解决是放弃本地文件传输😹,在服务器端直接通过网络下载
  • 4.2、把Gitblit设置成windows服务后,服务启动不了
    查看C:\gitblit-1.8.0\logs输出的日志
1
2
3
4
5
6
7
8
9
[2019-12-15 13:21:12] [info]  Run service finished.
[2019-12-15 13:21:12] [info] Commons Daemon procrun finished
[2019-12-15 13:21:34] [info] Commons Daemon procrun (1.0.10.0 64-bit) started
[2019-12-15 13:21:34] [info] Running 'gitblit' Service...
[2019-12-15 13:21:34] [info] Starting service...
[2019-12-15 13:21:34] [error] Failed creating java
[2019-12-15 13:21:34] [error] ServiceStart returned 1
[2019-12-15 13:21:34] [info] Run service finished.
[2019-12-15 13:21:34] [info] Commons Daemon procrun finished

关键错误[Failed creating java],原来我的JDK安装的是32位的,所以设置服务的时候改成SET ARCH=x86,然后用sc delete gitblit删除服务,再重新运行installService.cmd文件就可以了

如果服务还启动不了,可以以管理员运行gitblitw.exe文件,再修改JVM。如下图所示:
在这里插入图片描述
这样就可以重启服务了。还有问题自行百度吧😹

  • 4.3、删除服务时如果出现"指定的服务已经标记为删除"错误提示了
    需要把相关进程关闭并关闭服务管理窗口,然后重新执行删除命令即可