{"id":4605,"date":"2021-08-15T15:12:09","date_gmt":"2021-08-15T07:12:09","guid":{"rendered":"http:\/\/blog.ywdevops.cn\/?p=4605"},"modified":"2024-03-22T11:20:46","modified_gmt":"2024-03-22T03:20:46","slug":"gitlab","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2021\/08\/15\/gitlab\/","title":{"rendered":"gitlab\u7684\u5b89\u88c5\u4ee5\u53ca\u4f7f\u7528"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u4e00\u3001\u6982\u8ff0<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitLab\u662f\u5229\u7528Ruby on Rails\u4e00\u4e2a\u5f00\u6e90\u7684\u7248\u672c\u7ba1\u7406\u7cfb\u7edf\uff0c\u5b9e\u73b0\u4e00\u4e2a\u81ea\u6258\u7ba1\u7684Git\u9879\u76ee\u4ed3\u5e93\uff0c\u53ef\u901a\u8fc7Web\u754c\u9762\u8fdb\u884c\u8bbf\u95ee\u516c\u5f00\u7684\u6216\u8005\u79c1\u4eba\u9879\u76ee\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitLab\u80fd\u591f\u6d4f\u89c8\u6e90\u4ee3\u7801\uff0c\u7ba1\u7406\u7f3a\u9677\u548c\u6ce8\u91ca\u3002\u53ef\u4ee5\u7ba1\u7406\u56e2\u961f\u5bf9\u4ed3\u5e93\u7684\u8bbf\u95ee\uff0c\u5b83\u975e\u5e38\u6613\u4e8e\u6d4f\u89c8\u63d0\u4ea4\u8fc7\u7684\u7248\u672c\u5e76\u63d0\u4f9b\u4e00\u4e2a\u6587\u4ef6\u5386\u53f2\u5e93\u3002\u56e2\u961f\u6210\u5458\u53ef\u4ee5\u5229\u7528\u5185\u7f6e\u7684\u7b80\u5355\u804a\u5929\u7a0b\u5e8f(Wall)\u8fdb\u884c\u4ea4\u6d41\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u8fd8\u63d0\u4f9b\u4e00\u4e2a\u4ee3\u7801\u7247\u6bb5\u6536\u96c6\u529f\u80fd\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u4ee3\u7801\u590d\u7528\uff0c\u4fbf\u4e8e\u65e5\u540e\u6709\u9700\u8981\u7684\u65f6\u5019\u8fdb\u884c\u67e5\u627e <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u4e8c\u3001Gitlab\u670d\u52a1\u6784\u6210<\/mark><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> Nginx\uff1a\u9759\u6001web\u670d\u52a1\u5668 <\/li>\n\n\n\n<li> gitlab-shell\uff1a\u7528\u4e8e\u5904\u7406Git\u547d\u4ee4\u548c\u4fee\u6539authorized keys\u5217\u8868<\/li>\n\n\n\n<li> gitlab-workhorse: \u8f7b\u91cf\u7ea7\u7684\u53cd\u5411\u4ee3\u7406\u670d\u52a1\u5668<\/li>\n\n\n\n<li> logrotate\uff1a\u65e5\u5fd7\u6587\u4ef6\u7ba1\u7406\u5de5\u5177 <\/li>\n\n\n\n<li> postgresql\uff1a\u6570\u636e\u5e93 <\/li>\n\n\n\n<li> redis\uff1a\u7f13\u5b58\u6570\u636e\u5e93 <\/li>\n\n\n\n<li> sidekiq\uff1a\u7528\u4e8e\u5728\u540e\u53f0\u6267\u884c\u961f\u5217\u4efb\u52a1\uff08\u5f02\u6b65\u6267\u884c\uff09 <\/li>\n\n\n\n<li> unicorn\uff1aAn HTTP server for Rack applications\uff0cGitLab Rails\u5e94\u7528\u662f\u6258\u7ba1\u5728\u8fd9\u4e2a\u670d\u52a1\u5668\u4e0a\u9762\u7684 <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Gitlab\u5de5\u4f5c\u6d41\u7a0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"983\" height=\"519\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/1-1.png\" alt=\"\" class=\"wp-image-4606\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/1-1.png 983w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/1-1-300x158.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/1-1-768x405.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/1-1-600x317.png 600w\" sizes=\"auto, (max-width: 768px) calc(100vw - 40px), (max-width: 1200px) 550px, (max-width: 1400px) 730px, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">GitLab Shell\u6709\u4e24\u4e2a\u4f5c\u7528\uff1a\u4e3aGitLab\u5904\u7406Git\u547d\u4ee4\u3001\u4fee\u6539authorized keys\u5217\u8868<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> \u9650\u5236\u6267\u884c\u9884\u5b9a\u4e49\u597d\u7684Git\u547d\u4ee4\uff08git push\uff0cgit pull\uff0cgit annex\uff09 <\/li>\n\n\n\n<li> \u8c03\u7528GitLab Rails API\u68c0\u67e5\u6743\u9650 <\/li>\n\n\n\n<li> \u6267\u884cpre-receive\u94a9\u5b50\uff08\u5728\u4f01\u4e1a\u7248\u4e2d\u53eb\u505aGit\u94a9\u5b50\uff09 <\/li>\n\n\n\n<li> \u6267\u884c\u7528\u6237\u8bf7\u6c42\u7684\u52a8\u4f5c\uff0c\u5904\u7406GitLab\u7684post-receive\u52a8\u4f5c <\/li>\n\n\n\n<li> \u5904\u7406\u81ea\u5b9a\u4e49\u7684post-receive\u52a8\u4f5c <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u901a\u8fc7http(s)\u8bbf\u95eeGitLab Server\u65f6\uff0c\u5de5\u4f5c\u6d41\u7a0b\u53d6\u51b3\u4e8e\u4f60\u662f\u4eceGit\u4ed3\u5e93\u62c9\u53d6(pull)\u4ee3\u7801\u8fd8\u662f\u5411git\u4ed3\u5e93\u63a8\u9001(push)\u4ee3\u7801\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li> \u5982\u679c\u662f\u4eceGit\u4ed3\u5e93\u62c9\u53d6(pull)\u4ee3\u7801\uff0cGitLab Rails\u5e94\u7528\u4f1a\u5168\u6743\u8d1f\u8d23\u5904\u7406\u7528\u6237\u9274\u6743\u548c\u6267\u884cGit\u547d\u4ee4\u7684\u5de5\u4f5c <\/li>\n\n\n\n<li> \u5982\u679c\u662f\u5411Git\u4ed3\u5e93\u63a8\u9001(push)\u4ee3\u7801\uff0cGitLab Rails\u5e94\u7528\u65e2\u4e0d\u4f1a\u8fdb\u884c\u7528\u6237\u9274\u6743\u4e5f\u4e0d\u4f1a\u6267\u884cGit\u547d\u4ee4\uff0c\u5b83\u4f1a\u628a\u4ee5\u4e0b\u5de5\u4f5c\u4ea4\u7531GitLab Shell\u8fdb\u884c\u5904\u7406<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>1\u3001\u8c03\u7528GitLab Rails API \u68c0\u67e5\u6743\u9650\n2\u3001\u6267\u884cpre-receive\u94a9\u5b50\uff08\u5728GitLab\u4f01\u4e1a\u7248\u4e2d\u53eb\u505aGit\u94a9\u5b50\uff09\n3\u3001\u6267\u884c\u4f60\u8bf7\u6c42\u7684\u52a8\u4f5c\n4\u3001\u5904\u7406GitLab\u7684post-receive\u52a8\u4f5c\n5\u3001\u5904\u7406\u81ea\u5b9a\u4e49\u7684post-receive\u52a8\u4f5c<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GitLab Workhorse\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitLab Workhorse\u662f\u4e00\u4e2a\u654f\u6377\u7684\u53cd\u5411\u4ee3\u7406\u3002\u5b83\u4f1a\u5904\u7406\u4e00\u4e9b\u5927\u7684HTTP\u8bf7\u6c42\uff0c\u6bd4\u5982\u6587\u4ef6\u4e0a\u4f20\u3001\u6587\u4ef6\u4e0b\u8f7d\u3001Git push\/pull\u548cGit\u5305\u4e0b\u8f7d\u3002\u5176\u5b83\u8bf7\u6c42\u4f1a\u53cd\u5411\u4ee3\u7406\u5230GitLab Rails\u5e94\u7528\uff0c\u5373\u53cd\u5411\u4ee3\u7406\u7ed9\u540e\u7aef\u7684unicorn\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u4e09\u3001\u90e8\u7f72<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u57fa\u7840\u73af\u5883\u8981\u6c42\uff1a\u670d\u52a1\u5668\u5185\u5b58\u81f3\u5c112G\u4ee5\u4e0a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u65b9\u6cd5\u4e00\uff1a\u4e0b\u8f7dgitlab-ce\u7684rpm\u5305\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u901a\u8fc7\u6e05\u534e\u5927\u5b66\u7684\u6e90\u5730\u5740\u8fdb\u884c\u4e0b\u8f7d\uff1ahttps:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-ce\/yum\/el7\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u5c06\u5bf9\u5e94\u7248\u672c\u7684gitlab-ce\u4e0b\u8f7d\u5230\u672c\u5730\u540e\uff0c\u76f4\u63a5yum\u5b89\u88c5\u5373\u53ef \uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u8981\u5148\u5c06\u8fd9\u4e2arpm\u5305\u4e0b\u8f7d\u5230\u672c\u5730\nyum install -y gitlab-ce-13.6.1-ce.0.el7.x86_64.rpm<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9ed8\u8ba4\u5b89\u88c5\u5728\/var\/opt\/gitlab\u76ee\u5f55\u4e0b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u65b9\u6cd5\u4e8c\uff1a\u914d\u7f6eyum\u6e90\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u5728 \/etc\/yum.repos.d\/ \u4e0b\u65b0\u5efa gitlab-ce.repo\uff0c\u5199\u5165\u5982\u4e0b\u5185\u5bb9\uff1a <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;gitlab-ce]\nname=gitlab-ce\nbaseurl=https:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-ce\/yum\/el7\/\nRepo_gpgcheck=0\nEnabled=1\nGpgkey=https:\/\/packages.gitlab.com\/gpg.key<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \u7136\u540e\u521b\u5efacache\uff0c\u518d\u76f4\u63a5\u5b89\u88c5gitlab-ce \uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum makecache  # \u8fd9\u4e00\u6b65\u4f1a\u521b\u5efa\u5927\u91cf\u7684\u6570\u636e\n\n# \u76f4\u63a5\u5b89\u88c5\u6700\u65b0\u7248\nyum install -y gitlab-ce \n\n# \u5982\u679c\u8981\u5b89\u88c5\u6307\u5b9a\u7684\u7248\u672c\uff0c\u5728\u540e\u9762\u586b\u4e0a\u7248\u672c\u53f7\u5373\u53ef\nyum install -y  gitlab-ce-13.6.1\n\n# \u5982\u679c\u5b89\u88c5\u65f6\u51fa\u73b0gpgkey\u9a8c\u8bc1\u9519\u8bef\uff0c\u53ea\u9700\u5728\u5b89\u88c5\u65f6\u660e\u786e\u6307\u660e\u4e0d\u8fdb\u884cgpgkey\u9a8c\u8bc1\nyum install gitlab-ce -y --nogpgcheck<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770bgitlab\u7248\u672c\u7684\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-rake gitlab:env:info<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u4fee\u6539gitlab\u7684\u914d\u7f6e\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e&nbsp; \/etc\/gitlab\/gitlab.rb\uff0c\u53ef\u5c06\u4e00\u4e9b\u4e0d\u9700\u8981\u7684\u914d\u7f6e\u4fee\u6539\u4e3afalse\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"337\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/1-6.jpg\" alt=\"\" class=\"wp-image-16405\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/1-6.jpg 697w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/1-6-300x145.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/1-6-600x290.jpg 600w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u7684\u90fd\u662f\u53ef\u4e0d\u542f\u52a8\u7684\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u542f\u52a8\u7684\uff0c\u53ef\u5148\u5c06\u6ce8\u91ca\u53bb\u6389\uff0c\u7136\u540e\u4fee\u6539true\u4e3afalse\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"88\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/3-6.jpg\" alt=\"\" class=\"wp-image-16406\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/3-6.jpg 696w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/3-6-300x38.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/3-6-600x76.jpg 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539URL\u5730\u5740\uff0cIP\u5c31\u662fgitlab\u6240\u5728\u7684\u673a\u5668IP\uff0c\u7aef\u53e3\u53ef\u81ea\u5b9a\u4e49\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"120\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/4-7.jpg\" alt=\"\" class=\"wp-image-16407\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/4-7.jpg 696w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/4-7-300x52.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/4-7-600x103.jpg 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u7684external_url\u5b9e\u9645\u5bf9\u5e94\u7684\u662f\u4e00\u4e2aNGINX\u5730\u5740\uff0c\u540e\u7eed\u4f7f\u7528\u6b64\u5730\u5740\u6253\u5f00gitlab<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539\u597d\u914d\u7f6e\u6587\u4ef6\u540e\uff0c\u8981\u4f7f\u7528 gitlab-ctl reconfigure \u547d\u4ee4\u91cd\u8f7d\u4e00\u4e0b\u914d\u7f6e\u6587\u4ef6\uff0c\u5426\u5219\u4e0d\u751f\u6548<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-ctl reconfigure # \u91cd\u8f7d\u914d\u7f6e\u6587\u4ef6\n#\u6ce8\u610f\uff1a\u91cd\u8f7d\u914d\u7f6e\u6587\u4ef6\u7684\u65f6\u5019\uff0c\u4f1a\u5c06\u5176\u4f59\u76f8\u5173\u7ec4\u4ef6\u90fd\u5b89\u88c5\u5230\u672c\u5730\u4e2d\uff0c\u7ec4\u4ef6\u90fd\u5728\u4e0b\u8f7d\u7684gitlab\u7684rpm\u5305\u91cc\u96c6\u6210\u597d\u4e86<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521d\u59cb\u5316\u540e\u7684\u9875\u9762\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"359\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/2-1.png\" alt=\"\" class=\"wp-image-4608\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/2-1.png 928w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/2-1-300x116.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/2-1-768x297.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/2-1-600x232.png 600w\" sizes=\"auto, (max-width: 768px) calc(100vw - 40px), (max-width: 1200px) 550px, (max-width: 1400px) 730px, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u56fe\u4e2d\u9ec4\u7ebf\u533a\u57df\u6587\u4ef6\u4e2d\u4e3aroot\u7528\u6237\u7684\u521d\u59cb\u5bc6\u7801\uff0c\u53ef\u901a\u8fc7\u6b64\u5bc6\u7801\u767b\u5f55gitlab<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u4fee\u6539root\u7528\u6237\u5bc6\u7801\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u901a\u8fc7IP\u548c\u7aef\u53e3\u767b\u5f55gitlab\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"299\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/5-6.jpg\" alt=\"\" class=\"wp-image-16409\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/5-6.jpg 692w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/5-6-300x130.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/5-6-600x259.jpg 600w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u70b9\u51fb\u53f3\u4e0a\u89d2\u7684\u5934\u50cf\u4e0b\u65b9\u7684\u7528\u6237\u6309\u94ae\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"836\" height=\"408\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/3-1.png\" alt=\"\" class=\"wp-image-4610\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/3-1.png 836w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/3-1-300x146.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/3-1-768x375.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/3-1-600x293.png 600w\" sizes=\"auto, (max-width: 836px) 100vw, 836px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u6253\u5f00\u9875\u9762\u4e2d\uff0c\u70b9\u51fb\u53f3\u4fa7\u7684\u7f16\u8f91\u6309\u94ae\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"373\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/4-1.png\" alt=\"\" class=\"wp-image-4611\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/4-1.png 769w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/4-1-300x146.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/4-1-600x291.png 600w\" sizes=\"auto, (max-width: 769px) 100vw, 769px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u70b9\u51fb\u5de6\u4fa7\u7684Password\u6309\u94ae\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"798\" height=\"381\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/5-1.png\" alt=\"\" class=\"wp-image-4612\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/5-1.png 798w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/5-1-300x143.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/5-1-768x367.png 768w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2021\/08\/5-1-600x286.png 600w\" sizes=\"auto, (max-width: 798px) 100vw, 798px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539\u4e4b\u540e\u901a\u8fc7\u65b0\u5bc6\u7801\u767b\u5f55\u5373\u53ef<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001Gitlab\u5e38\u7528\u547d\u4ee4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-ctl start         # \u542f\u52a8\u6240\u6709 gitlab \u7ec4\u4ef6\ngitlab-ctl stop          # \u505c\u6b62\u6240\u6709 gitlab \u7ec4\u4ef6\ngitlab-ctl restart       # \u91cd\u542f\u6240\u6709 gitlab \u7ec4\u4ef6\ngitlab-ctl status        # \u67e5\u770b\u670d\u52a1\u72b6\u6001\n\ngitlab-ctl reconfigure   # \u542f\u52a8\u670d\u52a1\ngitlab-ctl show-config   # \u9a8c\u8bc1\u914d\u7f6e\u6587\u4ef6\n\ngitlab-ctl tail          # \u67e5\u770b\u65e5\u5fd7\n\ngitlab-rake gitlab:check SANITIZE=true --trace    # \u68c0\u67e5gitlab\n\nvim \/etc\/gitlab\/gitlab.rb # \u4fee\u6539\u9ed8\u8ba4\u7684\u914d\u7f6e\u6587\u4ef6<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u56db\u3001\u4fee\u6539\u9ed8\u8ba4\u7aef\u53e3<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">gitlab\u7684\u9ed8\u8ba4\u7aef\u53e3\u4e3a80\uff0c\u5982\u679c\u8981\u4fee\u6539\u4e3a\u5176\u4ed6\u7aef\u53e3\uff0c\u53ef\u901a\u8fc7\u5982\u4e0b\u65b9\u5f0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u7f16\u8f91gitlab.rb\u914d\u7f6e\u6587\u4ef6\uff0c\u4fee\u6539\u5176\u4e2d\u7684\u76d1\u542c\u7aef\u53e3\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/etc\/gitlab\/gitlab.rb\nexternal_url 'http:\/\/10.9.2.247:8081'  #\u5728IP\u540e\u9762\u6dfb\u52a0\u7aef\u53e38081\nnginx&#91;'listen_port'] = 8081            #\u53d6\u6d88\u6389\u6ce8\u91ca\uff0c\u5e76\u4fee\u6539\u7aef\u53e3\u4e3a8081<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u7f16\u8f91gitlab-http.conf\u6587\u4ef6\uff0c\u4fee\u6539\u5176\u4e2d\u7aef\u53e3\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/var\/opt\/gitlab\/nginx\/conf\/gitlab-http.conf<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"163\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/6-5.png\" alt=\"\" class=\"wp-image-13242\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/6-5.png 706w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/6-5-300x69.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/6-5-600x139.png 600w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u91cd\u542fgitlab\uff0c\u6267\u884c\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-ctl restart<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u901a\u8fc78081\u7aef\u53e3\u8bbf\u95ee\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"280\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/7-5.png\" alt=\"\" class=\"wp-image-13244\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/7-5.png 709w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/7-5-300x118.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2023\/04\/7-5-600x237.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e94\u3001\u5907\u4efd<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u5982\u4e0b\u547d\u4ee4\u5373\u53ef\u5b8c\u6210\u5907\u4efd\uff0c\u6b64\u547d\u4ee4\u4f1a\u5907\u4efd\u4ed3\u5e93\u3001\u6570\u636e\u5e93\u3001\u7528\u6237\u3001\u7528\u6237\u7ec4\u3001\u5bc6\u94a5\u3001\u6743\u9650\u7b49\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-rake  gitlab:backup:create      #\u5907\u4efd\u6570\u636e\ncp \/etc\/gitlab\/gitlab.rb               #\u5907\u4efd\u914d\u7f6e\u6587\u4ef6<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u5b8c\u6210\u540e\uff0c\u4f1a\u5728\/var\/opt\/gitlab\/backups\u76ee\u5f55\u4e0b\u751f\u6210\u4e00\u4e2atar\u5305<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u516d\u3001\u6062\u590d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u505c\u6b62gitlab\uff0c\u9632\u6b62\u6570\u636e\u4e0d\u4e00\u81f4\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-ctl stop<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u5728\u65b0\u673a\u5668\u5b89\u88c5\u5b8cgitlab\u540e(\u5047\u8bbe\u662fyum\u5b89\u88c5)\uff0c\u590d\u5236\u914d\u7f6e\u6587\u4ef6\u8fc7\u53bb\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp gitlab.rb \/etc\/gitlab\/          #\u5907\u4efd\u7684\u914d\u7f6e\u6587\u4ef6\u66ff\u6362\u5230\u65b0\u7684<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u5728\u65b0\u673a\u5668\u6267\u884c\u547d\u4ee4\u6062\u590d\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gitlab-rake gitlab:backup:restore BACKUP=backupfile.tar #\u5907\u4efd\u751f\u6210\u7684tar\u5305<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u52a0\u8f7dgitlab\u914d\u7f6e\uff0c\u7136\u540e\u542f\u52a8gitlab\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> gitlab-ctl reconfigure\n gitlab-ctl start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u51fa\u73b0redis\u5f02\u5e38\uff0c\u90a3\u5c31\u91cd\u542f\u670d\u52a1\u5668\uff0c\u5e94\u8be5\u5c31\u53ef\u4ee5\u6062\u590d\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u6267\u884c\u6062\u590d\u540e\uff0c\u539f\u6709\u7684gitlab\u4e2d\u914d\u7f6e\u7684person access tokens\u4f1a\u5931\u6548\uff0c\u9700\u8981\u91cd\u7f6e\uff0c\u914d\u7f6e\u7684\u516c\u94a5\u4e0d\u4f1a\u5931\u6548<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e03\u3001\u5fd8\u8bb0root\u5bc6\u7801\uff0c\u91cd\u7f6e<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u9996\u5148\u767b\u5f55gitlab\u670d\u52a1\u5668\u63a7\u5236\u53f0\uff0c\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"140\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/6-6.jpg\" alt=\"\" class=\"wp-image-16411\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/6-6.jpg 697w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/6-6-300x60.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/6-6-600x121.jpg 600w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u67e5\u627e\u7528\u6237\u4e3aroot\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"49\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/7-6.jpg\" alt=\"\" class=\"wp-image-16412\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/7-6.jpg 696w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/7-6-300x21.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/7-6-600x42.jpg 600w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u8bbe\u7f6eroot\u5bc6\u7801\uff0c\u7136\u540e\u4fdd\u5b58\u8bbe\u7f6e\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"143\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/8-7.jpg\" alt=\"\" class=\"wp-image-16413\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/8-7.jpg 697w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/8-7-300x62.jpg 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2024\/03\/8-7-600x123.jpg 600w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<p class=\"has-luminous-vivid-amber-background-color has-background wp-block-paragraph\">\u6ce8\uff1a\u5bc6\u7801\u8981\u7a0d\u5fae\u590d\u6742\u4e00\u4e9b\uff0c\u5426\u5219user.save\u4f1a\u63d0\u793afalse<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u6982\u8ff0 GitLab\u662f\u5229\u7528Ruby on Rails\u4e00\u4e2a\u5f00\u6e90\u7684\u7248\u672c\u7ba1\u7406\u7cfb\u7edf\uff0c\u5b9e\u73b0\u4e00\u4e2a\u81ea\u6258\u7ba1\u7684Git\u9879\u76ee\u4ed3\u5e93\uff0c&#8230;<\/p>\n","protected":false},"author":3,"featured_media":4613,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,22],"tags":[],"class_list":["post-4605","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-server"],"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/4605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=4605"}],"version-history":[{"count":16,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/4605\/revisions"}],"predecessor-version":[{"id":16623,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/4605\/revisions\/16623"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/4613"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=4605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=4605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=4605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}