{"id":3253,"date":"2019-08-11T16:50:50","date_gmt":"2019-08-11T07:50:50","guid":{"rendered":"https:\/\/column.prime-strategy.co.jp\/?p=3253"},"modified":"2019-08-11T16:50:50","modified_gmt":"2019-08-11T07:50:50","slug":"kusanagi-%e3%81%a7-gitlab%e3%82%92%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%bf%e3%82%88%e3%81%862%ef%bc%88%e5%ae%ae%e5%b4%8e%e6%82%9f%e6%b0%8f%ef%bc%89","status":"publish","type":"post","link":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253","title":{"rendered":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u524d\u56de\u306e\u304a\u3055\u3089\u3044<\/h1>\n\n\n\n<p>\u524d\u56de\u306f\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3001GitlLab\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u3067\u7d42\u308f\u308a\u307e\u3057\u305f\u3002<br>\n\u4eca\u56de\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u3001KUSANAGI\u3067\u63d0\u4f9b\u3059\u308bpostgresql+pgpoo lI\u3068\u3001NGINX\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Postgresql_%E3%81%AE%E8%A8%AD%E5%AE%9A%E7%A2%BA%E8%AA%8D\"><\/span>Postgresql \u306e\u8a2d\u5b9a\u78ba\u8a8d<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u73fe\u5728\u3001KUSANAGI\u3067\u63d0\u4f9b\u3057\u3066\u3044\u308bPostgreql\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f9.6\u3067\u3059\u3002\u3053\u308c\u3092pgpool-II-pg10 \u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30d7\u30fc\u30ea\u30f3\u30b0(\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u78ba\u7387\u306e\u30aa\u30fc\u30d0\u30d8\u30c3\u30c9\u306e\u6e1b\u5c11)\u3084\u30c7\u30fc\u30bf\u30ea\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3001\u8ca0\u8377\u5206\u6563\u3001\u6700\u5927\u63a5\u7d9a\u6599\u5236\u5fa1\u3001\u81ea\u52d5\u30d5\u30a7\u30a4\u30eb\u30aa\u30fc\u30d0\u30fc\u306a\u3069\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<br>\n\u524d\u56de\u5b9f\u65bd\u3057\u305f\u3001kusanagi init \u3067 pgsql\u3092\u6307\u5b9a\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u305d\u306e\u969b\u306b\u6307\u5b9a\u3057\u305fDB\u8a2d\u5b9a\u3067pgpool-II\u3092\u610f\u8b58\u3059\u308b\u3053\u3068\u306a\u304fpostgresql DB\u3078\u63a5\u7d9a\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source export.txt\nexport PGPASSWORD=$DBROOTPASS\n$ psql -h localhost -Upostgres\npsql (9.6.14)\n\"help\" \u3067\u30d8\u30eb\u30d7\u3092\u8868\u793a\u3057\u307e\u3059.\n\npostgres=# <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"GitLab%E3%81%B8%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>GitLab\u3078\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>KUSANAGI\u3068Gitlab\u306b\u306f\u3001\u5171\u901a\u3059\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066NGINX\/Postgresql\/Ruby+Rails \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002\u3044\u308d\u3044\u308d\u691c\u8a3c\u3057\u305f\u7d50\u679c\u3001NGINX\/Postgreql \u306fKUSANAGI\u306e\u3082\u306e\u3092\u8a66\u7528\u3057\u3001Rails\u305d\u306e\u4ed6\u30b5\u30fc\u30d3\u30b9\u3092GitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>gitlab\u3078\u306e\u8a2d\u5b9a\u306f\u3001\/etc\/gitlab\/gitlab.rb \u3078\u306e\u8ffd\u8a18\u3067\u884c\u3044\u307e\u3059\u3002<a href=\"https:\/\/docs.gitlab.com\/omnibus\/README.html#configuring\">Gitlab\u306e\u8a2d\u5b9a\u30de\u30cb\u30e5\u30a2\u30eb(\u82f1\u8a9e)<\/a>\u3092\u57fa\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\/etc\/gitlab\/gitlab.rb \u306e\u672b\u5c3e\u306b\u8ffd\u8a18\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001Gitlab\u306eNGINX\u3068Postgresql\u3092\u7121\u52b9\u306b\u3057\u3001Gitlab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ source export.txt\n$ cat &lt;&lt;EOT |  sudo tee -a \/etc\/gitlab\/gitlab.rb > \/dev\/null\nnginx['enable'] = false\ngitlab_rails['internal_api_url'] = '$SITE_DOMAIN'\nweb_server['external_users'] = ['httpd']\n\ngitlab_rails['internal_api_url'] = 'http:\/\/$SITE_DOMAIN'\n\npostgresql['enable'] = false\ngitlab_rails['db_adapter'] = 'postgresql'\ngitlab_rails['db_encoding'] = 'utf8'\ngitlab_rails['db_host'] = '127.0.0.1'\ngitlab_rails['db_port'] = 5432\ngitlab_rails['db_username'] = 'postgres'\ngitlab_rails['db_password'] = '$DBROOTPASS'\ngitlab_rails['auto_migrate'] = false\nEOT<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u8a2d\u5b9a\u3092\u884c\u3063\u305f\u3042\u3068\u3001root\u6a29\u9650\u3067<code>gitlab-ctl reconfigure<\/code>\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"NGINX%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>NGINX\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6700\u521d\u306fKUSANAGI\u3067Rails\u74b0\u5883\u3092provision\u3057\u3066Passenger\u3092\u4f7f\u7528\u3059\u308b\u3064\u3082\u308a\u3067\u3057\u305f\u3002\u3057\u304b\u3057\u3001GitLab\u306b\u542b\u307e\u308c\u308bRuby\u3068\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u7570\u306a\u308a\u3001Passenger\u304c\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3057\u305f\u3002\u305d\u306e\u305f\u3081\u3001KUSANAGI\u304c\u63d0\u4f9b\u3059\u308b Ruby+Passenger \u3092\u8ae6\u3081\u3001Gitlab\u306eunicorn socket\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"nginxconf_%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>nginx.conf \u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\/etc\/nginx\/nginx.conf \u306e\u3001<code>include conf.d\/*.conf<\/code>\u4ee5\u4e0b\u3092\u524a\u9664\u3057\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat  nginx.tmpl \n\n    proxy_cache_path \/var\/cache\/nginx\/gitlab keys_zone=gitlab:10m max_size=1g levels=1:2;\n    proxy_cache gitlab;\n\n    map $http_upgrade $connection_upgrade {\n        default upgrade;\n        ''      close;\n    }\n\n    # Remove private_token from the request URI\n    # In:  \/foo?private_token=unfiltered&amp;authenticity_token=unfiltered&amp;rss_token=unfiltered&amp;...\n    # Out: \/foo?private_token=[FILTERED]&amp;authenticity_token=unfiltered&amp;rss_token=unfiltered&amp;...\n    map $request_uri $temp_request_uri_1 {\n        default $request_uri;\n        ~(?i)^(?&lt;start>.*)(?&lt;temp>[\\?&amp;]private[\\-_]token)=[^&amp;]*(?&lt;rest>.*)$ \"$start$temp=[FILTERED]$rest\";\n    }\n\n    # Remove authenticity_token from the request URI\n    # In:  \/foo?private_token=[FILTERED]&amp;authenticity_token=unfiltered&amp;rss_token=unfiltered&amp;...\n    # Out: \/foo?private_token=[FILTERED]&amp;authenticity_token=[FILTERED]&amp;rss_token=unfiltered&amp;...\n    map $temp_request_uri_1 $temp_request_uri_2 {\n        default $temp_request_uri_1;\n        ~(?i)^(?&lt;start>.*)(?&lt;temp>[\\?&amp;]authenticity[\\-_]token)=[^&amp;]*(?&lt;rest>.*)$ \"$start$temp=[FILTERED]$rest\";\n    }\n\n    # Remove rss_token from the request URI\n    # In:  \/foo?private_token=[FILTERED]&amp;authenticity_token=[FILTERED]&amp;rss_token=unfiltered&amp;...\n    # Out: \/foo?private_token=[FILTERED]&amp;authenticity_token=[FILTERED]&amp;rss_token=[FILTERED]&amp;...\n    map $temp_request_uri_2 $filtered_request_uri {\n        default $temp_request_uri_2;\n        ~(?i)^(?&lt;start>.*)(?&lt;temp>[\\?&amp;]rss[\\-_]token)=[^&amp;]*(?&lt;rest>.*)$ \"$start$temp=[FILTERED]$rest\";\n    }\n\n    # A version of the referer without the query string\n    map $http_referer $filtered_http_referer {\n        default $http_referer;\n        ~^(?&lt;temp>.*)\\? $temp;\n    }\n\n    upstream gitlab-unicorn {\n        server unix:\/\/\/var\/opt\/gitlab\/gitlab-rails\/sockets\/gitlab.socket;\n    }\n\n    include \/etc\/nginx\/conf.d\/*.conf;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"gitlab_conf%E3%81%AE%E8%A8%AD%E5%AE%9A\"><\/span>gitlab_*.conf\u306e\u8a2d\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\/etc\/nginx\/conf.d\/gitlab_http.conf\u304a\u3088\u3073gitlab_ssl.conf \u306e<code>root<\/code>\u6587\u4ee5\u4e0b\u3092\u524a\u9664\u3057\u3001\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002gitlab\u306e\u63a8\u5968\u8a2d\u5b9a\u306b\u624b\u3092\u52a0\u3048\u3066\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat gitlab_nginx.tmpl \n        location = \/favicon.ico {\n                log_not_found off;\n                access_log off;\n        }\n\n        location ~* \/\\.well-known {\n                allow all;\n        }\n\n        location ~* \/\\. {\n                deny all;\n        }\n\n        location ~* \\.(jpg|jpeg|gif|png|css|js|swf|ico|pdf|svg|eot|ttf|woff)$ {\n                expires 60d;\n                access_log off;\n        }\n\n        ## https:\/\/github.com\/gitlabhq\/gitlabhq\/issues\/694\n        ## Some requests take more than 30 seconds.\n        proxy_read_timeout        3600;\n        proxy_connect_timeout   300;\n        proxy_redirect            off;\n        proxy_http_version 1.1;\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Forwarded-Host $host;\n        proxy_set_header X-Forwarded-Server $host;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection $connection_upgrade;\n\n        location ~ (.git\/git-receive-pack$|.git\/info\/refs?service=git-receive-pack$|.git\/gitlab-lfs\/objects|.git\/info\/lfs\/objects\/batch$) {\n                proxy_cache off;\n                proxy_pass  http:\/\/gitlab-unicorn;\n                proxy_request_buffering off;\n        }\n\n        location \/-\/grafana\/ {\n                add_header X-Signature KUSANAGI;\n                proxy_pass http:\/\/localhost:3000\/;\n        }\n\n        location \/ {\n                add_header X-Signature KUSANAGI;\n                proxy_cache off;\n                proxy_pass  http:\/\/gitlab-unicorn;\n        }\n\n        location \/assets {\n                add_header X-Signature KUSANAGI;\n                proxy_cache gitlab;\n                proxy_pass  http:\/\/gitlab-unicorn;\n        }\n\n        error_page 404 \/404.html;\n        error_page 500 \/500.html;\n        error_page 502 \/502.html;\n        location ~ ^\/(404|500|502)(-custom)?\\.html$ {\n                root \/opt\/gitlab\/embedded\/service\/gitlab-rails\/public;\n                internal;\n        }\n}<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u5f8c\u3001root\u6a29\u9650\u3067<code>nginx -t<\/code>\u3092\u5b9f\u884c\u3057\u3001\u554f\u984c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"gitlab_%E7%94%BB%E9%9D%A2%E3%81%AE%E8%A1%A8%E7%A4%BA\"><\/span>gitlab \u753b\u9762\u306e\u8868\u793a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\/etc\/hosts\u306bgitlab.localdomain \u3092\u8ffd\u8a18\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u3092\u958b\u304f\u3068\u4ee5\u4e0b\u306e\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"gitlab_initial.png\" alt=\"gitlab\u521d\u671f\u753b\u9762\"\/><\/figure>\n\n\n\n<p>\u3042\u3068\u306f\u3001\u7ba1\u7406\u8005\u6a29\u9650\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6253\u3063\u3066gitlab\u306e\u4f5c\u696d\u3092\u59cb\u3081\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%81%BE%E3%81%A8%E3%82%81\"><\/span>\u307e\u3068\u3081<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f5c\u696d\u3092Vagrantfile\u3067\u5b9f\u65bd\u53ef\u80fd\u3067\u3059\u3002nginx\u3078\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u3067\u7701\u529b\u5316\u3057\u3066\u3044\u307e\u3059\u3002<br>\n\u524d\u56de\u3068\u306e\u9055\u3044\u306f\u3001Rails\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u306a\u304f\u306a\u3063\u305f\u306e\u3067\u3001kusanagi provision \u3067 lamp\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat Vagrantfile\nVagrant.configure(\"2\") do |config|\n  # The most common configuration options are documented and commented below.\n  # For a complete reference, please see the online documentation at\n  # https:\/\/docs.vagrantup.com.\n\n  # Every Vagrant development environment requires a box. You can search for\n  # boxes at https:\/\/vagrantcloud.com\/search.\n  config.vm.box = \"primestrategy\/kusanagi\"\n\n  config.vm.network \"forwarded_port\", guest: 22, host: 8022, id: \"ssh\"\n  config.vm.network \"private_network\", ip: \"192.168.34.21\"\n\n  config.vm.provider \"virtualbox\" do |vb|\n    # Display the VirtualBox GUI when booting the machine\n    # vb.gui = true\n    # Customize the amount of memory on the VM:\n    vb.customize [\"modifyvm\", :id, \"--natdnsproxy1\", \"on\"]\n    vb.customize [\"modifyvm\", :id, \"--natdnshostresolver1\", \"on\"]\n    vb.customize [\"modifyvm\", :id, \"--usb\", \"off\"]\n    vb.customize [\"modifyvm\", :id, \"--usbehci\", \"off\"]\n    vb.customize [\"modifyvm\", :id, \"--audio\", \"none\"]\n    vb.customize ['modifyvm', :id, '--cableconnected1', 'on']\n\n    vb.memory = \"4096\"\n  end\n  config.vm.provision \"file\", source: \".\/gitlab_nginx.tmpl\", destination: \"\/tmp\/gitlab_nginx.tmpl\"\n  config.vm.provision \"file\", source: \".\/nginx.tmpl\", destination: \"\/tmp\/nginx.tmpl\"\n  config.vm.provision \"shell\", inline: &lt;&lt;-SHELL\n    cat \/tmp\/id_edcsa.pub >> \/home\/vagrant\/.ssh\/authorized_keys\n    rm \/tmp\/id_edcsa.pub\n    KUSANAGI_PASSWORD=$(mkpasswd -l 20)\n    DBROOTPASS=$(mkpasswd -s 0 -l 20)\n    SITE_DOMAIN=gitlab.localdomain\n    DBNAME=a$(mkpasswd -s 0 -l 10 -C 0)\n    DBUSER=a$(mkpasswd -s 0 -l 10 -C 0)\n    DBPASS=$(mkpasswd -s 0 -l 20)\n    cat &lt;&lt;EOT > export.txt\nexport TERM=xterm\nexport KUSANAGO_PASSWORD=\\\"$KUSANAGI_PASSWORD\\\"\nexport DBROOTPASS=\\\"$DBROOTPASS\\\"\nexport SITE_DOMAIN=$SITE_DOMAIN\nexport DBNAME=$DBNAME\nexport DBUSER=$DBUSER\nexport DBPASS=\"\\$DBPASS\\\"\nexport EMAILOPTION=--no-email\nexport PROFILE=gitlab\nEOT\n\n        set -x\n    source export.txt\n    sudo yum clean all\n    sudo yum update -y\n    sudo yum install -y jq\n    yes 1 | sudo kusanagi init --tz tokyo --lang en --keyboard en --passwd \"$KUSANAGI_PASSWORD\" --no-phrase --dbrootpass \"$DBROOTPASS\" --php7 --nginx --ruby24 --dbsystem psql\n    sudo kusanagi provision --lamp --fqdn $SITE_DOMAIN $EMAILOPTION --dbname $DBNAME --dbuser $DBUSER --dbpass \"$DBPASS\" $PROFILE\n        sudo yum install -y postgresql96-contrib\n\n    curl https:\/\/packages.gitlab.com\/install\/repositories\/gitlab\/gitlab-ce\/script.rpm.sh | sudo bash\n    sudo EXTERNAL_URL=\"http:\/\/$SITE_DOMAIN\" yum install -y gitlab-ce\n   echo \"\nnginx['enable'] = false\ngitlab_rails['internal_api_url'] = '$SITE_DOMAIN'\nweb_server['external_users'] = ['httpd']\n\ngitlab_rails['internal_api_url'] = 'http:\/\/$SITE_DOMAIN'\n\npostgresql['enable'] = false\ngitlab_rails['db_adapter'] = 'postgresql'\ngitlab_rails['db_encoding'] = 'utf8'\ngitlab_rails['db_host'] = '127.0.0.1'\ngitlab_rails['db_port'] = 5432\ngitlab_rails['db_username'] = 'postgres'\ngitlab_rails['db_password'] = '$DBROOTPASS'\ngitlab_rails['auto_migrate'] = false\n\" | sudo tee -a \/etc\/gitlab\/gitlab.rb > \/dev\/null\n\n    sudo mkdir -m700 \/var\/cache\/nginx\/gitlab\n    sudo chmod httpd \/var\/cache\/nginx\/gitlab\n    cd \/tmp\n        sudo sed -i -e '\/root\/,\\$d' -e '\/client_max_body_size\/r .\/gitlab_nginx.tmpl' \/etc\/nginx\/conf.d\/${PROFILE}_http.conf\n        sudo sed -i -e '\/root\/,\\$d' -e '\/client_max_body_size\/r .\/gitlab_nginx.tmpl' \/etc\/nginx\/conf.d\/${PROFILE}_ssl.conf\n        sudo sed -i -e '59,62d' \/etc\/nginx\/nginx.conf\n        cat nginx.tmpl | sudo tee -a \/etc\/nginx\/nginx.conf >\/dev\/null\n    sudo gitlab-ctl reconfigure || true\n        sudo rm -rf \/opt\/gitlab\/embedded\/postgresql\/*\n        export PATH=\/opt\/gitlab\/bin:\/opt\/gitlab\/embedded\/:$PATH\n        yes yes | sudo \/opt\/gitlab\/bin\/gitlab-rake gitlab:setup\n    rm \/tmp\/gitlab_nginx.tmpl \/tmp\/nginx.tmpl\n    sudo reboot\n  SHELL\nend<\/code><\/pre>\n\n\n\n<p>\u3053\u306eVagrantfile\u3001nginx.tmpl \u3001gitlab_nginx.tmpl \u3092\u4f7f\u7528\u3057\u3066\u3001\u81ea\u52d5\u7684\u306bKUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u6b63\u76f4\u3001Gitlab\u306enginx\u306f\u5c11\u3057\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u306e\u3067\u3001NGINX\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u826f\u3051\u308c\u3070\u3053\u306e\u69cb\u6210\u3067\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u305f\u3060\u3001\u624b\u9593\u306f\u304b\u304b\u308b\u306e\u3067Gitlab\u3092\u4f7f\u3044\u305f\u3044\u4eba\u306fDocker\u306a\u3069\u3067Gitlab\u3092\u69cb\u7bc9\u3059\u308b\u307b\u3046\u304c\u697d\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3067\u306f\u3001\u6b21\u56de\u3092\u304a\u697d\u3057\u307f\u306b\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306e\u304a\u3055\u3089\u3044 \u524d\u56de\u306f\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3001GitlLab\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u3067\u7d42\u308f\u308a\u307e\u3057\u305f\u3002  ... <a title=\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09\" class=\"read-more\" href=\"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253\" aria-label=\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 \u306b\u3064\u3044\u3066\u3055\u3089\u306b\u8aad\u3080\">Read more<\/a><\/p>\n","protected":false},"author":4,"featured_media":2267,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[],"tags":[],"series":[],"journey":[],"product":[],"class_list":["post-3253","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33","no-featured-image-padding"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column<\/title>\n<meta name=\"description\" content=\"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column\" \/>\n<meta property=\"og:description\" content=\"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253\" \/>\n<meta property=\"og:site_name\" content=\"KUSANAGI Tech Column\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-11T07:50:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"624\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u5bae\ufa11\u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@kusanagi_saya\" \/>\n<meta name=\"twitter:site\" content=\"@kusanagi_saya\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253\"},\"author\":{\"name\":\"\u5bae\ufa11\u609f\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#\\\/schema\\\/person\\\/7a8fcfc4a066442d09c59b1026a7e80a\"},\"headline\":\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09\",\"datePublished\":\"2019-08-11T07:50:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253\"},\"wordCount\":113,\"publisher\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/40532704_1666269333483921_164815835225915392_o.jpg\",\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253\",\"name\":\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/40532704_1666269333483921_164815835225915392_o.jpg\",\"datePublished\":\"2019-08-11T07:50:50+00:00\",\"description\":\"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#primaryimage\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/40532704_1666269333483921_164815835225915392_o.jpg\",\"contentUrl\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/40532704_1666269333483921_164815835225915392_o.jpg\",\"width\":1280,\"height\":624},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_3253#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#website\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/\",\"name\":\"KUSANAGI Tech Column\",\"description\":\"\u901f\u3055\u306e\u7406\u7531\u3092\u77e5\u308b\u3002\u5b89\u5168\u306e\u4ed5\u7d44\u307f\u3092\u77e5\u308b\u3002WordPress\u904b\u7528\u306e\u300c\u306a\u305c\uff1f\u300d\u3092\u89e3\u304f\u6280\u8853\u30b3\u30e9\u30e0\",\"publisher\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#organization\",\"name\":\"KUSANAGI Tech Column\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/logo-tc.png\",\"contentUrl\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/logo-tc.png\",\"width\":716,\"height\":57,\"caption\":\"KUSANAGI Tech Column\"},\"image\":{\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/kusanagi_saya\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/#\\\/schema\\\/person\\\/7a8fcfc4a066442d09c59b1026a7e80a\",\"name\":\"\u5bae\ufa11\u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g\",\"caption\":\"\u5bae\ufa11\u609f\"},\"description\":\"\u56fd\u7acb\u51fd\u9928\u9ad8\u5c02\u3092\u5352\u696d\u5f8c\u3001NEC\u5354\u529b\u4f1a\u793e\u306b\u5165\u793e\u3002UNIX\u30fbWindows\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3001Solaris\\\/Linux\u3067\u306e\u30b7\u30b9\u30c6\u30e0\u69cb\u7bc9\u306b20\u5e74\u4ee5\u4e0a\u5f93\u4e8b\u3057\u305f\u3002Solaris\u3068Linux\u3092\u5c02\u9580\u3068\u3057\u3001OS\u304a\u3088\u3073\u4eee\u60f3\u5316\u6280\u8853\u3092\u5f97\u610f\u3068\u3059\u308b\u3002\u65e5\u672cOpenSolaris\u30e6\u30fc\u30b6\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u3068\u3057\u3066\u3001OSC\u306a\u3069\u52c9\u5f37\u4f1a\u3067\u306e\u767b\u58c7\u591a\u6570\u3002 \u25cb\u5f97\u610f\u5206\u91ce \u8a00\u8a9e\uff1a C\u3001C++\u3001Perl\u3001Python\u3001PowerShell OS\uff1a Solaris\u3001Linux \u904e\u53bb\u306e\u767a\u8868\u8cc7\u6599\uff1aOSC\u304a\u3088\u3073hbstudy\u306a\u3069\u3067\u306e\u767b\u58c7\u7d4c\u9a13\u3042\u308a\u3002 https:\\\/\\\/www.slideshare.net\\\/satorumiyazaki \u904e\u53bb\u306e\u57f7\u7b46\u8a18\u4e8b\uff1a https:\\\/\\\/www.cloudn-service.com\\\/magazine\\\/member\\\/satoru_miyazaki.html\",\"url\":\"https:\\\/\\\/kusanagi.tokyo\\\/column\\\/archives\\\/column_author\\\/satoru\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column","description":"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253","og_locale":"ja_JP","og_type":"article","og_title":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column","og_description":"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002","og_url":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253","og_site_name":"KUSANAGI Tech Column","article_published_time":"2019-08-11T07:50:50+00:00","og_image":[{"width":1280,"height":624,"url":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg","type":"image\/jpeg"}],"author":"\u5bae\ufa11\u609f","twitter_card":"summary_large_image","twitter_creator":"@kusanagi_saya","twitter_site":"@kusanagi_saya","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#article","isPartOf":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253"},"author":{"name":"\u5bae\ufa11\u609f","@id":"https:\/\/kusanagi.tokyo\/column\/#\/schema\/person\/7a8fcfc4a066442d09c59b1026a7e80a"},"headline":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09","datePublished":"2019-08-11T07:50:50+00:00","mainEntityOfPage":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253"},"wordCount":113,"publisher":{"@id":"https:\/\/kusanagi.tokyo\/column\/#organization"},"image":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#primaryimage"},"thumbnailUrl":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg","inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253","url":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253","name":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09 - KUSANAGI Tech Column","isPartOf":{"@id":"https:\/\/kusanagi.tokyo\/column\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#primaryimage"},"image":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#primaryimage"},"thumbnailUrl":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg","datePublished":"2019-08-11T07:50:50+00:00","description":"\u524d\u56de\u3001KUSANAGI for Vagrant\u3067Ruby\u7528\u306e\u74b0\u5883\u3092\u4f5c\u308a\u3001GitLab\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u8a18\u4e8b\u306e\u7d9a\u304d\u3067\u3001\u4eca\u56de\u306fGitLab\u3068KUSANAGI\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u5177\u4f53\u7684\u306b\u306f\u3001GitLab\u306e\u8a2d\u5b9a\u3092\u901a\u3058\u3066\u3001GitLab\u304cKUSANAGI\u306ePostgresql\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u3001NGINX\u3068Postgresql\u306fKUSANAGI\u306e\u3082\u306e\u3092\u4f7f\u3044\u3001Rails\u3068\u305d\u306e\u4ed6\u306e\u30b5\u30fc\u30d3\u30b9\u306fGitLab\u306e\u3082\u306e\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u3001Vagrantfile\u3001nginx.tmpl\u3001gitlab_nginx.tmpl\u3092\u4f7f\u3063\u3066\u3001KUSANAGI+Gitlab\u306e\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u305f\u5185\u5bb9\u3092\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kusanagi.tokyo\/column\/archives\/column_3253"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#primaryimage","url":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg","contentUrl":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2018\/10\/40532704_1666269333483921_164815835225915392_o.jpg","width":1280,"height":624},{"@type":"BreadcrumbList","@id":"https:\/\/kusanagi.tokyo\/column\/archives\/column_3253#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/kusanagi.tokyo\/column"},{"@type":"ListItem","position":2,"name":"KUSANAGI \u3067 GitLab\u3092\u52d5\u304b\u3057\u3066\u307f\u3088\u3046(2)\uff08\u5bae\u5d0e\u609f\u6c0f\uff09"}]},{"@type":"WebSite","@id":"https:\/\/kusanagi.tokyo\/column\/#website","url":"https:\/\/kusanagi.tokyo\/column\/","name":"KUSANAGI Tech Column","description":"\u901f\u3055\u306e\u7406\u7531\u3092\u77e5\u308b\u3002\u5b89\u5168\u306e\u4ed5\u7d44\u307f\u3092\u77e5\u308b\u3002WordPress\u904b\u7528\u306e\u300c\u306a\u305c\uff1f\u300d\u3092\u89e3\u304f\u6280\u8853\u30b3\u30e9\u30e0","publisher":{"@id":"https:\/\/kusanagi.tokyo\/column\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kusanagi.tokyo\/column\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/kusanagi.tokyo\/column\/#organization","name":"KUSANAGI Tech Column","url":"https:\/\/kusanagi.tokyo\/column\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/kusanagi.tokyo\/column\/#\/schema\/logo\/image\/","url":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2024\/07\/logo-tc.png","contentUrl":"https:\/\/kusanagi.tokyo\/column\/wp-content\/uploads\/2024\/07\/logo-tc.png","width":716,"height":57,"caption":"KUSANAGI Tech Column"},"image":{"@id":"https:\/\/kusanagi.tokyo\/column\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/kusanagi_saya"]},{"@type":"Person","@id":"https:\/\/kusanagi.tokyo\/column\/#\/schema\/person\/7a8fcfc4a066442d09c59b1026a7e80a","name":"\u5bae\ufa11\u609f","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0197e2079042df3f0e0ee09cf45ef0f84190843bb012d3683843aa14b754a3f7?s=96&d=mm&r=g","caption":"\u5bae\ufa11\u609f"},"description":"\u56fd\u7acb\u51fd\u9928\u9ad8\u5c02\u3092\u5352\u696d\u5f8c\u3001NEC\u5354\u529b\u4f1a\u793e\u306b\u5165\u793e\u3002UNIX\u30fbWindows\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u3001Solaris\/Linux\u3067\u306e\u30b7\u30b9\u30c6\u30e0\u69cb\u7bc9\u306b20\u5e74\u4ee5\u4e0a\u5f93\u4e8b\u3057\u305f\u3002Solaris\u3068Linux\u3092\u5c02\u9580\u3068\u3057\u3001OS\u304a\u3088\u3073\u4eee\u60f3\u5316\u6280\u8853\u3092\u5f97\u610f\u3068\u3059\u308b\u3002\u65e5\u672cOpenSolaris\u30e6\u30fc\u30b6\u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30f3\u30d0\u3068\u3057\u3066\u3001OSC\u306a\u3069\u52c9\u5f37\u4f1a\u3067\u306e\u767b\u58c7\u591a\u6570\u3002 \u25cb\u5f97\u610f\u5206\u91ce \u8a00\u8a9e\uff1a C\u3001C++\u3001Perl\u3001Python\u3001PowerShell OS\uff1a Solaris\u3001Linux \u904e\u53bb\u306e\u767a\u8868\u8cc7\u6599\uff1aOSC\u304a\u3088\u3073hbstudy\u306a\u3069\u3067\u306e\u767b\u58c7\u7d4c\u9a13\u3042\u308a\u3002 https:\/\/www.slideshare.net\/satorumiyazaki \u904e\u53bb\u306e\u57f7\u7b46\u8a18\u4e8b\uff1a https:\/\/www.cloudn-service.com\/magazine\/member\/satoru_miyazaki.html","url":"https:\/\/kusanagi.tokyo\/column\/archives\/column_author\/satoru"}]}},"_links":{"self":[{"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/posts\/3253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/comments?post=3253"}],"version-history":[{"count":0,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/posts\/3253\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/media\/2267"}],"wp:attachment":[{"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/media?parent=3253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/categories?post=3253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/tags?post=3253"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/series?post=3253"},{"taxonomy":"journey","embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/journey?post=3253"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/kusanagi.tokyo\/column\/wp-json\/wp\/v2\/product?post=3253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}