{"id":1025,"date":"2014-08-25T11:48:14","date_gmt":"2014-08-25T03:48:14","guid":{"rendered":"https:\/\/cowman-chiang.no-ip.org\/wordpress\/?p=1025"},"modified":"2019-06-20T10:24:41","modified_gmt":"2019-06-20T02:24:41","slug":"git-server-%e5%ae%89%e8%a3%9d","status":"publish","type":"post","link":"https:\/\/cowmanchiang.me\/wp\/?p=1025","title":{"rendered":"Git Server \u5b89\u88dd"},"content":{"rendered":"<h1>OS: Ubuntu 12.04 Desktop x64<\/h1>\n<h1>\u5b89\u88ddGitlab + MySQL<\/h1>\n<ol>\n<li>\u7cfb\u7d71\u66f4\u65b0<\/li>\n<\/ol>\n<pre lang=\"bash\">\napt-get update\napt-get upgrade -y\napt-get dist-upgrade\n<\/pre>\n<ol>\n<li>\u5b89\u88dd\u57fa\u672c\u9700\u6c42<\/li>\n<\/ol>\n<pre lang=\"bash\">\nupdate-alternatives --set editor \/usr\/bin\/vim.basic\nsudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate\n<\/pre>\n<ol>\n<li>\u5b89\u88ddpython<\/li>\n<\/ol>\n<pre lang=\"bash\">\nsudo apt-get install -y python\npython --version\npython2 --version\n# \u78ba\u8a8d python\u7248\u672c\uff0c\u5982\u679c\u7248\u672c\u662f3.x\u4ee5\u4e0a\uff0c\u5247\u9700\u984d\u5916\u5b89\u88dd2.x\u7248\n# sudo apt-get install -y python2.7\n# python --version # Python 2.7.3\n\n# python2 --version # \u547d\u4ee4\u57f7\u884c\u6703\u63a1\u7528 python2, \u6240\u4ee5\u9700\u8981\u78ba\u8a8d python2 \u7684\u7248\u672c\n# python2 \u4e0d\u5b58\u5728\u7684\u8a71, \u9700\u8981\u628a python 2.7 \u7248 \u7684 ln \u904e\u53bb.\n# sudo ln -s \/usr\/bin\/python \/usr\/bin\/python2\n\napt-get install -y python-docutils\n<\/pre>\n<ol>\n<li>\u5b89\u88ddGit<\/li>\n<\/ol>\n<pre lang=\"bash\">\n# \u6aa2\u67e5Git\u76ee\u524d\u53efapt\u5b89\u88dd\u7684\u7248\u672c\napt-cache showpkg git-core\n\n# \u5982\u679c\u7248\u672c\u5927\u65bc1.7.10\uff0c\u5247\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528~\u5426\u5247\u5efa\u8b70\u624b\u52d5\u5b89\u88dd\u65b0\u7248\u672c\n# \u76f4\u63a5\u5b89\u88dd => apt-get install -y git-core\n# \u5982\u679c\u539f\u672c\u5c31\u5b89\u88dd\u820a\u6709\u7248\u672c\uff0c\u79fb\u9664 => apt-get remove git-core\n\n# \u624b\u52d5\u5b89\u88ddGit\napt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential\ncd \/tmp\ncurl --progress https:\/\/git-core.googlecode.com\/files\/git-1.9.0.tar.gz | tar xz\ncd git-1.9.0\/\nmake prefix=\/usr\/local all\nmake prefix=\/usr\/local install\n<\/pre>\n<ol>\n<li>\u5b89\u88ddpostfix\uff0c\u4ee5\u4fbf\u5f8c\u7e8c\u63d0\u4f9b\u767c\u4fe1\u670d\u52d9<\/li>\n<\/ol>\n<pre lang=\"bash\">\n# \u9078\u64c7Internet Site\u4e26\u8f38\u5165Domain Name\napt-get install -y postfix\n<\/pre>\n<ol>\n<li>\u5b89\u88ddRuby<\/li>\n<\/ol>\n<pre lang=\"bash\">\n# \u5982\u679c\u88dd\u67091.8\u7248\uff0c\u5148\u884c\u79fb\u9664\n# apt-get remove ruby1.8\n\nmkdir \/tmp\/ruby && cd \/tmp\/ruby\ncurl --progress ftp:\/\/ftp.ruby-lang.org\/pub\/ruby\/2.0\/ruby-2.0.0-p481.tar.gz | tar xz\ncd ruby-2.0.0-p481\/\n.\/configure --disable-install-rdoc\nmake -j  `cat \/proc\/cpuinfo | grep 'cpu cores' | awk '{if ($4=1) print $4; else print $4-1}'`\nmake install\ngem install bundler --no-ri --no-rdoc\n<\/pre>\n<ol>\n<li>\u65b0\u589eGitlab\u7cfb\u7d71\u5e33\u865f<\/li>\n<\/ol>\n<pre lang=\"bash\">\nadduser --disabled-login --gecos 'GitLab' git\n<\/pre>\n<ol>\n<li>\u5b89\u88ddGitLab Shell<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncd \/home\/git\nsudo -u git -H git clone https:\/\/github.com\/gitlabhq\/gitlab-shell.git\ncd gitlab-shell\n\n#\u67e5\u770b\u6700\u65b0\u7248\u672c\u70ba\u4f55\nsudo -u git -H git tag \n\nsudo -u git -H git checkout v1.9.6\nsudo -u git -H cp config.yml.example config.yml\n\n#\u4fee\u6539gitlab_url\uff0c\u6539\u6210\u8981\u4f7f\u7528\u7684domain\nsudo -u git -H editor config.yml\n\nsudo -u git -H .\/bin\/install\n<\/pre>\n<ol>\n<li>\u5b89\u88ddMySQL Database<\/li>\n<\/ol>\n<pre lang=\"bash\">\napt-get install -y mysql-server mysql-client libmysqlclient-dev\nmysql -u root -p\n> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'GITLAB_PASSWORD';\n> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;\n>GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';\n\n# \u4f7f\u7528gitlab\u5e33\u865f\u6e2c\u8a66MySQL\nsudo -u git -H mysql -u gitlab -p -D gitlabhq_production\n<\/pre>\n<ol>\n<li>\u5b89\u88ddGitLab<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncd \/home\/git\nsudo -u git -H git clone https:\/\/github.com\/gitlabhq\/gitlabhq.git gitlab\ncd \/home\/git\/gitlab\n\n# \u6aa2\u67e5\u7248\u672c\uff0c\u627estable\u7684\nsudo -u git -H git branch -a\n\nsudo -u git -H git checkout 7-0-stable\n<\/pre>\n<ol>\n<li>\u8a2d\u5b9aGitLab<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncd \/home\/git\/gitlab\nsudo -u git -H cp config\/gitlab.yml.example config\/gitlab.yml\n\n# \u6240\u6709 localhost \u6539\u6210\u8981\u4f7f\u7528\u7684domain. \n# \/usr\/bin\/git \u6539\u6210 \/usr\/local\/bin\/git\nsudo -u git -H editor config\/gitlab.yml\n\n#\u8abf\u6574\u6a94\u6848\u6b0a\u9650\nchown -R git log\/\nchown -R git tmp\/\nchmod -R u+rwX  log\/\nchmod -R u+rwX  tmp\/\nsudo -u git -H mkdir \/home\/git\/gitlab-satellites\nsudo -u git -H mkdir tmp\/pids\/\nsudo -u git -H mkdir tmp\/sockets\/\nchmod -R u+rwX  tmp\/pids\/\nchmod -R u+rwX  tmp\/sockets\/\nsudo -u git -H mkdir public\/uploads\nchmod -R u+rwX  public\/uploads\nsudo -u git -H cp config\/unicorn.rb.example config\/unicorn.rb\nchmod -R u+rwX  public\/uploads\nsudo -u git -H mkdir public\/uploads\n\n#\u5982\u679c\u786c\u9ad4\u8a18\u61b6\u9ad4\u898f\u683c\u8d85\u904e2G\uff0c\u53ef\u5c07worker_processes\u6539\u62103\n#sudo -u git -H editor config\/unicorn.rb\n\nsudo -u git -H cp config\/initializers\/rack_attack.rb.example config\/initializers\/rack_attack.rb\nsudo -u git -H git config --global user.name \"GitLab\"\nsudo -u git -H git config --global user.email \"gitlab@localhost\"\nsudo -u git -H git config --global core.autocrlf input\n<\/pre>\n<ol>\n<li>GitLab DB\u8a2d\u8a08<\/li>\n<\/ol>\n<pre lang=\"bash\">\nsudo -u git cp config\/database.yml.mysql config\/database.yml\n\n# \u5c07production\u5340\u584a\u7684secure password\u503c\u6539\u6210MySQL gitlab\u5e33\u865f\u8a2d\u5b9a\u7684\u5e33\u865f\u3001\u5bc6\u78bc\nsudo -u git -H editor config\/database.yml\n\nsudo -u git -H chmod o-rwx config\/database.yml\n<\/pre>\n<ol>\n<li>\u5b89\u88ddGems<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncd \/home\/git\/gitlab\nsudo -u git -H bundle install --deployment --without development test postgres aws\n<\/pre>\n<ol>\n<li>\u521d\u59cb\u5316 Database<\/li>\n<\/ol>\n<pre lang=\"bash\">\n# \u554f\u5565\u5c31\u8f38\u5165yes\u4ee5\u4fbf\u5efa\u7acbDatabase\nsudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production\n# \u53d6\u5f97\u7cfb\u7d71\u9810\u8a2d\u5e33\u865f\u3001\u5bc6\u78bc (\u6240\u6709\u65b0\u5b89\u88dd\u90fd\u4e00\u6a23\uff0c\u52d9\u5fc5\u8981\u66f4\u6539)\nAdministrator account created:\n    login.........admin@local.host\n    password......5iveL!fe\n<\/pre>\n<ol>\n<li>\u8a2d\u5b9a\u958b\u6a5f\u81ea\u52d5\u555f\u52d5<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncp lib\/support\/init.d\/gitlab \/etc\/init.d\/gitlab\nchmod +x \/etc\/init.d\/gitlab\nupdate-rc.d gitlab defaults 21\n<\/pre>\n<ol>\n<li>\u8a2d\u5b9aLogtotate<\/li>\n<\/ol>\n<pre lang=\"bash\">\ncp lib\/support\/logrotate\/gitlab \/etc\/logrotate.d\/gitlab\n<\/pre>\n<ol>\n<li>\u6aa2\u67e5GitLab\u61c9\u7528\u7a0b\u5f0f\u8a2d\u5b9a\u72c0\u614b<\/li>\n<\/ol>\n<pre lang=\"bash\">\nsudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production\n<\/pre>\n<ol>\n<li>\u555f\u52d5GitLab<\/li>\n<\/ol>\n<pre lang=\"bash\">\nservice gitlab start\n<\/pre>\n<p>19.\u5b89\u88dd\u3001\u8a2d\u5b9aapache2<\/p>\n<pre lang=\"bash\">\napt-get install apache2\ncd \/tmp\nwget https:\/\/raw.github.com\/gitlabhq\/gitlab-recipes\/master\/web-server\/apache\/gitlab.conf\n\n# \u4fee\u6539ServerName => \u4f7f\u7528\u7684Domain\n# \u4fee\u6539ProxyPassServerse => (http:\/\/127.0.0.1:8080) \u53ca (http:\/\/\u4f7f\u7528\u7684domain)\n# \u4fee\u6539Log => \/var\/log\/httpd\/logs\/ \u6539\u6210 \/var\/log\/apache2\/\nvim gitlab.conf\n\nmv gitlab.conf \/etc\/apache2\/sites-enabled\/\n\n# \u5c07\u6574\u500b\u6a94\u6848\u8a3b\u89e3\uff0c\u6700\u524d\u9762\u52a0\u4e0a'#'\nvim \/etc\/apache2\/sites-enabled\/000-default\n\na2enmod  rewrite proxy proxy_http\nservice apache2 restart\n<\/pre>\n<ol>\n<li>\u7528\u7db2\u9801\u9023\u7dda\u5230http:\/\/\u4f7f\u7528\u7684domain\u4ee5\u4e0a\u9762\u53d6\u5f97\u7684\u5e33\u865f\u5bc6\u78bc\u9032\u884c\u6e2c\u8a66<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>OS: Ubuntu 12.04 Desktop x64 \u5b89\u88ddGitlab + MySQL \u7cfb\u7d71\u66f4\u65b0 apt-get update apt-get upgrade -y apt-get dist-upgrade \u5b89\u88dd\u57fa\u672c\u9700\u6c42 update-alternatives &#8211;set editor \/usr\/bin\/vim.basic sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev &hellip; <a href=\"https:\/\/cowmanchiang.me\/wp\/?p=1025\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,82],"tags":[],"class_list":["post-1025","post","type-post","status-publish","format-standard","hentry","category-git","category-ubuntu"],"_links":{"self":[{"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1025"}],"version-history":[{"count":1,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1025\/revisions"}],"predecessor-version":[{"id":2029,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1025\/revisions\/2029"}],"wp:attachment":[{"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cowmanchiang.me\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}