安装Nginx+Git

需要安装的包有 nginx, fcgiwrap, git. 其中git在Ubuntu18.04 Server安装时已经默认安装了. 需要安装的是前两个

而fcgiwrap是在 universe 区域里面(找一个包时如果不确定是在那个区域, 可以在 https://packages.ubuntu.com/ 上面先查一下

默认的Ubuntu18.04 Server的 /etc/apt/source.list 内容是这样的

deb http://cn.archive.ubuntu.com/ubuntu bionic main
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main

需要在main后面加上universe, 否则apt install 会找不到 fcgiwrap

deb http://cn.archive.ubuntu.com/ubuntu bionic main universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main universe

然后执行 sudo apt update 后, 就可以通过 sudo apt install fcgiwrap安装了.

创建Git工作目录

这里将git工作目录放置到 /var/www/git , 将目录权限设置为 www-data (和nginx的worker一致)

cd /var/www/
sudo mkdir git
sudo chown -R www-data:www-data git/
cd git/
sudo mkdir sandbox.git
cd sandbox.git/
sudo git --bare init
sudo git update-server-info
sudo chown -R www-data:www-data .

在sandbox.git目录下, 设置目录和文件权限

# 设置目录为755
sudo find . -type d -exec chmod {} +
# 设置文件为644
sudo find . -type f -exec chmod {} +

配置Nginx

修改nginx默认的配置文件

# backup the default config
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default-bak
# Open the file for editing with the command:
sudo vi /etc/nginx/sites-available/default

在默认的 location / {} 后面, 增加下面的内容

    location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a .
try_files $uri $uri/ =;
}
#增加的内容
location ~ (/.*) {
client_max_body_size ; # Git pushes can be massive, prevent suddenly cut the connection
auth_basic "Git Login"; # For displaying
auth_basic_user_file "/var/www/git/htpasswd";
include /etc/nginx/fastcgi_params; # Include the default fastcgi configs
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; # Tells fastcgi to pass the request to the git http backend executable
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /var/www/git; # The location of all of your git repositories.
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $; # Takes the capture group from our location directive and gives git that.
fastcgi_pass unix:/var/run/fcgiwrap.socket; # Pass the request to fastcgi
}

以上的配置, location ~ (/.*) 这个正则匹配会命中所有的访问, 并将括号内的值赋为 PATH_INFO, 这时候访问git的URL为 http://server_ip/sandbox.git .

如果想将访问限制在一个二级目录下, 假设为git目录, 那么需要修改上面的location为

location ~ /git(/.*)

这时候访问的URL就是 http://server_ip/git/sandbox.git

创建密码文件

可以通过 htpasswd -c /var/www/git/htpasswd milton 来创建, 也可以通过 openssl passwd -apr1 生成口令来手动创建

然后重启nginx

sudo systemctl restart/reload nginx

这时候就可以通过git客户端连接测试了.

添加新Git仓库

sudo mkdir sandbox.git
cd sandbox.git/ sudo git --bare init
sudo git update-server-info
sudo chown -R www-data:www-data .
# 设置目录为755
sudo find . -type d -exec chmod {} +
# 设置文件为644
sudo find . -type f -exec chmod {} +

安装SVN服务

安装subversion

sudo apt install subversion

创建svn的仓库目录

cd /var/www/
sudo mkdir svn

在这个目录下创建两个文件 passwd 和 auth, 内容分别如下, 作为共用的用户管理, 将在各个svn仓库的配置中引用这两个文件

/var/www/svn$ more passwd[users]
harry =
sally = /var/www/svn$ more authz
[aliases] [groups]
admin = harry,sally [/]
@admin = rw

创建一个svn仓库

cd svn/
sudo svnadmin create sandbox

编辑 sandbox/conf/svnserve.conf, 需要修改三处

[general]
anon-access = none
password-db = ../../passwd
authz-db = ../../authz

启动svn服务

# 去掉 --foreground就是后台运行
svnserve -d --foreground -r /var/www/svn/

在客户端就可以通过 svn co svn://server_ip/sandbox/ 来checkout项目了

Ubuntu18.04 Server安装Nginx+Git服务和独立的svn服务的更多相关文章

  1. Ubuntu18.04 server安装步骤

    Ubuntu18.04 server安装步骤 1. select a language default 2.  select your location default 3. configure th ...

  2. Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel

    Ubuntu 16.04 LTS 安装 Nginx/PHP 5.6/MySQL 5.7 (LNMP) 与Laravel 1.MySQL安装[安装 MariaDB]MariaDB是MySQL的一个分支首 ...

  3. 在ubuntu18.04上安装EOS

    在ubuntu18.04上安装EOS 在ubuntu18.04上安装EOS的目的: 把交易所的eos转到eos主网,防止交易所跑路或者交易所被黑客攻击 在不联网的安全环境下,用eos官方的命令行工具, ...

  4. Ubuntu18.04下安装Sublime Text3!

    这几天安装了Ubuntu18.04,然后在里面安装Sublime Text3,结果各种问题!各种BUG!试了网上各种办法!尼玛!都是坑爹的啊! 最后还是楼主自己解决了…… 废话不多说,直接按顺序执行下 ...

  5. Ubuntu18.04下安装MySQL

    Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-client ...

  6. 在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程

    由于最近要在OpenCV3中使用SIFT和SURF特征提取,而自从OpenCV2升级到OpenCV3版本后,SIFT.SURF等这些算法都被移出opencv默认项目库,而被放到叫opencv_cont ...

  7. Ubuntu18.04下安装Sublime Text3并解决不能输入中文

    Ubuntu18.04下安装Sublime Text3并解决不能输入中文! 废话不多说,直接按顺序执行下面命令开始安装! wget -qO - https://download.sublimetext ...

  8. Ubuntu18.04 离线安装 docker

    Ubuntu18.04 离线安装 dockerhttps://blog.csdn.net/u012814856/article/details/804231851. 将下载下来的文件夹中的 4 个文件 ...

  9. Ubuntu18.04下安装搜狗输入法

    Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...

随机推荐

  1. Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App

    Windows + IIS 环境部署Asp.Net Core App   环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...

  2. js eval()

    1.基本字符串(数组字符串,json字符串)类型转化为对象(对象数组,json对象):  eval("("+字符串+")"); 2.json字符串转化为json ...

  3. c++ 初始化静态static成员变量或static复合成员变量

    https://stackoverflow.com/questions/185844/how-to-initialize-private-static-members-in-c https://sta ...

  4. js正则表达式验证、匹配数字、匹配字符串、匹配中文、匹配任意字符备忘录

    本文转自:91博客 :原文地址:http://www.9191boke.com/235792704.html 正则表达式或“regex”用于匹配字符串的各个部分,下面是我创建正则表达式的备忘录.包括一 ...

  5. 微信小程序转义解析渲染html

    今天开发小程序时,想调用商品详情字段,发现大部分是用编辑器编辑的html原生标签,无法在小程序直接使用. 后面自己使用正则和字符串替换,效果也不佳. 最后在网上找到了wx-mina-html-view ...

  6. Kali下的内网劫持(一)

    ettercap利用计算机在局域网内进行通信的ARP协议的缺陷进行攻击,在目标主机与服务器之间充当中间人,嗅探两者之间的数据流量,从中窃取用户的数据信息,那么接下来我就给大家演示一下客户端的图片是怎么 ...

  7. @Scope("prototype")

    spring中bean的scope属性,有如下5种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例prototype表示每次获得bea ...

  8. Git的工作流程

    git的工作流程为: 克隆Git资源作为工作目录 在克隆的资源上添加或者修改文件 如果别人修改了,你可以更新资源 在提交前查看修改 提交修改 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交 ...

  9. BZOJ3028 食物 和 LOJ6261 一个人的高三楼

    总结一下广义二项式定理. 食物 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数 ...

  10. 关于System.MissingMethodException异常

    什么是MissingMethodException 试图动态访问不存在的方法时引发的异常. 继承 Object Exception SystemException MemberAccessExcept ...