设为首页 收藏本站
查看: 807|回复: 0

[经验分享] 如何在Ubuntu Server 11.10上安装Gitorious

[复制链接]

尚未签到

发表于 2018-5-7 13:54:45 | 显示全部楼层 |阅读模式
  Git是一个分布式的版本控制系统,用于Linux内核的管理。在推出后,Git也逐渐被用于其他项目,同样也取得了很大的成功。GitHub则是基于Git版本控制系统的,它提供基于互联网的项目托管服务,但GitHub并不开源,所以我在网上找到了替代GitHub的开源项目托管系统:Gitorious。
  安装Gitorious并不是一件轻松的事,所以就写了这篇文章,一则可以帮助那些准备安装Gitorious的兄弟,二则也给自己做个备忘。
  一、安装第三方的相关依赖包:


  • Apache

    • sudo apt-get install -y build-essential apache2 apache2-threaded-dev libapache2-mod-xsendfile


  • MySQL

    • sudo apt-get install -y mysql-server mysql-client

    注意:在安装MySQL时,您将会被提示创建MySQL的root用户密码
  • PHPMyAdmin(可选)

    • sudo apt-get install -y phpmyadmin

    设置时选择apache2、并使用dbconfig-common来配置数据库,并会被提示创建PHPMyAdmin管理员用户密码。
  • Git

    • sudo apt-get install -y git-core git-doc


  • 其它依赖包

    • sudo apt-get install -y libexpat1-dev libxslt1-dev libcurl4-openssl-dev sendmail apg geoip-bin libgeoip1 libgeoip-dev imagemagick libmagick++-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev zip unzip libyaml-dev libonig-dev memcached aspell libaspell-dev aspell-en


  • Ruby 和 RubyGems

    • sudo apt-get install -y ruby ruby-dev rubygems libruby libdbd-mysql-ruby libmysql-ruby
    • sudo REALLY_GEM_UPDATE_SYSTEM=1 gem update --system
    • sudo gem install --no-ri --no-rdoc rake
    • sudo gem install --no-ri --no-rdoc daemons
    • sudo gem install -b --no-ri --no-rdoc rmagick
    • sudo gem install -b --no-ri --no-rdoc stompserver
    • sudo gem install -b --no-ri --no-rdoc passenger
    • sudo gem install -b --no-ri --no-rdoc bundler


  • Sphinx(俄国人贡献的开源搜索包)

    • sudo apt-get install -y sphinxsearch


  二、下载Gitorious源代码,在这里将Gitorious放置在/var/www/gitoriou:


  • cd /var/www
  • sudo chown firehare:firehare /var/www
  • git clone git://gitorious.org/gitorious/mainline.git gitorious
  • cd gitorious
  • git submodule init
  • git submodule update
  • sudo ln -s /var/www/gitorious/script/gitorious /usr/bin

  第2条语句是为了方便处理,不用老是sudo,所以将/var/www目录的所有者从root改为你的用户名,在这里我使用的是我的用户名firehare。
  三、配置初始化服务
  在/var/www/gitorious/doc/templates/ubuntu目录中有相应的服务脚本模板。将这些脚本模板拷至/etc/init.d目录中:


  • cd /var/www/gitorious/doc/templates/ubuntu
  • sudo cp git-daemon git-ultrasphinx git-poller stomp /etc/init.d
  • sudo cp gitorious-logrotate /etc/logrotate.d/gitorious
  • sudo chmod 755 git-daemon git-ultrasphinx git-poller stomp

  然后将服务配置成开机启动


  • sudo update-rc.d stomp defaults
  • sudo update-rc.d git-daemon defaults
  • sudo update-rc.d git-ultrasphinx defaults
  • sudo update-rc.d git-poller defaults

  最后由于git-daemon git-ultrasphinx git-poller stomp脚本中的RUBY_HOME路径指向"/opt/ruby-enterprise",为了方便起见,不一一修改启动脚本,将创建一个链接:


  • sudo ln -s /usr/ /opt/ruby-enterprise

  四、配置Apache


  • 安装Passenger

    • sudo /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/bin/passenger-install-apache2-module


  • 配置Passenger

    • sudo vi /etc/apache2/mods-available/passenger.load

    然后在新建的passenger.load文件中输入以下文字:

    • # Did you verify this matches the values from
    • # the 'sudo /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/bin/passenger-install-apache2-module' command ?
    • LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
    • PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11
    • PassengerRuby /usr/bin/ruby1.8


  • 启用Apache模块

    • sudo a2enmod passenger
    • sudo a2enmod rewrite
    • sudo a2enmod ssl
    • sudo /etc/init.d/apache2 restart


  • 创建Gitorious站点文件

    • sudo vi /etc/apache2/sites-available/gitorious

    然后在新建的Gitorious站点文件中输入以下文字:

    • <VirtualHost *:80>
    •   ServerName git.meranko.net
    •   DocumentRoot /var/www/gitorious/public
    •   
    •   # Enable X-SendFile for gitorious repo archiving to work
    •   XSendFile on
    •   
    •   # Possible values include: debug, info, notice, warn, error, crit,
    •   # alert, emerg.
    •   LogLevel warn
    •   #
    •   # The following directives define some format nicknames for use with
    •   # a CustomLog directive (see below).
    •   #
    •   LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %>s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; combined
    •   LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %>s %b&quot; common
    •   LogFormat &quot;%{Referer}i -> %U&quot; referer
    •   LogFormat &quot;%{User-agent}i&quot; agent
    •   
    •   CustomLog /var/log/apache2/gitorious_access.log combined
    •   TransferLog /var/log/apache2/gitorious_access.log
    •   ErrorLog /var/log/apache2/gitorious_error.log
    • </VirtualHost>


  • 创建Gitorious SSL站点文件

    • sudo vi /etc/apache2/sites-available/gitorious-ssl

    然后在新建的Gitorious站点文件中输入以下文字:

    • <IfModule mod_ssl.c>
    • <VirtualHost _default_:443>
    •   SSLEngine on
    •   SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    •   SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    •   BrowserMatch &quot;.*MSIE.*&quot; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    •   DocumentRoot /var/www/gitorious/public
    •   
    •   # Possible values include: debug, info, notice, warn, error, crit,
    •   # alert, emerg.
    •   LogLevel warn
    •   #
    •   # The following directives define some format nicknames for use with
    •   # a CustomLog directive (see below).
    •   #
    •   LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %>s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; combined
    •   LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %>s %b&quot; common
    •   LogFormat &quot;%{Referer}i -> %U&quot; referer
    •   LogFormat &quot;%{User-agent}i&quot; agent
    •   
    •   CustomLog /var/log/apache2/gitorious_ssl_access.log combined
    •   TransferLog /var/log/apache2/gitorious_ssl_access.log
    •   ErrorLog /var/log/apache2/gitorious_ssl_error.log
    •   
    • </VirtualHost>
    • </IfModule>


  • 启用Gitorious和Gitorious SSL网站

    • sudo a2dissite default
    • sudo a2dissite default-ssl
    • sudo a2ensite gitorious
    • sudo a2ensite gitorious-ssl
    • sudo /etc/init.d/apache2 restart


  五、设置MySQL用户


  • mysql -u root -p
  • Enter password: (输入你在安装包时确定的Mysql根用户密码)
  • mysql> GRANT ALL PRIVILEGES ON *.* TO 'gitorious'@'localhost' IDENTIFIED BY '<输入密码>' WITH GRANT OPTION;
  • mysql> FLUSH PRIVILEGES;

  六、配置Gitorious


  • 首先确保所有gems版本的正确(安装时会询问你的sudo密码)

    • cd /var/www/gitorious/
    • bundle install
    • bundle pack


  • 再创建git系统用户

    • sudo adduser --system --home /var/www/gitorious/ --no-create-home --group --shell /bin/bash git
    • sudo chown -R git:git /var/www/gitorious


  • 然后创建一些Gitorious运行所需的东西

    • sudo su - git
    • mkdir .ssh
    • touch .ssh/authorized_keys
    • chmod 700 .ssh
    • chmod 600 .ssh/authorized_keys
    • mkdir tmp/pids
    • mkdir repositories
    • mkdir tarballs
    • mkdir tmp/tarballs-work
    • chmod ug+rwx repositories


  • 生成Gitorious的配置文件(注意:当前用户为git)

    • cp config/database.sample.yml config/database.yml
    • cp config/gitorious.sample.yml config/gitorious.yml
    • cp config/broker.yml.example config/broker.yml


  • 在Gitorious的database.yml配置文件中的production段中确保正确的数据库用户名和名字(注意:当前用户为git)
  • 在Gitorious的gitorious.yml配置文件中,要注意以下内容:

    • 确保在production而非test中修改
    • repository_base_path应该是/var/www/gitorious/repositories
    • cookie_secret应该设为多于30个字符的字符串,为了方便起见,你可以使用下列命令,然后将其输出复制到这里。

      • apg -m 64

    • gitorious_client_port应该设为80
    • gitorious_host应该设置成客户可以使用的主机名(否则Cookie会出错
    • archive_cache_dir应该设为/var/www/gitorious/tarballs
    • archive_work_dir应该设为/var/www/gitorious/tmp/tarballs-work
    • exception_notification_emails:你的邮箱
    • hide_http_clone_urls应该设为true(它们需要额外的安装工作)
    • is_gitorious_dot_org应该设false
    • public_mode应该设为false


  七、创建Gitorious数据库


  • 因为在RubyGems 1.6.0+ 并且 Rails < 2.3.11时存在BUG,本来可以在config/boot.rb文件的顶部添加下列语句来解决,但由于该文件注释要求不要改变,所以就只好麻烦点,添加到Rakefile文件和config/environment.rb文件的require(File.join(File.dirname(__FILE__), 'config', 'boot'))语句上方即可:

    • require 'thread'


  • 接下来的工作,我们让rake来做:

    • export RAILS_ENV=production
    • bundle exec rake db:create  RAILS_ENV=production
    • bundle exec rake db:migrate RAILS_ENV=production


  • 配置Sphinx搜索守护程序,将address设为localhost

    • vi /var/www/gitorious/config/ultrasphinx/default.base
    • # Daemon options
    • searchd
    • {
    •   # What interface the search daemon should listen on and where to store its logs
    •   address = localhost
    •   port = 3312
    •   .......


  • 然后继续用rake来为我们配置:

    • bundle exec rake ultrasphinx:bootstrap RAILS_ENV=production

    注意:本人在安装在这一步时出现一个错误,提示如下,详见第12行,于是本人查了一下数据库,打开文件/var/www/gitorious/config/ultrasphinx/production.conf,找到base_tags.name语句,将其改成tags,即可通过:

    • (in /var/www/gitorious)
    • Rebuilding configurations for production environment
    • Available models are Comment, Repository, MergeRequest, and Project
    • Generating SQL
    • $ indexer --config '/var/www/gitorious/config/ultrasphinx/production.conf' --all
    • Sphinx 0.9.9-release (r2117)
    • Copyright (c) 2001-2009, Andrew Aksyonoff

    • using config file '/var/www/gitorious/config/ultrasphinx/production.conf'...
    • WARNING: key 'address' is deprecated in /var/www/gitorious/config/ultrasphinx/production.conf line 10; use 'listen' instead.
    • indexing index 'main'...
    • ERROR: index 'main': sql_range_query: Unknown column 'base_tags.name' in 'field list' (DSN=mysql://gitorious:***@localhost:3306/gitorious_production).
    • total 0 docs, 0 bytes
    • total 0.005 sec, 0 bytes/sec, 0.00 docs/sec
    • total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
    • total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
    • Sphinx 0.9.9-release (r2117)
    • Copyright (c) 2001-2009, Andrew Aksyonoff

    • using config file '/var/www/gitorious/config/ultrasphinx/production.conf'...
    • WARNING: key 'address' is deprecated in /var/www/gitorious/config/ultrasphinx/production.conf line 10; use 'listen' instead.
    • listening on 127.0.0.1:3312
    • WARNING: index 'main': preload: failed to open /var/www/gitorious/db/sphinx//sphinx_index_main.sph: No such file or directory; NOT SERVING
    • FATAL: no valid indexes to serve
    • Failed to start
    • Done
    • Please restart your application containers

  • 创建Sphinx Cronjob

    • crontab -e * * * * * cd /var/www/gitorious && /usr/bin/bundle exec  




  • 创建管理员用户

    • env RAILS_ENV=production ruby1.8 script/create_admin

  八、重启机器后你就可以在Ubuntu 11.10上完成Gitorious的安装了!OK!打完收功!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-457112-1-1.html 上篇帖子: Linux/Ubuntu sudo不用输入密码的方法(转) 下篇帖子: ubuntu gedit编辑器乱码问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表