{"id":863,"date":"2023-02-26T00:39:24","date_gmt":"2023-02-25T16:39:24","guid":{"rendered":"https:\/\/explause.com\/?p=863"},"modified":"2023-02-26T00:39:24","modified_gmt":"2023-02-25T16:39:24","slug":"%e5%9f%ba%e4%ba%8ecentos%e6%90%ad%e5%bb%ba%e8%87%aa%e5%b7%b1%e7%9a%84git%e4%bb%93%e5%ba%93","status":"publish","type":"post","link":"https:\/\/devdoge.org\/?p=863","title":{"rendered":"\u57fa\u4e8eCentOS\u642d\u5efa\u81ea\u5df1\u7684GIT\u4ed3\u5e93"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u6298\u817e\u73a9\u73a9\u7684\u4e00\u4e2a\u9009\u9879\uff0c\u73af\u5883\u4e3aCentOS 7\uff0cSmart HTTP\u534f\u8bae\u3002<br>\u4f7f\u7528nginx\u505aweb\u670d\u52a1\u5668\uff0cApache httpd\u4f5c\u4e3aGIT\u5904\u7406\u670d\u52a1\u5668\uff0c\u652f\u6301SELinux\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9996\u5148\u5b89\u88c5git\u548cweb\u670d\u52a1\u5668\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install install git nginx httpd httpd-tools setroubleshoot -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2agit\u7684web\u76ee\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/www\/git<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6b63\u6743\u9650\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>semanage fcontext -m -t httpd_sys_rw_content_t \"\/var\/www\/git(\/.*)?\"\nrestorecon -Rv \/var\/www\/git\nchcon -u system_u -R \/var\/www\/git\nsetsebool -P httpd_unified 1\nchown -R apache:apache \/var\/www\/git<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">nginx\u5728\u524dhttpd\u5728\u540e\u5c31\u9700\u8981\u8ba9httpd\u4e0d\u8981\u548cnignx\u62a2\u7740\u76d1\u542c80\u7aef\u53e3\uff08\u8fd9\u91cc\u76d1\u542c8443\u7aef\u53e3\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i 's\/^Listen 80\/Listen 127.0.0.1:8443\/g' \/etc\/httpd\/conf\/httpd.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efagit\u670d\u52a1\u5668\u914d\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/etc\/httpd\/conf.d\/git.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0\u914d\u7f6e\uff08\u4e0b\u9762\u76848443\u548c\u76d1\u542c\u76848443\u7aef\u53e3\u662f\u5bf9\u5e94\u7684\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:8443&gt;\nSetEnv GIT_PROJECT_ROOT \/var\/www\/git\nSetEnv GIT_HTTP_EXPORT_ALL\nDocumentRoot \/var\/www\/git\nScriptAlias \/ \/usr\/libexec\/git-core\/git-http-backend\/\n \n&lt;Directory \"\/usr\/libexec\/git-core\"&gt;\nOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatch\nAllowOverride None\nRequire all granted\n&lt;\/Directory&gt;\n&lt;Directory \"\/var\/www\/git\"&gt;\nDav On\nOptions Indexes FollowSymLinks\nAllowOverride None\nRequire all granted\n&lt;\/Directory&gt;\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">httpd\u4e0d\u66b4\u9732\u5230\u516c\u7f51\uff0c\u751f\u6210\u4e00\u4e2a\u5b50\u8fdb\u7a0b\u5c31\u591f\u4e86\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo 'ServerLimit          1' >> \/etc\/httpd\/conf\/httpd.conf\r\necho 'StartServers         1' >> \/etc\/httpd\/conf\/httpd.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837git\u540e\u7aef\u5c31\u914d\u7f6e\u597d\u4e86\uff0c\u63a5\u4e0b\u6765\u8981\u914d\u7f6enginx\uff0c\u8ba9\u7279\u5b9aURL\u6210\u4e3agit\u7684\u5165\u53e3\uff0c\u5728nginx.conf\u7684server\u9879\u5185\u6dfb\u52a0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        location \/git {\r\n                auth_basic            \"Private Git Repository\";\r\n                auth_basic_user_file  $document_root\/.htpasswd;\r\n                rewrite               ^\/git\/?(.*)$ \/$1 break;\r\n                proxy_pass            http:\/\/127.0.0.1:8443;\r\n        }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">auth_basic\u7684\u610f\u601d\u662f\u6dfb\u52a0\u8ba4\u8bc1\uff0c\u9632\u6b62\u4efb\u4f55\u4eba\u90fd\u80fd\u8bbf\u95eegit\u4ed3\u5e93\u3002<br>auth_basic_user_file\u53c2\u6570\u5c31\u662f\u7528\u6237\u6743\u9650\u6587\u4ef6\uff0c\u4e00\u822c\u653e\u5728\u6587\u6863\u6839\u76ee\u5f55\uff08$document_root\uff09\u5185\uff0c<br>\u5c31\u50cf\/var\/www\/git\/.htpasswd\u3002\u6587\u4ef6\u540d\u968f\u610f\uff0c\u53ea\u8981nginx\u53ef\u4ee5\u8bbf\u95ee\u3002\u4e0b\u9762\u662f\u76f8\u5bf9\u5b8c\u6574\u7684nginx.conf\u6587\u4ef6\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user nginx;\r\nworker_processes 3;\r\nerror_log \/var\/log\/nginx\/error.log;\r\npid \/run\/nginx.pid;\r\n\r\ninclude \/usr\/share\/nginx\/modules\/*.conf;\r\n\r\nevents {\r\n    worker_connections 1024;\r\n}\r\n\r\nhttp {\n    log_format  main  '$remote_addr - $remote_user &#91;$time_local] \"$request\" '\r\n                      '$status $body_bytes_sent \"$http_referer\" '\r\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\r\n\r\n    access_log  \/var\/log\/nginx\/access.log  main;\r\n\r\n    sendfile            on;\r\n    tcp_nopush          on;\r\n    tcp_nodelay         on;\r\n    keepalive_timeout   65;\r\n    types_hash_max_size 4096;\r\n\r\n    include             \/etc\/nginx\/mime.types;\r\n    default_type        application\/octet-stream;\r\n\r\n    include \/etc\/nginx\/conf.d\/*.conf;\n\r\n    server {\r\n        listen               443 ssl default_server;\r\n        server_name          explause.com;\r\n        ssl_certificate      \"\/etc\/explause.crt\";\r\n        ssl_certificate_key  \"\/etc\/explause.key\";\r\n        ssl_protocols        TLSv1.1 TLSv1.2;\r\n        ssl_ciphers          HIGH:!aNULL:!MD5;\r\n\r\n        root                 \/var\/www\/html;\r\n        index                index.php;\r\n        client_max_body_size 100M;\r\n\r\n        include \/etc\/nginx\/default.d\/*.conf;\n\n        location ~ &#91;^\/]\\.php(\/|$) {\r\n                fastcgi_param   HTTP_PROXY       \"\";\r\n                fastcgi_param   SCRIPT_NAME      $fastcgi_script_name;\r\n                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;\r\n                fastcgi_pass    127.0.0.1:9000;\r\n                fastcgi_index   index.php;\r\n                include         fastcgi_params;\r\n        }\n\r\n        location \/git {\r\n                auth_basic            \"Private Git Repository\";\r\n                auth_basic_user_file  $document_root\/.htpasswd;\r\n                rewrite               ^\/git\/?(.*)$ \/$1 break;\r\n                proxy_pass            http:\/\/127.0.0.1:8443;\r\n        }\n    }\r\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">$document_root\u53c2\u6570\u7ed1\u5b9a\u4e8eserver\u9879\u5185\u7684root\u53c2\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u8ba4\u8bc1\u6587\u4ef6\uff0c\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aadmin\u7684\u7528\u6237\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>htpasswd -c \/var\/www\/html\/.htpasswd admin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u4e0b\u6765\u4f1a\u63d0\u793a\u8f93\u5165\u5bc6\u7801\u5e76\u786e\u8ba4\uff0c\u5c31\u6210\u529f\u521b\u5efa\u4e86\u8ba4\u8bc1\u6587\u4ef6\u3002\u6dfb\u52a0\u65b0\u7684\u7528\u6237\u5230\u8ba4\u8bc1\u6587\u4ef6\uff0c\u53bb\u6389-c\u53c2\u6570\u5c31\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>htpasswd \/var\/www\/html\/.htpasswd user2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6b63\u6743\u9650\u4fe1\u606f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chcon -u system_u \/var\/www\/html\/.htpasswd\r\nchown nginx:nginx \/var\/www\/html\/.htpasswd\r\nchmod 0600 \/var\/www\/html\/.htpasswd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u53ea\u8981\u542f\u52a8nginx\u548chttpd\u5c31\u80fd\u5b9e\u73b0\u79c1\u6709\u7684git\u4ed3\u5e93\u5566\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl start nginx\nsystemctl enable nginx\nsystemctl start httpd\nsystemctl enable httpd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u63d0\u4f9b\u4e00\u4e2a\u521b\u5efagit\u4ed3\u5e93\u7684\u811a\u672c\uff0c\u521b\u5efa\u5728\/usr\/sbin\u76ee\u5f55\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vi \/usr\/sbin\/addgitrepo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6dfb\u52a0\u4e0b\u9762\u7684\u5185\u5bb9\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\r\nGIT_DIR=\"\/var\/www\/git\"\r\nREPO_NAME=$1\r\nmkdir -p \"${GIT_DIR}\/${REPO_NAME}.git\"\r\ngit init --bare \"${GIT_DIR}\/${REPO_NAME}.git\" > \/dev\/null\r\ntouch \"${GIT_DIR}\/${REPO_NAME}.git\"\/git-daemon-export-ok\r\ngit --git-dir=\"${GIT_DIR}\/${REPO_NAME}.git\" config http.receivepack true\r\ngit --git-dir=\"${GIT_DIR}\/${REPO_NAME}.git\" config http.uploadpack true\r\ngit --git-dir=\"${GIT_DIR}\/${REPO_NAME}.git\" update-server-info\r\nchown -Rf apache:apache \"${GIT_DIR}\/${REPO_NAME}.git\"\r\nchcon -R system_u:object_r:httpd_sys_rw_content_t:s0 \"${GIT_DIR}\/${REPO_NAME}.git\"\r\necho \"Git repository '${REPO_NAME}' created in ${GIT_DIR}\/${REPO_NAME}.git\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u914d\u7f6e\u6743\u9650\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/usr\/sbin\/addgitrepo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u5373\u53ef\u521b\u5efagit\u4ed3\u5e93\uff0c\u652f\u6301push\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>addgitrepo repo1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u81ea\u5df1\u642d\u4e00\u4e2ahttp\u7684git\u670d\u52a1\u5668\uff0c\u4f7f\u7528nginx\u548chttpd\uff0c\u517c\u5bb9SELinux\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[22],"class_list":["post-863","post","type-post","status-publish","format-standard","hentry","category-opt","tag-22"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/posts\/863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devdoge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=863"}],"version-history":[{"count":7,"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/posts\/863\/revisions"}],"predecessor-version":[{"id":870,"href":"https:\/\/devdoge.org\/index.php?rest_route=\/wp\/v2\/posts\/863\/revisions\/870"}],"wp:attachment":[{"href":"https:\/\/devdoge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devdoge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devdoge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}