{"id":317109,"date":"2021-01-28T15:02:08","date_gmt":"2021-01-28T15:02:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=317109"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=317109","title":{"rendered":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Redmine \u0437\u0430 15 \u043c\u0438\u043d\u0443\u0442 (RVM + RoR + Unicorn + Nginx)"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<blockquote>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u041e\u0421 Linux \u0441 Redmine \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c<sub>&nbsp;(\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043f\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438)<\/sub>, \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \u0412\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/blockquote>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p><strong>\u0412 \u043e\u0431\u0449\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0442\u0430\u043a<\/strong>:&nbsp;<u>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Redmine \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u0434\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 nginx<\/u>.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a&nbsp;<a href=\"https:\/\/www.redmine.org\/\" rel=\"noopener noreferrer nofollow\">Redmine<\/a>&nbsp;\u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430&nbsp;<a href=\"https:\/\/ru.wikipedia.org\/wiki\/Ruby_on_Rails\" rel=\"noopener noreferrer nofollow\">RoR<\/a>, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0442\u044c RoR \u0441\u0440\u0435\u0434\u0443, \u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e&nbsp;<u>\u0440\u0430\u0437\u043d\u044b\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/u>. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u0435\u043d&nbsp;<strong>\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0439<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<blockquote>\n<p><a href=\"https:\/\/rvm.io\/\" rel=\"noopener noreferrer nofollow\">RVM<\/a>&nbsp;&#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0439 \u0441\u0440\u0435\u0434 ruby, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0439 \u0438\u043d\u0442\u0435\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0434\u0436\u0435\u043c\u0430\u043c\u0438. \u041d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b&nbsp;<strong>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 nginx. \u041e\u0434\u043d\u0430\u043a\u043e, nginx \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<blockquote>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Unicorn_(%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80)\" rel=\"noopener noreferrer nofollow\">Unicorn<\/a>&nbsp;&#8212; \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f&nbsp;<a href=\"https:\/\/habr.com\/ru\/post\/131429\/\" rel=\"noopener noreferrer nofollow\">Rack<\/a>&nbsp;(\u0438 RoR \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435)&nbsp;\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c&nbsp;<a href=\"https:\/\/www.8host.com\/blog\/razvyortyvanie-rails-prilozhenij-na-passenger-i-nginx-v-centos-6-5\/\" rel=\"noopener noreferrer nofollow\">passenger<\/a>, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e&nbsp;<u>nginx \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0441 passenger<\/u>, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 nginx. \u0410 \u0435\u0449\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e&nbsp;<strong>Unicorn \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/strong>, \u0430 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439.<\/p>\n<\/blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c&nbsp;<strong>\u0437\u0430\u0434\u0430\u0447\u0430<\/strong>&nbsp;\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u044f\u0441\u043d\u043e\u0439:&nbsp;<u>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Redmine \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0432 \u0441\u0442\u0435\u043a RoR+Unicorn+Nginx, \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c<\/u>.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 ipv6<\/h4>\n<p><strong><em>                   \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/em><\/strong><em>: \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/em>&nbsp;\ud83d\ude42<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0430 VPS Ubuntu 16.04 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435&nbsp;<code>apt-get install<\/code>&nbsp;\u043d\u0435 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e&nbsp;<code>ipv6<\/code>:<\/p>\n<pre><code class=\"sql\">0% [Connecting to archive.ubuntu.com (2001:67c:1562::15)]<\/code><\/pre>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c ipv6<\/strong>&nbsp;\u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432&nbsp;<a href=\"https:\/\/adminunix.ru\/nastrojka-sysctl\/\" rel=\"noopener noreferrer nofollow\">\/etc\/sysctl.conf<\/a>:<\/p>\n<pre><code class=\"sql\">echo '' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.all.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.default.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.lo.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf sysctl -p<\/code><\/pre>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043e\u0444\u0442\u0430<\/h4>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/CURL\" rel=\"noopener noreferrer nofollow\">curl<\/a>&nbsp;\u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&nbsp;<a href=\"https:\/\/rvm.io\/\" rel=\"noopener noreferrer nofollow\">RVM<\/a>&nbsp;(Ruby Version Manager):<\/p>\n<pre><code class=\"sql\">apt-get install curl<\/code><\/pre>\n<p><strong><em>                      \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/em><\/strong><em>: \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043e\u0444\u0442\u043e\u043c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0434\u0435\u043b<\/em>&nbsp;\ud83d\ude42<\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Midnight_Commander\" rel=\"noopener noreferrer nofollow\">Midnight Commander<\/a>&nbsp;(\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440):<\/p>\n<pre><code class=\"php\">apt-get install mc<\/code><\/pre>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Nano\" rel=\"noopener noreferrer nofollow\">Nano<\/a>&nbsp;(\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440):<\/p>\n<pre><code class=\"cpp\">apt-get install nano<\/code><\/pre>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 Redmine<\/h4>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/Download#Stable-releases\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Redmine<\/a>&nbsp;4.1.1. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/<\/code>&nbsp;<u>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u0430\u0440\u0445\u0438\u0432<\/u>,&nbsp;<u>\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c<\/u>&nbsp;<u>\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432 redmine<\/u>&nbsp;\u0438&nbsp;<u>\u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0430\u0440\u0445\u0438\u0432<\/u>:<\/p>\n<pre><code class=\"cpp\">wget --no-check-certificate https:\/\/www.redmine.org\/releases\/redmine-4.1.1.tar.gz tar xvzf redmine-4.1.1.tar.gz mv redmine-4.1.1 redmine rm redmine-4.1.1.tar.gz<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0443\u0442\u044c \u0434\u043e Redmine:&nbsp;<code>\/opt\/redmine\/<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0432 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430&nbsp;<code>1000<\/code>, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439 \u0432\u043b\u0430\u0434\u0435\u043b&nbsp;<code>www-data<\/code>&nbsp;(\u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442 \u044e\u0437\u0435\u0440\u0430&nbsp;<code>www-data<\/code>):<\/p>\n<pre><code class=\"cpp\">chown -R www-data \/opt\/redmine\/<\/code><\/pre>\n<h4>PostgreSQL<\/h4>\n<blockquote>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 PostgreSQL!<\/p>\n<\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 redmine &#8212;&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#Supported-database-back-ends\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c PostgreSQL \u0432\u0435\u0440\u0441\u0438\u0438 &gt;9.2<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"pgsql\">apt policy postgresql<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<pre><code class=\"pgsql\">postgresql:   Installed: (none)   Candidate: 9.5+173ubuntu0.3   Version table:      9.5+173ubuntu0.3 500         500 http:\/\/archive.ubuntu.com\/ubuntu xenial-updates\/main amd64 Packages         500 http:\/\/security.ubuntu.com\/ubuntu xenial-security\/main amd64 Packages      9.5+173 500         500 http:\/\/archive.ubuntu.com\/ubuntu xenial\/main amd64 Packages<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u0438\u043d\u0430\u0447\u0435 \u0438\u0449\u0435\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<pre><code class=\"pgsql\">apt install postgresql<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL&nbsp;(<em>\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0439\u0442\u0438 \u043d\u0430\u0434\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u044e\u0437\u0435\u0440\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u044e\u0437\u0435\u0440 postgres \u043c\u043e\u0436\u0435\u0442 \u0432 psql<\/em>), \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"pgsql\">sudo -i -u postgres #\u0418\u043b\u0438 su postgres psql<\/code><\/pre>\n<pre><code class=\"pgsql\">CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine; ALTER DATABASE \"redmine\" SET datestyle=\"ISO,MDY\";<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438&nbsp;<code>\\q<\/code><\/p>\n<blockquote>\n<p>\u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 PostgreSQL, \u0432 \u0442\u043e\u0436\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c GitLab&nbsp;<sub>(<\/sub><em><sub>\u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 PostgreSQL<\/sub><\/em><sub>)<\/sub>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a.<\/p>\n<\/blockquote>\n<h4>My SQL<\/h4>\n<blockquote>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 MySQL!<\/p>\n<\/blockquote>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 MySQL:<\/p>\n<pre><code class=\"pgsql\">apt-get install mysql-server<\/code><\/pre>\n<p>\u0412\u0445\u043e\u0434 \u0432 mysql:<\/p>\n<pre><code class=\"pgsql\">mysql -u root -p<\/code><\/pre>\n<p>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 MySQL &lt; 8.0 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a \u0432&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#MySQL\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 redmine<\/a>, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0432 \u0435\u043c\u0443 \u043f\u043e\u043b\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438:<\/p>\n<pre><code class=\"pgsql\">CREATE DATABASE redmine CHARACTER SET utf8mb4; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432 MySQL &gt;= 8.0 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438&nbsp;<a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/native-pluggable-authentication.html\" rel=\"noopener noreferrer nofollow\">mysql<em>native<\/em>password<\/a>&nbsp;(\u0438 \u0432\u043e\u0442 \u0435\u0449\u0435&nbsp;<a href=\"https:\/\/dba.stackexchange.com\/questions\/209514\/what-is-mysql-native-password\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>):<\/p>\n<pre><code class=\"pgsql\">ALTER USER 'redmine'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';<\/code><\/pre>\n<blockquote>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 MySQL 8, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c MySQL.<\/p>\n<\/blockquote>\n<h4>RVM<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c&nbsp;<a href=\"https:\/\/packages.debian.org\/ru\/sid\/gnupg2\" rel=\"noopener noreferrer nofollow\">gnupg2<\/a>&nbsp;\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RVM:<\/p>\n<pre><code class=\"pgsql\">apt install gnupg2 gpg2 --keyserver hkp:\/\/keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/<\/code>&nbsp;\u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c rvm \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"pgsql\">curl -sSL https:\/\/get.rvm.io -o rvm.sh<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"pgsql\">wget --output-document=rvm.sh https:\/\/get.rvm.io<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e RVM&nbsp;(\u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438&nbsp;<code>\/opt\/<\/code>):<\/p>\n<pre><code class=\"pgsql\">cat rvm.sh | bash -s stable --rails<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RVM \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430&nbsp;<code>rvm<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&nbsp;<code>www-data<\/code>&nbsp;(\u0447\u0442\u043e\u0431\u044b \u043e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c RVM):<\/p>\n<pre><code>usermod -a -G rvm www-data<\/code><\/pre>\n<p>\u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Ruby On Rails \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u043a&nbsp;(\u0430 \u043c\u043e\u0436\u043d\u043e \u0438&nbsp;<a href=\"https:\/\/rvm.io\/integration\/ubuntu-on-windows\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443<\/a>):<\/p>\n<pre><code class=\"pgsql\">source \/usr\/local\/rvm\/scripts\/rvm<\/code><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0441\u0430\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Redmine 4.1.1, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e Ruby&nbsp;<code>[2.3, 2.6]<\/code>. \u0423\u0437\u043d\u0430\u0435\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 RVM:<\/p>\n<pre><code class=\"pgsql\">rvm list known<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e:<\/p>\n<pre><code class=\"pgsql\">[ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p431] [ruby-]1.9.2[-p330] [ruby-]1.9.3[-p551] [ruby-]2.0.0[-p648] [ruby-]2.1[.10] [ruby-]2.2[.10] [ruby-]2.3[.8] [ruby-]2.4[.9] [ruby-]2.5[.7] [ruby-]2.6[.5] [ruby-]2.7[.0]<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f&nbsp;<code>Ruby 2.6.5<\/code>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0435\u0435 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"pgsql\">rvm install 2.6.5 rvm use 2.6.5<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c&nbsp;<strong>\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Redmine<\/strong>:<\/p>\n<pre><code class=\"pgsql\">rvm gemset create redmine echo \"rvm use ruby-2.6.5@redmine\" &gt; \/opt\/redmine\/.rvmrc<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/redmine\/<\/code>&nbsp;\u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435&nbsp;<code>ruby-2.6.5@redmine<\/code>:<\/p>\n<pre><code class=\"pgsql\">Using \/usr\/local\/rvm\/gems\/ruby-2.6.5 with gemset redmine<\/code><\/pre>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a Redmine<\/h2>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u0424\u0430\u0439\u043b&nbsp;<code>\/opt\/redmine\/config\/database.yml.sample<\/code>&nbsp;\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c&nbsp;<u>\u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414<\/u>. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre><code class=\"pgsql\">touch \/opt\/redmine\/config\/database.yml<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414:<\/p>\n<pre><code class=\"pgsql\">production:   adapter: postgresql   database: redmine   host: localhost   username: redmine   password: password<\/code><\/pre>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"pgsql\">bundle<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<\/blockquote>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f PostgreSQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 \u043a\u043e\u043c\u0430\u043d\u0434\u0430&nbsp;<code>bundle<\/code>&nbsp;\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c&nbsp;<code>pg<\/code>:<\/p>\n<pre><code class=\"pgsql\">Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ... Gem files will remain installed in \/usr\/local\/rvm\/gems\/ruby-2.6.5\/gems\/pg-1.1.4 for inspection. Results logged to \/usr\/local\/rvm\/gems\/ruby-2.6.5\/extensions\/x86_64-linux\/2.6.0\/pg-1.1.4\/gem_make.out   An error occurred while installing pg (1.1.4), and Bundler cannot continue. Make sure that gem install pg -v '1.1.4' --source 'https:\/\/rubygems.org\/' succeeds before bundling.<\/code><\/pre>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u043b&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/53321162\/pg-gem-wont-install-in-rails-app-gemextbuilderror-error-failed-to-build\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install libpq-dev<\/code><\/pre>\n<p>\u0414\u043b\u044f MySQL \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c mysql2&nbsp;(\u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u043a\u0430\u043a \u0438 \u0434\u043b\u044f PostgreSQL). \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/28091203\/mysql2-gem-in-gem-list-but-getting-project-can-not-find-gem\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install build-essential ruby-dev libmysqlclient-dev<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441&nbsp;<a href=\"https:\/\/nokogiri.org\/\" rel=\"noopener noreferrer nofollow\">nokogiri<\/a>, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u043b&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/30432012\/an-error-occurred-while-installing-nokogiri-1-6-0-and-bundler-cannot-continue\/52196693\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev gem install nokogiri<\/code><\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c&nbsp;<code>bundle<\/code><\/p>\n<h4>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0411\u0414<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#Step-5-Session-store-secret-generation\" rel=\"noopener noreferrer nofollow\">5-\u044b\u0439, 6-\u043e\u0439 \u0438 7-\u043e\u0439 \u0448\u0430\u0433\u0438<\/a>:&nbsp;<u>\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0441\u0441\u0438\u0439<\/u>,&nbsp;<u>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0411\u0414<\/u>&nbsp;\u0438&nbsp;<u>\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414<\/u>:<\/p>\n<pre><code class=\"pgsql\">bundle exec rake generate_secret_token RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data<\/code><\/pre>\n<p><strong>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a<\/strong><\/p>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Redmine \u043d\u0430&nbsp;<a href=\"https:\/\/ru.wikipedia.org\/wiki\/WEBrick\" rel=\"noopener noreferrer nofollow\">webrick<\/a>:<\/p>\n<pre><code class=\"pgsql\">bundle exec rails server webrick -e production<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0448\u0435\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043d\u0430 3000 \u043f\u043e\u0440\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0430\u0439\u0442&nbsp;(<code>localhost:3000<\/code>&nbsp;\u0438\u043b\u0438&nbsp;<code>ip:3000<\/code>).<\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/10859671\/webrick-as-production-server-vs-thin-or-unicorn\" rel=\"noopener noreferrer nofollow\">\u0412 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c webrick<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h4>Unicorn<\/h4>\n<p>\u0412&nbsp;<code>\/opt\/redmine\/GemFile<\/code>&nbsp;\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c:<\/p>\n<pre><code class=\"pgsql\">gem 'unicorn'<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f unicorn:<\/p>\n<pre><code class=\"pgsql\">touch \/opt\/redmine\/config\/unicorn.rb<\/code><\/pre>\n<p>\u0418 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0430:<\/p>\n<pre><code class=\"cpp\"># \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0443\u0442\u0435\u0439 \u0434\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app_dir = File.expand_path(\"..\/..\", __FILE__) shared_dir = \"#{app_dir}\/shared\" working_directory app_dir   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 unicorn worker_processes 2 preload_app true timeout 30   # \u0441\u043e\u043a\u0435\u0442 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 nginx listen \"#{shared_dir}\/sockets\/unicorn.sock\", :backlog =&gt; 64   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043b\u043e\u0433\u043e\u0432 stderr_path \"#{shared_dir}\/log\/unicorn.stderr.log\" stdout_path \"#{shared_dir}\/log\/unicorn.stdout.log\"   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 pid \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c unicorn (\u0447\u0442\u043e\u0431\u044b \u043f\u043e \u043d\u0435\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441) pid \"#{shared_dir}\/pids\/unicorn.pid\"   before_fork do |server, worker|     defined?(ActiveRecord::Base) and         ActiveRecord::Base.connection.disconnect! end   after_fork do |server, worker|     defined?(ActiveRecord::Base) and         ActiveRecord::Base.establish_connection end<\/code><\/pre>\n<p>\u0418 \u043e\u043f\u044f\u0442\u044c:<\/p>\n<pre><code class=\"pgsql\">bundle<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430:<\/p>\n<pre><code class=\"pgsql\">mkdir -p \/opt\/redmine\/shared\/pids \/opt\/redmine\/shared\/sockets \/opt\/redmine\/shared\/log chown -R www-data:rvm shared<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432&nbsp;<code>bundle<\/code>&nbsp;(\u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a), \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c unicorn&nbsp;(\u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438&nbsp;<code>\/opt\/redmine\/<\/code>):<\/p>\n<pre><code class=\"pgsql\">unicorn_rails -c config\/unicorn.rb -E production -D<\/code><\/pre>\n<p>\u0423\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 unicorn \u043c\u043e\u0436\u043d\u043e \u043f\u043e&nbsp;<code>pid \u0444\u0430\u0439\u043b\u0443<\/code>:<\/p>\n<pre><code class=\"pgsql\">pkill -QUIT --pidfile \/opt\/redmine\/shared\/pids\/unicorn.pid<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0432\u043e\u0442 \u0435\u0449\u0435&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/4749963\/what-is-the-best-way-to-stop-a-unicorn-server-process-from-running\" rel=\"noopener noreferrer nofollow\">\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 Unicorn<\/a>.<\/p>\n<h4>Nginx<\/h4>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c nginx:<\/p>\n<pre><code class=\"pgsql\">apt-get install nginx<\/code><\/pre>\n<p>\u041f\u0438\u0448\u0435\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 nginx&nbsp;(\u0443 \u043c\u0435\u043d\u044f \u043f\u0443\u0442\u044c&nbsp;<code>\/etc\/nginx\/nginx.conf<\/code>), \u0432 \u0441\u0435\u043a\u0446\u0438\u044e&nbsp;<code>http<\/code>&nbsp;(\u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u043e\u0441\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b):<\/p>\n<pre><code class=\"pgsql\">upstream redmine {     server unix:\/opt\/redmine\/shared\/sockets\/unicorn.sock fail_timeout=0; }   server {     listen 80;     root \/opt\/redmine\/public;     try_files $uri\/index.html $uri @redmine;       location @redmine {         proxy_pass http:\/\/redmine;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header Host $http_host;         proxy_redirect off;     } }<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0432\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 (\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a Redmine \u043f\u043e ip \u0430\u0434\u0440\u0435\u0441\u0443):<\/p>\n<pre><code class=\"pgsql\">user www-data; worker_processes auto; pid \/run\/nginx.pid; include \/etc\/nginx\/modules-enabled\/*.conf;   events {   worker_connections 768; }   http {   sendfile on;   tcp_nopush on;   tcp_nodelay on;   keepalive_timeout 65;   types_hash_max_size 2048;     server_names_hash_bucket_size 64;     include \/etc\/nginx\/mime.types;   default_type application\/octet-stream;     # Logging Settings   access_log \/var\/log\/nginx\/access.log;   error_log \/var\/log\/nginx\/error.log;     # Gzip Settings   gzip on;     upstream redmine {     server unix:\/opt\/redmine\/shared\/sockets\/unicorn.sock fail_timeout=0;   }     server {     listen 80;     root \/opt\/redmine\/public;     try_files $uri\/index.html $uri @redmine;       location @redmine {       proxy_pass http:\/\/redmine;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       proxy_set_header Host $http_host;       proxy_redirect off;     }   } }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c nginx:<\/p>\n<pre><code class=\"pgsql\">service nginx restart<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 nginx \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u043e \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u043e&nbsp;<code>ip<\/code>&nbsp;\u0430\u0434\u0440\u0435\u0441\u0443 (\u0438\u043b\u0438 \u043f\u043e&nbsp;<code>localhost<\/code>), Redmine \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<h2>\u0410\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/h2>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440&nbsp;(\u0438\u043b\u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c Unicorn), \u0442\u043e \u0441\u0430\u043c Unicorn \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442\u0441\u044f, \u043d\u0430\u0434\u043e \u044d\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0438\u0436\u0435 \u043c\u043e\u0436\u043d\u043e&nbsp;<a href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/255845\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>&nbsp;\u0438&nbsp;<a href=\"https:\/\/rtfm.co.ua\/linux-redaktirovanie-systemd-yunit-fajlov-restart-servisa-pri-padenii-i-uvedomlenie-na-pochtu\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0418\u0434\u0435\u043c \u0432&nbsp;<code>\/etc\/systemd\/system\/<\/code>&nbsp;\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b&nbsp;<code>redmine.service<\/code>:<\/p>\n<pre><code class=\"pgsql\">touch \/etc\/systemd\/system\/redmine.service<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430:<\/p>\n<pre><code class=\"pgsql\">[Unit] Description=redminerun After=syslog.target network.target   [Service] Type=forking PIDFile=\/opt\/redmine\/shared\/pids\/unicorn.pid WorkingDirectory=\/opt\/redmine\/ User=www-data Group=rvm Environment=RAILS_ENV=production ExecStart=\/opt\/redmine\/config\/unicorn_start ExecReload=\/opt\/redmine\/config\/unicorn_reload ExecStop=\/opt\/redmine\/config\/unicorn_stop OOMScoreAdjust=-100 TimeoutSec=30 Restart=always RestartSec=20s   [Install] WantedBy=multi-user.target<\/code><\/pre>\n<p>\u0412\u043a\u0440\u0430\u0442\u0446\u0435:<\/p>\n<ul>\n<li>\n<p><u>PIDFile<\/u>&nbsp;&#8212;&nbsp;<code>pid \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/code>, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/p>\n<\/li>\n<li>\n<p><u>User \u0438 Group<\/u>&nbsp;&#8212; \u044e\u0437\u0435\u0440 \u0438 \u0433\u0440\u0443\u043f\u043f\u0430, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a<\/p>\n<\/li>\n<li>\n<p><u>ExecStart<\/u>&nbsp;&#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/p>\n<\/li>\n<li>\n<p><u>ExecReload<\/u>&nbsp;&#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<li>\n<p><u>ExecStop<\/u>&nbsp;&#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/p>\n<\/li>\n<li>\n<p><u>RestartSec<\/u>&nbsp;&#8212; \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0435\u0440\u0435\u0437 N \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<p><code>ExecStart<\/code>,&nbsp;<code>ExecReload<\/code>,&nbsp;<code>ExecStop<\/code>&nbsp;\u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u044f\u043c\u0438 \u0434\u043e bash \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0439 \u0441\u0434\u0435\u043b\u0430\u043d\u043e&nbsp;(\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u0430\u0440\u0442\u0430\/\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c :))<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432&nbsp;<code>\/opt\/redmine\/config\/<\/code>&nbsp;\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u0433\u0440\u0443\u043f\u043f\u0443, \u0438 \u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a:<\/p>\n<pre><code class=\"pgsql\">cd \/opt\/redmine\/config\/ touch unicorn_start unicorn_reload unicorn_stop chown www-data:rvm unicorn_* chmod +x unicorn_*<\/code><\/pre>\n<p><code>unicorn_start<\/code>&nbsp;\u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 unicorn&nbsp;(\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c&nbsp;<code>rvm<\/code>, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 redmine &#8212; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c unicorn):<\/p>\n<pre><code class=\"pgsql\">#!\/bin\/bash -   source \/usr\/local\/rvm\/scripts\/rvm cd \/opt\/redmine\/ unicorn_rails -c config\/unicorn.rb -E production -D<\/code><\/pre>\n<p><code>unicorn_stop<\/code>&nbsp;\u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430:<\/p>\n<pre><code class=\"pgsql\">#!\/bin\/bash -   pkill -QUIT --pidfile \/opt\/redmine\/shared\/pids\/unicorn.pid<\/code><\/pre>\n<p><code>unicorn_reload<\/code>&nbsp;\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430&nbsp;(\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c):<\/p>\n<pre><code class=\"pgsql\">#!\/bin\/bash -   \/opt\/redmine\/config\/unicorn_stop \/opt\/redmine\/config\/unicorn_start<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c:<\/p>\n<pre><code class=\"pgsql\">systemctl status redmine   \u25cf redmine.service - redminerun    Loaded: loaded (\/etc\/systemd\/system\/redmine.service; disabled; vendor preset: enabled)    Active: inactive (dead)<\/code><\/pre>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441:<\/p>\n<pre><code class=\"pgsql\">systemctl enable redmine<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e&nbsp;<code>start<\/code>\/<code>reload<\/code>\/<code>stop<\/code>.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441:<\/p>\n<pre><code class=\"pgsql\">systemctl start redmine<\/code><\/pre>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e,&nbsp;<u>\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043b\u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f<\/u>&nbsp;Unicorn &#8212; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043d\u044f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438!<\/p>\n<\/blockquote>\n<h2>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/128048\/\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e Ruby on Rails \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 ruby (Nginx + Unicorn)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.8host.com\/blog\/razvertyvanie-rails-prilozheniya-na-unicorn-i-nginx-v-ubuntu-14-04\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 Rails-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Unicorn \u0438 Nginx \u0432 Ubuntu 14.04<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/120368\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0432\u044f\u0437\u043a\u0430 rvm + Rails + Nginx + Unicorn \u0438\u043b\u0438 \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0440\u0435\u043b\u044c\u0441\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/itisgood.ru\/2019\/06\/13\/kak-proverit-versiju-paketa-linux-pered-ego-ustanovkoj\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 Linux \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall\" rel=\"noopener noreferrer nofollow\">\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0441 \u0441\u0430\u0439\u0442\u0430 www.redmine.org<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.8host.com\/blog\/ustanovka-ruby-on-rails-s-pomoshhyu-rvm-v-ubuntu-18-04\/\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Ruby on Rails \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RVM<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/internet-lab.ru\/mysql8_ubuntu18_install\" rel=\"noopener noreferrer nofollow\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MySQL 8<\/a>&nbsp;\u0438&nbsp;<a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/upgrading-from-previous-series.html#upgrade-caching-sha2-password-compatible-connectors\" rel=\"noopener noreferrer nofollow\">Changes in MySQL 8.0<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.php.net\/manual\/ru\/mysqli.requirements.php\" rel=\"noopener noreferrer nofollow\">\u0415\u0449\u0435 \u043a\u043e\u0435 \u0447\u0442\u043e \u043f\u0440\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 MySQL<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/native-pluggable-authentication.html\" rel=\"noopener noreferrer nofollow\">Native Pluggable Authentication<\/a>,&nbsp;<a href=\"https:\/\/dba.stackexchange.com\/questions\/209514\/what-is-mysql-native-password\" rel=\"noopener noreferrer nofollow\">What is mysql_native_password?<\/a>,&nbsp;<a href=\"https:\/\/qna.habr.com\/q\/534672\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0432 MySQL 8.0 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 default_authentication_plugin?<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/byurrer.ru\/ustanovka-redmine-na-steke-rvm-ror-unicorn-nginx.html\" rel=\"noopener noreferrer nofollow\">\u0410\u0432\u0442\u043e\u0440: \u0412\u0438\u0442\u0430\u043b\u0438\u0439 \u0411\u0443\u0442\u0443\u0440\u043b\u0438\u043d<\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/539710\/\"> https:\/\/habr.com\/ru\/post\/539710\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<blockquote>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u041e\u0421 Linux \u0441 Redmine \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c<sub>&nbsp;(\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043f\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438)<\/sub>, \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \u0412\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/blockquote>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p><strong>\u0412 \u043e\u0431\u0449\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0442\u0430\u043a<\/strong>:&nbsp;<u>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Redmine \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u0434\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 nginx<\/u>.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a&nbsp;<a href=\"https:\/\/www.redmine.org\/\" rel=\"noopener noreferrer nofollow\">Redmine<\/a>&nbsp;\u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430&nbsp;<a href=\"https:\/\/ru.wikipedia.org\/wiki\/Ruby_on_Rails\" rel=\"noopener noreferrer nofollow\">RoR<\/a>, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0442\u044c RoR \u0441\u0440\u0435\u0434\u0443, \u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e&nbsp;<u>\u0440\u0430\u0437\u043d\u044b\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/u>. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u0435\u043d&nbsp;<strong>\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0439<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<blockquote>\n<p><a href=\"https:\/\/rvm.io\/\" rel=\"noopener noreferrer nofollow\">RVM<\/a>&nbsp;&#8212; \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0439 \u0441\u0440\u0435\u0434 ruby, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0439 \u0438\u043d\u0442\u0435\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0434\u0436\u0435\u043c\u0430\u043c\u0438. \u041d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b&nbsp;<strong>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 nginx. \u041e\u0434\u043d\u0430\u043a\u043e, nginx \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<blockquote>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Unicorn_(%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80)\" rel=\"noopener noreferrer nofollow\">Unicorn<\/a>&nbsp;&#8212; \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f&nbsp;<a href=\"https:\/\/habr.com\/ru\/post\/131429\/\" rel=\"noopener noreferrer nofollow\">Rack<\/a>&nbsp;(\u0438 RoR \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435)&nbsp;\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c&nbsp;<a href=\"https:\/\/www.8host.com\/blog\/razvyortyvanie-rails-prilozhenij-na-passenger-i-nginx-v-centos-6-5\/\" rel=\"noopener noreferrer nofollow\">passenger<\/a>, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e&nbsp;<u>nginx \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0441 passenger<\/u>, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 nginx. \u0410 \u0435\u0449\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e&nbsp;<strong>Unicorn \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/strong>, \u0430 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439.<\/p>\n<\/blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c&nbsp;<strong>\u0437\u0430\u0434\u0430\u0447\u0430<\/strong>&nbsp;\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u044f\u0441\u043d\u043e\u0439:&nbsp;<u>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Redmine \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0432 \u0441\u0442\u0435\u043a RoR+Unicorn+Nginx, \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c<\/u>.<\/p>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<h4>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 ipv6<\/h4>\n<p><strong><em>                   \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/em><\/strong><em>: \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/em>&nbsp;\ud83d\ude42<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0430 VPS Ubuntu 16.04 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435&nbsp;<code>apt-get install<\/code>&nbsp;\u043d\u0435 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e&nbsp;<code>ipv6<\/code>:<\/p>\n<pre><code class=\"sql\">0% [Connecting to archive.ubuntu.com (2001:67c:1562::15)]<\/code><\/pre>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c ipv6<\/strong>&nbsp;\u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432&nbsp;<a href=\"https:\/\/adminunix.ru\/nastrojka-sysctl\/\" rel=\"noopener noreferrer nofollow\">\/etc\/sysctl.conf<\/a>:<\/p>\n<pre><code class=\"sql\">echo '' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.all.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.default.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf echo 'net.ipv6.conf.lo.disable_ipv6 = 1' &gt;&gt; \/etc\/sysctl.conf sysctl -p<\/code><\/pre>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043e\u0444\u0442\u0430<\/h4>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/CURL\" rel=\"noopener noreferrer nofollow\">curl<\/a>&nbsp;\u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438&nbsp;<a href=\"https:\/\/rvm.io\/\" rel=\"noopener noreferrer nofollow\">RVM<\/a>&nbsp;(Ruby Version Manager):<\/p>\n<pre><code class=\"sql\">apt-get install curl<\/code><\/pre>\n<p><strong><em>                      \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/em><\/strong><em>: \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043e\u0444\u0442\u043e\u043c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0434\u0435\u043b<\/em>&nbsp;\ud83d\ude42<\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Midnight_Commander\" rel=\"noopener noreferrer nofollow\">Midnight Commander<\/a>&nbsp;(\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440):<\/p>\n<pre><code class=\"php\">apt-get install mc<\/code><\/pre>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Nano\" rel=\"noopener noreferrer nofollow\">Nano<\/a>&nbsp;(\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440):<\/p>\n<pre><code class=\"cpp\">apt-get install nano<\/code><\/pre>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 Redmine<\/h4>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/Download#Stable-releases\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Redmine<\/a>&nbsp;4.1.1. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/<\/code>&nbsp;<u>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0442\u0443\u0434\u0430 \u0430\u0440\u0445\u0438\u0432<\/u>,&nbsp;<u>\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c<\/u>&nbsp;<u>\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432 redmine<\/u>&nbsp;\u0438&nbsp;<u>\u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0430\u0440\u0445\u0438\u0432<\/u>:<\/p>\n<pre><code class=\"cpp\">wget --no-check-certificate https:\/\/www.redmine.org\/releases\/redmine-4.1.1.tar.gz tar xvzf redmine-4.1.1.tar.gz mv redmine-4.1.1 redmine rm redmine-4.1.1.tar.gz<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0443\u0442\u044c \u0434\u043e Redmine:&nbsp;<code>\/opt\/redmine\/<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0432 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430&nbsp;<code>1000<\/code>, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439 \u0432\u043b\u0430\u0434\u0435\u043b&nbsp;<code>www-data<\/code>&nbsp;(\u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442 \u044e\u0437\u0435\u0440\u0430&nbsp;<code>www-data<\/code>):<\/p>\n<pre><code class=\"cpp\">chown -R www-data \/opt\/redmine\/<\/code><\/pre>\n<h4>PostgreSQL<\/h4>\n<blockquote>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 PostgreSQL!<\/p>\n<\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 redmine &#8212;&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#Supported-database-back-ends\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c PostgreSQL \u0432\u0435\u0440\u0441\u0438\u0438 &gt;9.2<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"pgsql\">apt policy postgresql<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<pre><code class=\"pgsql\">postgresql:   Installed: (none)   Candidate: 9.5+173ubuntu0.3   Version table:      9.5+173ubuntu0.3 500         500 http:\/\/archive.ubuntu.com\/ubuntu xenial-updates\/main amd64 Packages         500 http:\/\/security.ubuntu.com\/ubuntu xenial-security\/main amd64 Packages      9.5+173 500         500 http:\/\/archive.ubuntu.com\/ubuntu xenial\/main amd64 Packages<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u0438\u043d\u0430\u0447\u0435 \u0438\u0449\u0435\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<pre><code class=\"pgsql\">apt install postgresql<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 PostgreSQL&nbsp;(<em>\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0439\u0442\u0438 \u043d\u0430\u0434\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u044e\u0437\u0435\u0440\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u044e\u0437\u0435\u0440 postgres \u043c\u043e\u0436\u0435\u0442 \u0432 psql<\/em>), \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"pgsql\">sudo -i -u postgres #\u0418\u043b\u0438 su postgres psql<\/code><\/pre>\n<pre><code class=\"pgsql\">CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine; ALTER DATABASE \"redmine\" SET datestyle=\"ISO,MDY\";<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438&nbsp;<code>\\q<\/code><\/p>\n<blockquote>\n<p>\u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 PostgreSQL, \u0432 \u0442\u043e\u0436\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c GitLab&nbsp;<sub>(<\/sub><em><sub>\u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 PostgreSQL<\/sub><\/em><sub>)<\/sub>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a.<\/p>\n<\/blockquote>\n<h4>My SQL<\/h4>\n<blockquote>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 MySQL!<\/p>\n<\/blockquote>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 MySQL:<\/p>\n<pre><code class=\"pgsql\">apt-get install mysql-server<\/code><\/pre>\n<p>\u0412\u0445\u043e\u0434 \u0432 mysql:<\/p>\n<pre><code class=\"pgsql\">mysql -u root -p<\/code><\/pre>\n<p>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 MySQL &lt; 8.0 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a \u0432&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#MySQL\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 redmine<\/a>, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0432 \u0435\u043c\u0443 \u043f\u043e\u043b\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438:<\/p>\n<pre><code class=\"pgsql\">CREATE DATABASE redmine CHARACTER SET utf8mb4; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';<\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0432 MySQL &gt;= 8.0 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438&nbsp;<a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/native-pluggable-authentication.html\" rel=\"noopener noreferrer nofollow\">mysql<em>native<\/em>password<\/a>&nbsp;(\u0438 \u0432\u043e\u0442 \u0435\u0449\u0435&nbsp;<a href=\"https:\/\/dba.stackexchange.com\/questions\/209514\/what-is-mysql-native-password\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>):<\/p>\n<pre><code class=\"pgsql\">ALTER USER 'redmine'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';<\/code><\/pre>\n<blockquote>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0421\u0423\u0411\u0414 MySQL 8, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c MySQL.<\/p>\n<\/blockquote>\n<h4>RVM<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c&nbsp;<a href=\"https:\/\/packages.debian.org\/ru\/sid\/gnupg2\" rel=\"noopener noreferrer nofollow\">gnupg2<\/a>&nbsp;\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RVM:<\/p>\n<pre><code class=\"pgsql\">apt install gnupg2 gpg2 --keyserver hkp:\/\/keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/<\/code>&nbsp;\u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c rvm \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"pgsql\">curl -sSL https:\/\/get.rvm.io -o rvm.sh<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"pgsql\">wget --output-document=rvm.sh https:\/\/get.rvm.io<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e RVM&nbsp;(\u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438&nbsp;<code>\/opt\/<\/code>):<\/p>\n<pre><code class=\"pgsql\">cat rvm.sh | bash -s stable --rails<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 RVM \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430&nbsp;<code>rvm<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&nbsp;<code>www-data<\/code>&nbsp;(\u0447\u0442\u043e\u0431\u044b \u043e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c RVM):<\/p>\n<pre><code>usermod -a -G rvm www-data<\/code><\/pre>\n<p>\u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Ruby On Rails \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u043a&nbsp;(\u0430 \u043c\u043e\u0436\u043d\u043e \u0438&nbsp;<a href=\"https:\/\/rvm.io\/integration\/ubuntu-on-windows\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443<\/a>):<\/p>\n<pre><code class=\"pgsql\">source \/usr\/local\/rvm\/scripts\/rvm<\/code><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0441\u0430\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Redmine 4.1.1, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e Ruby&nbsp;<code>[2.3, 2.6]<\/code>. \u0423\u0437\u043d\u0430\u0435\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 RVM:<\/p>\n<pre><code class=\"pgsql\">rvm list known<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e:<\/p>\n<pre><code class=\"pgsql\">[ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p431] [ruby-]1.9.2[-p330] [ruby-]1.9.3[-p551] [ruby-]2.0.0[-p648] [ruby-]2.1[.10] [ruby-]2.2[.10] [ruby-]2.3[.8] [ruby-]2.4[.9] [ruby-]2.5[.7] [ruby-]2.6[.5] [ruby-]2.7[.0]<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f&nbsp;<code>Ruby 2.6.5<\/code>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0435\u0435 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<pre><code class=\"pgsql\">rvm install 2.6.5 rvm use 2.6.5<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c&nbsp;<strong>\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Redmine<\/strong>:<\/p>\n<pre><code class=\"pgsql\">rvm gemset create redmine echo \"rvm use ruby-2.6.5@redmine\" &gt; \/opt\/redmine\/.rvmrc<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e&nbsp;<code>\/opt\/redmine\/<\/code>&nbsp;\u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435&nbsp;<code>ruby-2.6.5@redmine<\/code>:<\/p>\n<pre><code class=\"pgsql\">Using \/usr\/local\/rvm\/gems\/ruby-2.6.5 with gemset redmine<\/code><\/pre>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a Redmine<\/h2>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>\u0424\u0430\u0439\u043b&nbsp;<code>\/opt\/redmine\/config\/database.yml.sample<\/code>&nbsp;\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c&nbsp;<u>\u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414<\/u>. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433:<\/p>\n<pre><code class=\"pgsql\">touch \/opt\/redmine\/config\/database.yml<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0411\u0414:<\/p>\n<pre><code class=\"pgsql\">production:   adapter: postgresql   database: redmine   host: localhost   username: redmine   password: password<\/code><\/pre>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"pgsql\">bundle<\/code><\/pre>\n<blockquote>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 RoR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<\/blockquote>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f PostgreSQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0421\u0423\u0411\u0414 \u043a\u043e\u043c\u0430\u043d\u0434\u0430&nbsp;<code>bundle<\/code>&nbsp;\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c&nbsp;<code>pg<\/code>:<\/p>\n<pre><code class=\"pgsql\">Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ... Gem files will remain installed in \/usr\/local\/rvm\/gems\/ruby-2.6.5\/gems\/pg-1.1.4 for inspection. Results logged to \/usr\/local\/rvm\/gems\/ruby-2.6.5\/extensions\/x86_64-linux\/2.6.0\/pg-1.1.4\/gem_make.out   An error occurred while installing pg (1.1.4), and Bundler cannot continue. Make sure that gem install pg -v '1.1.4' --source 'https:\/\/rubygems.org\/' succeeds before bundling.<\/code><\/pre>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u043b&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/53321162\/pg-gem-wont-install-in-rails-app-gemextbuilderror-error-failed-to-build\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install libpq-dev<\/code><\/pre>\n<p>\u0414\u043b\u044f MySQL \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c mysql2&nbsp;(\u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u043a\u0430\u043a \u0438 \u0434\u043b\u044f PostgreSQL). \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/28091203\/mysql2-gem-in-gem-list-but-getting-project-can-not-find-gem\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install build-essential ruby-dev libmysqlclient-dev<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441&nbsp;<a href=\"https:\/\/nokogiri.org\/\" rel=\"noopener noreferrer nofollow\">nokogiri<\/a>, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u043b&nbsp;<a href=\"https:\/\/stackoverflow.com\/questions\/30432012\/an-error-occurred-while-installing-nokogiri-1-6-0-and-bundler-cannot-continue\/52196693\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"pgsql\">apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev gem install nokogiri<\/code><\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c&nbsp;<code>bundle<\/code><\/p>\n<h4>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0411\u0414<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&nbsp;<a href=\"https:\/\/www.redmine.org\/projects\/redmine\/wiki\/redmineinstall#Step-5-Session-store-secret-generation\" rel=\"noopener noreferrer nofollow\">5-\u044b\u0439, 6-\u043e\u0439 \u0438 7-\u043e\u0439 \u0448\u0430\u0433\u0438<\/a>:&nbsp;<u>\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0441\u0441\u0438\u0439<\/u>,&nbsp;<u>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0411\u0414<\/u>&nbsp;\u0438&nbsp;<u>\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414<\/u>:<\/p>\n<pre><code class=\"pgsql\">bundle exec rake generate_secret_token RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data<\/code><\/pre>\n<p><strong>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a<\/strong><\/p>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Redmine \u043d\u0430&nbsp;<a href=\"https:\/\/ru.wikipedia.org\/wiki\/WEBrick\" rel=\"noopener noreferrer nofollow\">webrick<\/a>:<\/p>\n<pre><code class=\"pgsql\">bundle exec rails server webrick -e production<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0448\u0435\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u043d\u0430 3000 \u043f\u043e\u0440\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0430\u0439\u0442&nbsp;(<code>localhost:3000<\/code>&nbsp;\u0438\u043b\u0438&nbsp;<code>ip:3000<\/code>).<\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/10859671\/webrick-as-production-server-vs-thin-or-unicorn\" rel=\"noopener noreferrer nofollow\">\u0412 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c webrick<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h4>Unicorn<\/h4>\n<p>\u0412&nbsp;<code>\/opt\/redmine\/GemFile<\/code>&nbsp;\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c:<\/p>\n<pre><code class=\"pgsql\">gem 'unicorn'<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f unicorn:<\/p>\n<pre><code class=\"pgsql\">touch \/opt\/redmine\/config\/unicorn.rb<\/code><\/pre>\n<p>\u0418 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0430:<\/p>\n<pre><code class=\"cpp\"># \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0443\u0442\u0435\u0439 \u0434\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app_dir = File.expand_path(\"..\/..\", __FILE__) shared_dir = \"#{app_dir}\/shared\" working_directory app_dir   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 unicorn worker_processes 2 preload_app true timeout 30   # \u0441\u043e\u043a\u0435\u0442 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 nginx listen \"#{shared_dir}\/sockets\/unicorn.sock\", :backlog =&gt; 64   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043b\u043e\u0433\u043e\u0432 stderr_path \"#{shared_dir}\/log\/unicorn.stderr.log\" stdout_path \"#{shared_dir}\/log\/unicorn.stdout.log\"   # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 pid \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c unicorn (\u0447\u0442\u043e\u0431\u044b \u043f\u043e \u043d\u0435\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441) pid \"#{shared_dir}\/pids\/unicorn.pid\"   before_fork do |server, worker|     defined?(ActiveRecord::Base) and         ActiveRecord::Base.connection.disconnect! end   after_fork do |server, worker|     defined?(ActiveRecord::Base) and         ActiveRecord::Base.establish_connection end<\/code><\/pre>\n<p>\u0418 \u043e\u043f\u044f\u0442\u044c:<\/p>\n<pre><code class=\"pgsql\">bundle<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430:<\/p>\n<pre><code class=\"pgsql\">mkdir -p \/opt\/redmine\/shared\/pids \/opt\/redmine\/shared\/sockets \/opt\/redmine\/shared\/log <\/code><\/pre>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-317109","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=317109"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317109\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}