#
opensuse 12.2 + gitlab 4.1
#email: 187343853
@qq.com
#opensuse下安装gitlab, 几尽折腾, 终于弄好了, 给你们分享!
#参考官方文档步骤: https://github.com/gitlabhq/gitlabhq/blob/stable/doc/install/installation.md
#1. Packages / Dependencies
zypper in checkinstall libxml2-devel libxslt-devel sqlite3 libicu-devel python-devel python-pip libyaml-devel sqlite3-devel
#2. Ruby
#from yast2, install ruby1.9 and ruby-devel
gem install bundler #or bundle install --deployment
#3. System Users
groupadd git
useradd -c "git version control" -m -g git git
useradd -c "gitlab system" gitlab
usermod -G git gitlab
passwd gitlab #my passwd: pi=3.141
passwd git #my passwd: pi=3.141
cd /home
mkdir /home/gitlab
chown gitlab:git gitlab
mkdir -m 700 .ssh
sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
#4. Gitolite
cd /home/git
sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
sudo -u git -H mkdir /home/git/bin
sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile'
sudo -u git -H sh -c 'gitolite/install -ln /home/git/bin'
sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
sudo chmod 0444 /home/git/gitlab.pub
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"
sudo chmod 750 /home/git/.gitolite/
sudo chown -R git:git /home/git/.gitolite/
sudo chmod -R ug+rwXs,o-rwx /home/git/repositories/
sudo chown -R git:git /home/git/repositories/
#Add domains to list to the list of known hosts
sudo -u gitlab -H ssh git
@localhost #Test if everything works so far #5. Database #see https://github.com/gitlabhq/gitlabhq/blob/stable/doc/install/databases.md #mysql方案 上一行参考内db配置与config/database.yml一致 #config/database.yml adapter: mysql2 encoding: utf8 reconnect: false database: gitlabhq_development pool: 5 username: gitlab password: "000000" #必须引号 socket: /run/mysql/mysql.sock #6. GitLab cd /home/gitlab #Clone the Source sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab sudo -u gitlab -H git checkout 4-1-stable #Configure it cd /home/gitlab/gitlab sudo -u gitlab -H cp config/gitlab.yml.example config/gitlab.yml sudo -u gitlab -H vim config/gitlab.yml sudo chown -R gitlab log/ sudo chown -R gitlab tmp/ sudo chmod -R u+rwX log/ sudo chmod -R u+rwX tmp/ sudo -u gitlab -H mkdir /home/gitlab/gitlab-satellites sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rb #Configure GitLab DB settings sudo -u gitlab cp config/database.yml.postgresql config/database.yml sudo emacs config/database.yml #Install Gems sudo gem fetch charlock_holmes sudo gem unpack charlock_holmes-0.6.9.gem cd charlock_holmes-0.6.9/ sudo emacs ./ext/charlock_holmes/extconf.rb #{CWD}/dst/lib/libmagic.a改成#{CWD}/dst/lib64/libmagic.a sudo bundle gem . emacs lib/version.rb #将module后的.去掉, 不然ri doc安装报错 sudo gem build charlock_holmes.gemspec su root ReportServer:/home/gitlab/gitlab/charlock_holmes-0.6.9 # gem install -l charlock_holmes-0.6.9.gem #这里要确保没有一个错误 chmod 777 /usr/lib64/ruby/gems/1.9.1/gems/bundler-1.2.4/lib/bundler/settings.rb chmod 777 /home/gitlab/gitlab/charlock_holmes-0.6.9/.bundle/config sudo -u gitlab -H bundle install --deployment --without development test postgres #必须先执行前面的chmod, 不然提示Permission denied #Configure Git sudo -u gitlab -H git config --global user.name "GitLab" sudo -u gitlab -H git config --global user.email "gitlab@localhost" #Setup GitLab Hooks gitlab@ReportServer:~/gitlab> sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive #注意dir sudo chown git:git /home/git/.gitolite/hooks/common/post-receive #Initialise Database and Activate Advanced Features #pg问题须要先安装postgresql-devel #sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production #安装icu #安装mysql2 须要先修改Gemfile gem "mysql2", "0.3.12" 原来的mysql2一行注释掉 以后安装musql2, bundle show查看是否正确安装 #Initialise Database and Activate Advanced Features #事先到yast安装好redis, 并启动redis服务 sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production 正确的话: Administrator account created: login.........admin@local.host password......5iveL!fe Updating repo permissions ... remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done. ... done Creating satellites for ...skipping, because you have no projects #Install Init Script sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/4-1-stable/init.d/gitlab #sudo chmod +x /etc/init.d/gitlab #opensuse上方法不一样 #Check Application Status sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production #此处可能会提示错误, 提示执行sudo -u gitlab -H bundle exec rake sidekiq:start #修改Gemfile, 增长 gem 'rb-inotify' gem 'ffi' bundle install --no-deployment bundle install #再测试 sudo -u gitlab -H bundle exec rake sidekiq:start #log/sidekiq.log提示Access denied for user 'gitlab'@'localhost' to database 'gitlabhq_development' #无此db, 新建, 并给权限 #再测试 sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production #all green, passed! #Start Your GitLab Instance sudo service gitlab start #not tested #7. Nginx #经过yast先安装nginx #参考配置: https://raw.github.com/gitlabhq/gitlab-recipes/4-2-stable/nginx/gitlab #编辑/etc/nginx/nginx.conf ######################### #user nginx; worker_processes 1; error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; #pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #include conf.d/*.conf; #include vhosts.d/*.conf; upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen 192.168.1.199:81; # e.g., listen 192.168.1.1:80; server_name suse.hxz; # 见/etc/HOSTNAME root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } } } ########################### 登陆http://192.168.1.199:81查看是否出现登陆界面 如有错误 查看log: /home/gitlab/gitlab/log/production.log 可能出现问题: 500, tmp/cache下文件无权限 no gateway, 查看是否有gitlab.socket文件 多是/home/gitlab/gitlab/tmp权限问题, 土方法, 将tmp权限改成777, 清空tmp里面cache(或所有文件和文件夹), reboot后会生成tmp下文件 (权限问题多是/etc/nginx/nginx.conf文件user声明缘由, 首行为user root admin; 参考http://ruby-china.org/topics/5113) ##已改权限, 故何尝试 配置nginx问题查找/var/log/nginx下日记 登陆http://192.168.1.199:81 success!!!!! #login.........admin@local.host #password......5iveL!fe #参考 https://github.com/gitlabhq/gitlabhq/blob/stable/doc/install/installation.md http://admirestator.diandian.com/post/2012-10-07/40040233692 http://articles.nakaji.me/gitlab-opensuse http://dev.classmethod.jp/tool/gitlab-install-mac-os-x-mountain-lion/ https://github.com/gitlabhq/gitlabhq/issues/663 http://blog.csdn.net/ysjjovo/article/details/8032570 http://dev.classmethod.jp/tool/gitlab-install-mac-os-x-mountain-lion/