linux搭建的gitlab服务器会在重启之后消失吗
linux搭建的gitlab服务器会在重启之后消失
1、由于在Windows Vista之后的版本默认并没有提供Telnet功能。如果需要使用Telnet就必须打开此项功能。以Windows 7为例,首先打开控制面板。
2、然后在控制面板中打开“程序和功能”。
3、再在左上角点击“打开或关闭Windows功能”。
4、在“打开或关闭Windows功能”对话框中勾选“Telnet客户端”,点击确定,系统会自动安装。到此Windows终端的工作已经完成。
5、Linux服务器开启Telnet服务
许多Linux系统在默认情况下是不安装Telnet服务的,如果需要使用就必须安装此项服务。安装的方法有很多,小编在这里只介绍yum安装Telnet服务,它的优点是能够自动检查安装包的依赖文件不用人为干预,当然前提是系统必须联网。在提示符下输入“yum install -y telnet-server”命令安装Telnet服务。最后出现Complete,代表安装完成。
首先要 ssh远程登陆工具比secureCRT等
案 基于SSH直接搭建
Git支持协议主要四种:
本: 需要文件共享系统权限控制
HTTP:速度慢
SSH:同支持读写操作支持匿名读取(Git默认协议)
GIT:快
搭建难易程度特点综合筛选合适ssh并且部服务器基本都ssh服务所省少麻烦基本思路给每ssh帐号家通用户名口令访问显选择做些余并且于repo权限难管理
使用Github候利用rsapub公钥/私钥式服务端拥用户公钥(pub)跨繁琐口令直接认证提交服务端根据同用户身份其权限着更加灵管理我采用种式
服务端
使远程库访问更加直观先服务器创建名git账户clone候面格式:
git clone git@server:somegit
创建新用户创建repo等目录
$sudo adduser git
$su git
$cd ~
$mkdir repos
HOMEssh目录没则创建创建authorized_keys文件文件用管理所git用户公钥面用户于项目着R+W权限
客户端
于每客户端我需要密钥公钥Github用户ssh目录定id_rsapubid_rsa两文件其第系统公钥另自要保存密钥没终端执行:ssh-keygen完自公钥提交给管理员注册行
完
步管理员团队员公钥添加authorized_keys比同susie加入:
$ cat susiepub >> authorized_keys
至家通git@server:repos/somegit访问公共版本库
问题
安全问题员登录git用户shell,细节权限支等控制
管理麻烦新建repo,或者增加员比较麻烦尤其修改候
案二 使用Gitolite服务
Gitolite 基于SSH协议构建便管理git repo应用通其源码安装
安装
安装按照官给定文档轻易实现:
$ git clone git://githubcom/sitaramc/gitolite
$ mkdir -p $HOME/bin
$ gitolite/install -to $HOME/bin
$ gitolite setup -pk YourNamepub
执行条命令候gitolite识别则通面两种式解决:
gitolite添加PATH面
通$HOME/bin/gitolite setup -pk YourNamepub 执行
至gitolite服务端搭建完毕发现HOME目录增加文件projectslist目录repositories,者我版本仓库每新建repo候其创建
使用
候说gitolite管理模式创建gitolite-adminrepo管理员通像repo提交配置文件实现git服务器控制
首先repo导入我workspace:前需要配置本ssh,gitolite要求管理员本密钥其注册公钥名字致比我安装候指定 -pk面 adminpub 则管理员本需要由admin应私钥我通~/ssh/config进行配置(注:些系统用confMac OSX 效能用config)
host gitolite
user git
hostname yourhostnamecom
port 22
identityfile ~/ssh/admin
我访问gitolite候自根据配置文件执行配置完根据面命令gitolite-admin转移本
git clone gitolite:gitolite-admingit
克隆完发现gitolite-admin面两目录其conf保存配置文件我通编辑面gitoliteconf文件管理git服务器keydir目录保存用户公钥pub文件
我讲修改repo 提交候gitolite自应用些配置管理程便
配置规则
打gitoliteconf文件看其示例:
To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alicepub, bobpub, and carolpub respectively
To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitoliteconf' and add lines like this:
repo foo
RW+ = alice
RW = bob
R = carol
面配置文件新建repo foo并且添加三位项目员每权限同提交push管理便效
视化
我能需要web界面管理些项目我目前知道三种式:
git源码自带组件cgi脚本实现使用gitolite服务
gitlab源框架基于ROR新版本再使用gitolite服务
FB源PHP框架 phabricator功能高端档
首先安装 EPEL 和编译依赖库
$ rpm -ivh http://dlfedoraprojectorg/pub/epel/6/x86_64/epel-release-6-8noarchrpm
如果你是非 64 位,去上面的网址找到适合你发行版的最新版本的 epel rpm
$ yum -y update
$ yum -y install gcc gcc-c++ make autoconf libyaml-devel gdbm-devel ncurses-devel openssl-devel zlib-devel readline-devel curl-devel expat-devel gettext-devel tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel sendmail patch libyaml pcre-devel sqlite-devel vim
安装 Python 27+
Gitlab 要求 Python 255+ 以及 Ruby 19+
系统 Python 默认是 26x,如果你想把 Python 升级到目前比较流行的 27x 就参照下面步骤,否则直接跳过。(Gitlab 目前不支持 Python 30)
$ mkdir /tmp/gitlab && cd /tmp/gitlab
$ curl --progress http://pythonorg/ftp/python/275/Python-275tgz | tar xvf
$ cd Python-275
$ /configure --prefix=/usr/local
$ make && make altinstall
安装好之后,需要做两件事情,替换默认 python 的版本至最新版本,
$ sudo ln -s /usr/local/bin/python27 /usr/local/bin/python
因为系统默认 PATH 的寻址路径是 /usr/local/bin
最后看下 Python 版本是否是刚刚安装的版本:
$ python --version
由于 yum 是 python 的一个 module,所以这块修改可能会引起无法调用 yum 脚本,所以需要修改这个文件 /usr/bin/yum 的第一行为 !#/usr/bin/python26
安装 Ruby 20
Ruby 19 和 20 的特性差别不大,索性升级至最新 20 版本即可
$ cd /tmp/gitlab
$ curl --progress http://cacheruby-langorg/pub/ruby/20/ruby-200-p247targz | tar xz
$ cd ruby-200-p247
$ /configure
$ make
$ make install
ruby 20 已经内置 gem (v203),只需要安装 bundler
$ gem install bundler
若在执行 sudo ruby 或 sudo gem 找不到命令,因为编译的路径配置到了 /usr/local/bin,我们只需要做下软链接到 root 用户可以找到的 $PATH 路径:
$ ln -s /usr/local/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/bin/gem /usr/bin/gem
$ ln -s /usr/local/bin/bundle /usr/bin/bundle
安装 Git 和 Gitolite
$ yum -y install git-all gitolite
安装 Nginx
$ yum -y install nginx
$ service nginx start
nginx 需要从 EPEL 中安装,默认系统没有 nginx 包。
安装 Mysql 和 Redis
Gitlab 要求强制安装 redis 处理一些数据,另外支持 MySQL 和 PostgreSQL,这里主要以 MySQL 为例
$ yum -y install mysql mysql-devel mysql-server redis
配置 Mysql 和 gitlab 需要的用户和数据库
$ service mysqld start
$ mysql -u root
$ mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
$ mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
$ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production` TO 'gitlab'@'localhost';
$ mysql> \q
Redis 使用默认配置即可,直接启动
$ service redis start
添加 Gitlab 用户
$ useradd -c 'GitLab' git
CentOS 的命令没有办法直接禁止用户的访问的参数,需要用下面命令:
$ passwd -l git
安装 Gitlab-shell
使用 root 账户切换到 git 账户下操作,可以比官方教程省去一些麻烦的输入
$ su git && cd /home/git
$ git clone https://githubcom/gitlabhq/gitlab-shellgit
$ cd gitlab-shell
通过 git tag 查看最新版本并切换之
$ git checkout v171
编辑配置文件修改你要设定的域名(domain),比如 http://gitlabdev/
$ vim configyml
完成之后执行安装脚本
$ /bin/install
安装 Gitlab
$ cd /home/git
$ git clone https://githubcom/gitlabhq/gitlabhqgit gitlab
$ cd /home/git/gitlab
通过 git tag 查看最新版本并切换之
$ git checkout 601
这里需要配置的东西多一些,这里参考官方的文档,也可以安装我下面的步骤来:
$ cd /home/git/gitlab
复制配置文件,修改 host 相关的配置项,主要是 domain 要和上面的 http://gitlabdev
$ cp configyml{example,}
$ vim config/gitlabyml
确认 gitlab 以下目录的权限是否正确
$ mkdir tmp/pids/
$ mkdir tmp/sockets/
$ chown -R git log/
$ chown -R git tmp/
$ chmod -R u+rwX log/
$ chmod -R u+rwX tmp/
$ chmod -R u+rwX tmp/pids/
$ chmod -R u+rwX tmp/sockets/
创建 satellites 目录,这个目录是保存各个用户的仓库
$ mkdir /home/git/gitlab-satellites
创建 uploads 目录(为什么 gitlab 不在项目中创建呢= =!)
$ mkdir public/uploads
$ chmod -R u+rwX public/uploads
复制 unicorn 配置文件
$ cp config/unicornrb{example,}
设置 ruby web 容器的参数,比如 2GB RAM 服务器可以设置 3 个 worker。
如果系统其他服务占用了 unicorn 的端口,记得改名。
$ vim config/unicornrb
设置一些 git 全局参数
$ git config --global username "GitLab"
$ git config --global useremail "gitlab@localhost"
$ git config --global coreautocrlf input
配置 gitlab 数据库设置
$ cp config/databaseyml{mysql,}
$ vim config/databaseyml
$ chmod o-rwx config/databaseyml
安装必需的 Ruby Gems
$ cd /home/git/gitlab
$ [sudo] gem install charlock_holmes --version '0694'
$ bundle install --deployment --without development test postgres aws
初始化数据库数据(执行输入 Yes 继续创建)
$ bundle exec rake gitlab:setup RAILS_ENV=production
设置 init 脚本
$ sudo cp lib/support/initd/gitlab /etc/initd/gitlab
$ sudo chmod +x /etc/initd/gitlab
检查 Gitlab 状态
$ bundle exec rake gitlab:env:info RAILS_ENV=production
启动 gitlab 服务
$ sudo service gitlab start
再起检查,保证所有项目都是绿色
$ bundle exec rake gitlab:check RAILS_ENV=production
配置 nginx
根据 nginx 的安装路径适当修改下面的路径即可,我们先把 gitlab 提供的配置文件拷贝过去
$ sudo mkdir -p /etc/nginx/conf/sites/
$ sudo cp lib/support/nginx/gitlab /etc/nginx/conf/sites/gitlabconf
根据 nginx 版本和不同发行版的不同,配置结构可能不同根据你的实际情况加载 gitlabconf
修改 gitlabconf 的 YOUR_SERVER_FQDN 为上面设置的 domain。
最后修改 nginxconf 或者 defaultconf 加载 /etc/nginx/conf/site 下所有 conf 文件
http {
include /etc/nginx/conf/site/conf;
server {
…
}
}
保存后,重启各个服务
$ sudo service nginx reload
$ sudo service gitlab restart
开始 Gitlab 之旅
配置好 hosts 即可访问 gitlabdev
$ echo "127001 gitlabdev" >> /etc/hosts
默认的用户名密码:
admin@localhost
5iveL!fe
各种坑
1 错误日志报权限错误
2013/11/07 00:42:21 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconicohtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:21 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/faviconico", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public//indexhtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/html" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconico" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconico/indexhtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconicohtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/faviconico", host: "gitlabweblo"
解决方案:
$ (sudo) chmod o+x /home/git
2 8080 端口被占用
这样主要是因为 nginx 的配置是做 unicorn 的代理转发,实际上 gitlab 是由 unicorn 容器驱动,而在配置里默认绑定的是 8080 端口
$ vim /home/git/gitlab/config/unicornrb
找到 listen "127001:8080", :tcp_nopush => true 修改成其他未占用的端口号即可。
原因:ubuntu1404版本应该是 trusty 版本,而下载的gitlab软件包却是 xenial版本的
解决:下载trusty版本的 gitlab 进行安装
查看ubuntu版本的方法:
root@kickseed:~# lsb_release -a
No LSB modules are available
Distributor ID: Ubuntu
Description: Ubuntu 14045 LTS
Release: 1404
Codename: trusty
0条评论