修改主机名
sudo -e /etc/hostname
sudo -e /etc/hosts 将127.0.1.1对应的原主机名改为新的
创建组
sudo groupadd 组名
修改组
sudo groupmod -n 新组名 原组名
删除组
sudo groupdel 组名
创建用户
sudo useradd -m会自动生成主目录 -k 内容将被拷贝到生成的主目录的样本目录 -d 主目录 -g 用户组 --groups 其它组,更多组 -s /bin/bash 用户名
sudo passwd 用户名
将用户加到sudoers:
直接改配置文件不可取:sudo visudo
添加到组,可能还有其它组如adm应该添加:sudo adduser 用户名 sudo
修改用户
sudo usermod -g 用户组 --groups 其它组,更多组 -l 新用户名 -m会将用户原主目录下内容移动到新主目录下 -d 新主目录 原用户名
如果不写当前组,需要添加用户到更多组,则–groups参数需要与-a参数同时使用
删除用户
sudo userdel 用户名
rm -rf 主目录
git 准备##
- sudo apt-get install git
- 创建git用户
- 将需要使用库的用户的公钥(用ssh-keygen生成)id_rsa.pub内容放到git用户的.ssh/authorized_keys文件(设置为组可写)中。直接将自己的密钥加到可信列表的命令:ssh-copy-id -i 公钥文件 用户@地址
- 此步会导致库权限混乱,无法维护。创建其他用户,属于git用户所在组,这样该用户能管理库,又方便将其移出该组。将库放到git用户某路径下,设置为组可写。取库时,用户可用自己的用户名和绝对路径,如果将其公钥放到认证文件中,也可用git用户名和相对路径。
- 如果git用户不需要登录会话,可在/etc/passwd中将其默认shell改为/usr/bin/git-shell
- 更细致管理权限用Gitolite(Gitosis Lite);更方便管理公钥用Gitosis
建立空库
git init --bare 库名。如果在需要的目录下,则不写库名参数。这会建立与库名同名的目录,之后修改该目录权限。不需要时直接删除该目录即可。
取库
空库也能取。
git clone 用户名@地址:路径
对于空库,也可在一空目录中进行以下复杂操作:
- git init
- git remote add origin 用户名@地址:路径
提交
git push origin master
其中origin是远端名,亦可用地址;master是分支名。对空库提交时,恐怕必须加这两个。
git server
linux
How to Create Your Own Git Server
windows
- built-in OpenSSH
- gogs、git、TortoiseGit、nssm
- gogs
gogs web
然后通过网页配置。选择SQLite3
为数据库则可使用本地文件。可能因为权限问题无法通过ssh访问代码库
- gogs
*限制提交等权限——gitolite
没有网页管理页面,用户手动需要提交公钥给管理员。无法完成代码审阅功能。手册
sudo apt-get install gitolite然后sudo dpkg-reconfigure gitolite会有问题。
以用户名git身份运行:清空.ssh/authorized_keys
- git clone git://github.com/sitaramc/gitolite
- mkdir bin
- gitolite/install -ln
- bin/gitolite setup -pk 库管理人员的公钥文件名
- 管理人员获取刚生成的gitolite-admin库(不加repositories/路径),如果要求输入密码则以上步骤有错误。
- 将开发人员的公钥以人员名为基本名、pub为扩展名保存到这个库的keydir目录下,可建立任意子目录,只要基本文件名相同,都认为是同一用户。修改conf/gitolite.conf。提交修改,就能生效了。
- conf/gitolite.conf中相同权限库的库名可写在一行
@staff = dilbert alice # groups
@projects = foo bar
repo @projects baz # repos
RW+ = @staff # rules
- master = ashok
RW = ashok
R = wally
option deny-rules = 1 # options
config hooks.emailprefix = '[%GL_REPO] ' # git-config
组前缀是@;同一组名如果写多次,是增量定义;@all是所有组。
-是不允许。RW+区别于RW是允许回退、删除分支、标签等。
- $HOME/.gitolite.rc:为了允许gitweb、redmine等,UMASK从0077改为0027
*网页管理——gitweb
因为gitweb似乎不能审阅,故本节未验证。
2. sudo apt-get install gitweb apache2
3. 参见How to create own Git Server with Gitolite and Gitweb in Ubuntu
4. Securing Gitweb with htpasswd:同上一步
网页管理——redmine/gerrit/gitlab/phabricator
审阅工具列表(pre-commit)
LAMP
- sudo apt-get install apache2 php5 mysql-server phpmyadmin 或以lighttpd代替apache2,但是其它模块似乎依赖于apache2。以下以apache2为准。
重启lighttpd:sudo /etc/init.d/lighttpd restart - sudo ln -s /usr/share/phpmyadmin /var/www
然后访问服务器的phpmyadmin网页,就能登录了。
停止服务:sudo service apache2或mysql stop
允许服务自启动:sudo update-rc.d apache2 enable
禁止服务自启动:sudo update-rc.d apache2 disable
完全禁止服务自启动:sudo update-rc.d -f apache2 remove
*RedMine
无法控制代码提交、审阅。
- sudo apt-get install ruby rubygems libruby libapache2-mod-passenger ruby-dev libmysqlclient-dev libmagickcore-dev libmagickwand-dev git-core redmine redmine-mysql
提问“MySQL application password for redmine/instances/default:”是输入数据库中redmine用户的密码 - 修改/etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
PassengerDefaultUser www-data
PassengerRoot /usr
PassengerRuby /usr/bin/ruby
</IfModule>
- sudo ln -s /usr/share/redmine/public /var/www/redmine
- 修改/etc/apache2/sites-available/000-default.conf或同目录下的default
<Directory /var/www/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
- sudo service apache2 restart
- 然后访问服务器的redmine目录,就能登录了。默认管理用户的用户名和密码都是admin
- 为了使用网页认证,即其它网页认证后redmine不再鉴权,需要安装插件(声明兼容redmine2.3、2.4;在redmine1.*上使用时报告错误)https://github.com/pburgisser/redmine_http_basic_authentication:
- sudo apt-get install rails
- git clone http://github.com/pburgisser/redmine_http_basic_authentication.git
- sudo mv redmine_http_basic_authentication /usr/share/redmine/vendor/plugins/
- chown -R root.root redmine_http_basic_authentication/
*gerrit##
没有缺陷管理功能,需要借助bugzilla/bugfree?
- 下载.war:https://gerrit-releases.storage.googleapis.com/index.html
- 增加数据库本地用户git(手册中是gerrit2)、数据库reviewdb,并允许该用户对此库所有操作:
CREATE USER 'git'@'localhost' IDENTIFIED BY '密码';
CREATE DATABASE reviewdb;
GRANT ALL ON reviewdb.* TO 'git'@'localhost';
FLUSH PRIVILEGES;
- 登录git(手册中是gerrit2)用户,执行:java -jar gerrit.war init -d gerrit使用的目录名
被提问的选项中有问号时,可选择问号,查看所有可选项。
solr是基于lucene的技术。
http_ldap与http比较类似,只是从ldap获取额外信息;如果用ldap认证,则会要求用户名和密码。本文gerrit使用http认证方式,由apache通过ldap等方式认证。 - ……见Gerrit Code Review - Standalone Daemon Installation Guide,参考烤鸭的gerrit使用总结
非本地系统用户账号
Ubuntu上能做LDAP服务器,本身也支持LDAP客户端,使用非本地账号登录:LDAPClientAuthentication,参考phpldapadmin安装手册(open ldap+Berkeley DB+php 5+apache 2)
GitLab
库的公共分支不允许组员提交:组员建立自己的分支提交修改,并申请合并到公共分支,组长审阅。
账号要求密码为8位字符或更长。
用ngix,与apache冲突,需要禁止apache自启动。
不同系统有不同安装方法。用类似虚拟机的bitnami能安装。以下是Ubuntu 12.04的:
- curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- sudo apt-get install gitlab-ce:这步可能很慢,可能要试多次。配置文件位置如/var/opt/gitlab/gitlab-rails/etc/unicorn.rb
- 如果有git用户,此步默认会修改其主目录,并应保证有/home/git目录:sudo gitlab-ctl reconfigure
- 改变代码库位置:(/var/opt/gitlab/nginx/conf/下的网络配置文件中写明了修改该处文件不能生效,亦需要修改以下配置文件)
sudo -e /etc/gitlab/gitlab.rb
设置git_data_dir “目标位置”
如果已经有库了,运行:
sudo gitlab-ctl stop
sudo rsync -av 原位置不以斜线结尾,默认是/var/opt/gitlab/git-data/repositories 目标位置以斜线结尾
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start - 发送邮件设置
- LDAP:sudo -e /etc/gitlab/gitlab.rb并按说明把EOS结尾的行取消注释
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 地址
port: 389
uid: 用户名
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: '域名称如cn=某,ou=某,dc=somewhere,dc=cn'
password: 密码
active_directory: false
sudo gitlab-ctl reconfigure
5. (未成功)为了确认LDAP配置,可借助ldapsearch命令
6. 更新:下载安装包,sudo dpkg -i 包名;sudo gitlab-ctl restart
如果失败,则可能需要:
sudo gitlab-rake db:migrate
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
Phabricator
对服务器各软件版本要求高。要改sshd端口,会把网址都转换到她上。
按照安装说明安装后,查看网页,即根据提示能解决大部分配置问题。代码库用Diffusion模块,需要参阅用户手册。
要求更改sshd端口(以实现取、提代码时通过公钥鉴权)。
让每次开机时启动:
phd,因为其可判断是否已经启动,所以能写入/etc/crontab,如
0 * * * * git /opt/phabricator/phabricator/bin/phd start
;sshd,可更改 /etc/rc.local
/usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator
。
以非根用户运行,如git,则以下权限既可满足sshd(openssh),又能让git使用:
/etc/ssh/phabricator-ssh-hook.sh 用户root,组git,权限750;
/etc/ssh/sshd_config.phabricator 默认,用户、组都是root,权限644;
LDAP的配置,LDAP integration with phabricator说得很中肯。
更新(或许能用/etc/init.d/httpd代替apache2ctl):
sudo apache2ctl stop
sudo su git
phabricator/bin/phd stop
cd libphutil; git pull
cd ../arcanist; git pull
cd ../phabricator; git pull
cd ..; phabricator/bin/storage upgrade
cd ..; phabricator/bin/phd start
exit
sudo apache2ctl start