Установка Redmine PostgreSQL Nginx

Установка настройка и обновление связки REDMINE с GEM, RUBY, RAILS, POSTGRESQL, PASSENGER, NGINX

Redmine — открытое серверное веб-приложение для управления проектами и задачами (в том числе для отслеживания ошибок). Redmine написан на Ruby и представляет собой приложение на основе широко известного веб-фреймворка Ruby on Rails.

Функциональные возможности

Данный продукт предоставляет следующие возможности:

* ведение нескольких проектов; * гибкая система доступа, основанная на ролях; * система отслеживания ошибок(багтрекер); * диаграмма Ганта и календарь; * ведение новостей проекта, документов и управление файлами; * оповещение об изменениях с помощью RSS-потоков и электронной почты; * вики для каждого проекта; * форумы для каждого проекта; * учёт временных затрат; * настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей; * лёгкая интеграция с системами управления версиями (SVN, CVS, Git, Mercurial, Bazaar и Darcs); * создание записей об ошибках на основе полученных писем; * поддержка множественной аутентификации LDAP; * возможность самостоятельной регистрации новых пользователей; * многоязыковой интерфейс (в том числе русский); * поддержка СУБД MySQL, PostgreSQL, SQLite, Oracle.

Базовая установка CentOS

Версия 6.9, х64, minimal

Перед началом необходимо добавить репозитории:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 

Этот репозиторий взят с сайта postgre http://www.postgresql.org/download/linux/redhat/#yum

yum install http://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/pgdg-redhat96-9.6-1.noarch.rpm

А в CentOS-Base.repo включить centosplus

Поставить библиотеки postgresql. Поставить нужно сейчас иначе система по умолчанию поставит версию 8.4

yum install postgresql96-libs -y

Далее, обновить.

yum update -y

Отключение сервисов

Необходимо отключить SELinux. Для этого в файле /etc/selinux/config заменить

SELINUX=enforced

на

SELINUX=disabled

Необходимо отключить IPTables:

chkconfig iptables off

и

chkconfig ip6tables off

После чего перезагрузить сервер.

Установка дополнительного ПО

Все последующие действия выполняем только под логином root. Многие свои шаги буду перечислять без пояснений именно в той последовательности, как я выполнял.

yum install libXft libpng libXrender libXinerama libXcursor libXcomposite libXdamage libXfixes pixman libXau
yum install autoconf automake bison byacc cscope ctags cvs diffstat doxygen elfutils flex gcc gcc-c++ gcc-gfortran gettext git indent intltool libtool patch patchutils rcs redhat-rpm-config rpm-build subversion swig systemtap

Далее,

yum install glibc-utils ncurses-devel gdbm-devel openssl-devel zlib-devel readline-devel libyaml-devel curl-devel expat-devel man man-pages jwhois bind-utils mc wget which tcpdump traceroute ntp vim telnet net-snmp net-snmp-utils mlocate htop sysstat texinfo
yum install libxml2-devel libxslt-devel libxml2 libxml2-python libxml2-static perl-XML-LibXML python-lxml

Установка YAML

yum install PyYAML perl-CPAN-Meta-YAML perl-Test-YAML-Valid perl-YAML perl-YAML-LibYAML perl-YAML-Syck perl-YAML-Tiny yaml-cpp yaml-cpp-devel

Установка RVM

curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://get.rvm.io | bash -s stable

Обновление среды shell

source ~/.bash_profile
echo 'PATH=$PATH:/usr/local/bin' >> /root/.bash_profile
echo 'export PATH' >> /root/.bash_profile
echo 'PATH=$PATH:/usr/local/bin' >> /etc/profile
echo 'export PATH' >> /etc/profile
 
echo 'PATH=$PATH:/usr/local/rvm/bin' >> /root/.bash_profile
echo 'export PATH' >> /root/.bash_profile
echo 'PATH=$PATH:/usr/local/rvm/bin' >> /etc/profile
echo 'export PATH' >> /etc/profile
 
echo 'PATH=$PATH:/usr/lib' >> /root/.bash_profile
echo 'export PATH' >> /root/.bash_profile
echo 'PATH=$PATH:/usr/lib' >> /etc/profile
echo 'export PATH' >> /etc/profile
 
echo 'PATH=$PATH:/usr/lib64' >> /root/.bash_profile
echo 'export PATH' >> /root/.bash_profile
echo 'PATH=$PATH:/usr/lib64' >> /etc/profile
echo 'export PATH' >> /etc/profile

В /etc/sudoers

Найти следующие строки:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

И заменить на:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/lib:/usr/lib64:/usr/local/rvm/bin

После этого откройте новое окно терминала и проверьте пути командой

printenv PATH

Для применения всех изменений необходимо перезайти

Установка дополнительных пакетов для RVM

Необходимо найти требования:

rvm requirements

Тут установятся недостающие пакеты.

Идем дальше:

rvm cleanup all
rvm get head
rvm get master
rvm pkg remove
rvm requirements run
rvm pkg install autoconf --verify-downloads 1
rvm --skip-autoreconf pkg install iconv
export PATH=$rvm_path/bin:$PATH

Установка GEM 2.7.4 и RUBY 2.4.3

rvm list known
rvm install 2.4 --with-iconv-dir=/usr/local/rvm/usr

Вывод:

ruby-2.4.3 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Install of ruby-2.4.3 - #complete
Ruby was built without documentation, to build it run: rvm docs generate-ri
gem update --system
gem -v

Вывод:

2.7.4
rvm use ruby 2.4.3 --default

Вывод:

Using /usr/local/rvm/gems/ruby-2.4.3
rvm list

Вывод:

=* ruby-2.4.3 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
rvm list known

Вывод:

# MRI Rubies
[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[.9]
[ruby-]2.3[.6]
[ruby-]2.4[.3]
[ruby-]2.5[.0]
ruby-head

# for forks use: rvm install ruby-head-<name> --url https://github.com/github/ruby.git --branch 2.2

# JRuby
jruby-1.6[.8]
jruby-1.7[.27]
jruby[-9.1.15.0]
jruby-head

# Rubinius
rbx-1[.4.3]
rbx-2.3[.0]
rbx-2.4[.1]
rbx-2[.5.8]
rbx-3[.90]
rbx-head

# Opal
opal

# Minimalistic ruby implementation - ISO 30170:2012
mruby-1.0.0
mruby-1.1.0
mruby-1.2.0
mruby-1[.3.0]
mruby[-head]

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]

# Topaz
topaz

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head

# IronRuby
ironruby[-1.1.3]
ironruby-head
rvm gemset list

Вывод:

gemsets for ruby-2.4.3 (found in /usr/local/rvm/gems/ruby-2.4.3)
=> (default)
   global
rvm use 2.4.3@gemset2 --create

Вывод:

ruby-2.4.3 - #gemset created /usr/local/rvm/gems/ruby-2.4.3@gemset2
ruby-2.4.3 - #generating gemset2 wrappers.........
Using /usr/local/rvm/gems/ruby-2.4.3 with gemset gemset2
rvm use 2.4.3@gemset2 --default

Вывод:

Using /usr/local/rvm/gems/ruby-2.4.3 with gemset gemset2
printenv PATH

Вывод:

/usr/local/rvm/gems/ruby-2.4.3@gemset2/bin:/usr/local/rvm/gems/ruby-2.4.3@global/bin:/usr/local/rvm/rubies/ruby-2.4.3/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/lib:/usr/lib64:/root/bin:/usr/local/bin:/usr/lib:/usr/lib64

Установка RAILS 4.2.10

gem install nokogiri -- --use-system-libraries
gem list rails --all --remote
gem install rails -v 4.2.10
rails -v

Вывод:

Rails 4.2.10

Установка и настройка POSTGRESQL 9.6

Установка

Устанавливаем:

yum install postgresql96 postgresql96-contrib postgresql96-devel postgresql96-server

Предварительная настройка

Прописываем пути:

echo 'PATH=$PATH:/usr/pgsql-9.6/bin' >> /root/.bash_profile
echo 'export PATH' >> /root/.bash_profile
echo 'PATH=$PATH:/usr/pgsql-9.6/bin' >> /etc/profile
echo 'export PATH' >> /etc/profile

В /etc/sudoers

Найти следующие строки:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/lib:/usr/lib64:/usr/local/rvm/bin

И заменить на:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/lib:/usr/lib64:/usr/local/rvm/bin:/usr/pgsql-9.6/bin

Далее, как и первый раз, переавторизовываемся и проверяем путь:

printenv PATH

Вывод:

/usr/local/rvm/gems/ruby-2.4.3@gemset2/bin:/usr/local/rvm/gems/ruby-2.4.3@global/bin:/usr/local/rvm/rubies/ruby-2.4.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/local/rvm/bin:/usr/lib:/usr/lib64:/usr/pgsql-9.6/bin:/root/bin:/usr/local/bin:/usr/local/rvm/bin:/usr/lib:/usr/lib64:/usr/pgsql-9.6/bin

Настройка

Если все верно, приступаем к настройке postgresql

/usr/pgsql-9.6/bin/postgresql96-setup initdb
Инициализируется база данных:                              [  OK  ]
su postgres

Инициализация первоначальной конфигурации БД постгреса с правильной локалью, должна запускаться от пользователя постгрес

/usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/data/ --locale=ru_RU.UTF-8

Вывод:

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "ru_RU.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "russian".

Data page checksums are disabled.

creating directory /var/lib/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/pgsql-9.6/bin/pg_ctl -D /var/lib/pgsql/data/ -l logfile start
bash-4.1$ exit
service postgresql-9.6 start

Создание пользователя к БД

su postgres
bash-4.1$ createuser -P redmine_user

Вводим пароль к БД:

Введите пароль для новой роли: my_password
Повторите его: my_password

Создаем БД и прописываем GRANT

bash-4.1$ psql
postgres=# CREATE DATABASE redmine_db;
postgres=# GRANT ALL ON DATABASE redmine_db to redmine_user;

Напоследок уточним установленную версию:

SELECT version();

По окончанию выходим из консоли СУБД

postgres=# \q
bash-4.1$ exit

Завершение

Проверяем библиотеки

ll /usr/pgsql-9.6/bin
chkconfig postgresql-9.6 on

Необходимо поправить метод авторизации к СУБД

vi /var/lib/pgsql/9.6/data/pg_hba.conf

Было:

...
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Должно быть

...
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Установка ImageMagick

yum install ImageMagick ImageMagick-c++ ImageMagick-devel ImageMagick-perl

Установка поддержки шрифтов TrueType

yum install ttmkfdir cabextract libmspack
wget https://www.mirrorservice.org/sites/dl.atrpms.net/el6.9-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm

P.S. ATRPMS как написано умер. Зеркала и описание тут https://www.webfoobar.com/index.php/node/47

rpm -ihv atrpms-repo-6-7.el6.x86_64.rpm

Вывод

warning: atrpms-repo-6-7.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 66534c2b: NOKEY
Preparing...                ########################################### [100%]
1:atrpms-repo            ########################################### [100%]

Заменить зеркала в репозитории atrpms.repo:

[atrpms]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
failovermethod=priority
baseurl=https://www.mirrorservice.org/sites/dl.atrpms.net/el$releasever-$basearch/atrpms/stable
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-atrpms

[atrpms-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms - Debug
failovermethod=priority
baseurl=https://www.mirrorservice.org/sites/dl.atrpms.net/debug/el$releasever-$basearch/atrpms/stable
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-atrpms

[atrpms-source]
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms - Source
failovermethod=priority
baseurl=https://www.mirrorservice.org/sites/dl.atrpms.net/src/el$releasever-$basearch/atrpms/stable
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-atrpms
yum install chkfontpath
wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec

Требуется изменить ссылку на целевые файлы в файле msttcorefonts-2.0-1.spec.

function set_mirror {
        local r m
        r=`expr $RANDOM % $mirror_count + 1`
        m=`echo $mirrors |cut -d+ -f$r`
        mirror="http://${m}.dl.sourceforge.net/sourceforge/corefonts/"
}

Ссылка должна выглядеть следующим образом:

        mirror="http://${m}.dl.sourceforge.net/project/corefonts/the%20fonts/final/"
rpmbuild -bb msttcorefonts-2.0-1.spec

Сборка RPM пакета у меня обрывалась пару раз из-за обрыва связи с сервером исходных файлов. Например, так

...
+ m=umn
+ mirror=http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/
+ for f in '$download_files'
+ check_file andale32.exe
+ matches=
+ '[' '!' -r andale32.exe ']'
+ echo 'andale32.exe does not exist'
andale32.exe does not exist
+ return
+ '[' '!' ']'
+ download http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/ andale32.exe
+ wget --timeout=5 -O andale32.exe http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
--2013-07-06 00:22:34--  http://umn.dl.sourceforge.net/project/corefonts/the%20fonts/final/andale32.exe
Resolving umn.dl.sourceforge.net... failed: Name or service not known.
wget: unable to resolve host address `umn.dl.sourceforge.net'
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)

Ошибки сборки пакетов:
    line 19: buildprereq is deprecated: BuildPrereq: /usr/bin/ttmkfdir
    line 20: buildprereq is deprecated: BuildPrereq: wget
    line 21: buildprereq is deprecated: BuildPrereq: cabextract
    line 22: prereq is deprecated: Prereq: /usr/sbin/chkfontpath
    Неверный код возврата из /var/tmp/rpm-tmp.Ep0ked (%prep)

Если у вас возникнет такая же ситуация, просто повторите операцию сборки до тех пор, пока пакет не будет собран. При успешном выполнении, в консоли будет показан путь, куда был записан пакет. В моём случае:

...
Записан: /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm

Устанавливаем

rpm -ivh /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
cd /usr/share/fonts/msttcorefonts
mkfontscale
mkfontdir
mkdir -p /usr/share/fonts/default/TrueType
cd /usr/share/fonts/default/TrueType
find /usr/share/fonts/msttcorefonts/ -exec ln -s {} \;

Установка RMagick 2.16.0

cd
gem list rmagick --all --remote

Вывод:

*** REMOTE GEMS ***
...
rmagick (2.16.0, 2.15.4, 2.15.3, 2.15.2, 2.15.1, 2.15.0, 2.14.0, 2.13.4, 2.13.3, 2.13.2, 2.13.1, 2.12.2, 2.12.1, 2.12.0, 2.11.1, 2.11.0, 2.10.0, 2.9.2, 2.9.1, 2.9.0, 2.8.0, 2.7.2, 2.7.1, 2.7.0, 2.6.0, 2.5.2, 2.5.1, 2.5.0, 2.4.0, 2.3.0, 2.2.2, 2.2.0, 2.1.0, 2.0.0, 1.15.17, 1.15.16, 1.15.15, 1.15.14, 1.15.13, 1.15.12, 1.15.11, 1.15.10, 1.15.9, 1.15.8, 1.15.7, 1.15.6, 1.15.5, 1.15.4, 1.15.3, 1.15.2, 1.15.1, 1.15.0, 1.14.1, 1.14.0, 1.13.0, 1.12.0, 1.11.1, 1.11.0, 1.10.1, 1.10.0, 1.9.3, 1.9.2, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.4, 1.7.3, 1.7.2, 1.7.1)
rmagick-image_colors (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0, 0.0.2, 0.0.1)
rmagick-metadata (0.0.2, 0.0.1)
rmagick-screwdrivers (0.2.0, 0.1.2, 0.1.1)
rmagick-sprite (0.0.8, 0.0.7, 0.0.6, 0.0.5, 0.0.4)
rmagick-tti_converter (0.0.2, 0.0.1)
rmagick4j (0.4.0 java, 0.3.9 java, 0.3.8, 0.3.7, 0.3.6, 0.3.5, 0.3.4 java, 0.3.3 java, 0.3.2 java, 0.3.1 java)
rmagick_captcha (0.6.4, 0.6.3, 0.6.2)
...
whereis pkgconfig

Вывод:

pkgconfig: /usr/lib64/pkgconfig /usr/share/pkgconfig
printenv PKG_CONFIG_PATH

Здесь при выводе этой команды мы получаем пустую строку. Надо прописать путь

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig
printenv PKG_CONFIG_PATH

А вот теперь вывод такой:

/usr/lib64/pkgconfig

Далее сама установка:

gem install rmagick -v 2.16.0
gem list rmagick

Вывод:

*** LOCAL GEMS ***

rmagick (2.16.0)

Установка NGINX

А здесь я планировал описать следующий шаг - установка nginx, но потом выяснилось, что смысла не имеет, т.к. passenger ставит его сам из соурсов 1.12.2, несмотря на установленную мной более свежую версию. Так что, идем далее.

Установка и настройка Redmine 3.4.4

Скачиваем дистрибутив Redmine версии 3.4.4 с сайта http://www.redmine.org/projects/redmine/wiki/Download

cd
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

Распаковка

tar zxvf redmine-3.4.4.tar.gz

После чего переименовываем каталог в redmine и перемещаем его в /var/lib

Настройка

cd /var/lib/redmine/config
cp database.yml.example database.yml
vi database.yml

Использоваться будет только одна конфигурация - production, поэтому приводим соответствующую секцию к следующему виду:

production:
  adapter: postgresql
  database: redmine_db
  host: localhost
  username: redmine_user
  password: my_password
  encoding: utf8

ОСТАЛЬНОЕ ЗАКОММЕНТИРОВАТЬ!!!

Установка Bundler

cd ../
gem install bundler

Установка и настройка модуля PostgreSQL для подключения через Ruby

Установка

gem install pg

Вывод такой:

Fetching: pg-1.0.0.gem (100%)
Building native extensions. This could take a while...
/usr/local/rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/ext/builder.rb:76: warning: Insecure world writable dir /root in PATH, mode 040777
Successfully installed pg-1.0.0
Parsing documentation for pg-1.0.0
Installing ri documentation for pg-1.0.0
Done installing documentation for pg after 1 seconds
1 gem installed

Создание токена

bundle install --without development test mysql mysql2 sqlite

Вывод:

...
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development, test, mysql, mysql2 and sqlite were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
rake generate_secret_token
ls config/initializers/secret_token.rb

Вывод:

config/initializers/secret_token.rb

С токеном закончили, идем далее

Настройка модуля

cd /usr/local/rvm/gems/ruby-2.4.3@gemset2/gems/pg-1.0.0/
ruby ext/extconf.rb --with-pg-config=/usr/pgsql-9.6/bin/pg_config
make

Вывод:

compiling ext/gvl_wrappers.c
compiling ext/pg.c
compiling ext/pg_binary_decoder.c
compiling ext/pg_binary_encoder.c
compiling ext/pg_coder.c
compiling ext/pg_connection.c
compiling ext/pg_copy_coder.c
compiling ext/pg_errors.c
compiling ext/pg_result.c
compiling ext/pg_text_decoder.c
compiling ext/pg_text_encoder.c
compiling ext/pg_type_map.c
compiling ext/pg_type_map_all_strings.c
compiling ext/pg_type_map_by_class.c
compiling ext/pg_type_map_by_column.c
compiling ext/pg_type_map_by_mri_type.c
compiling ext/pg_type_map_by_oid.c
compiling ext/pg_type_map_in_ruby.c
compiling ext/util.c
linking shared-object pg_ext.so
make install

Вывод:

/usr/bin/install -c -m 0755 pg_ext.so /usr/local/rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/x86_64-linux

Делаем ссылку

cd /var/lib/redmine/lib
ln -s /usr/local/rvm/gems/ruby-2.4.3@gemset2/gems/pg-1.0.0/lib/pg.rb
cd ../

Перезапускаем сервис

service postgresql-9.6 restart

и запускаем

rake db:migrate RAILS_ENV=production

Установка PASSENGER 5.1.12

gem install passenger

Вывод:

Fetching: passenger-5.1.12.gem (100%)
Building native extensions. This could take a while...
Successfully installed passenger-5.1.12
Parsing documentation for passenger-5.1.12
Installing ri documentation for passenger-5.1.12
Done installing documentation for passenger after 54 seconds
1 gem installed

Установка PASSENGER 5.1.12 + NGINX 1.12.2

passenger-install-nginx-module

Во время установки я выбрал первый (1) вариант и каталог для nginx, предложенный установщиком, т.е. все на автомате.

Вывод:

Welcome to the Phusion Passenger Nginx module installer, v5.0.6.

This installer will guide you through the entire installation process. It
shouldn't take more than 5 minutes in total.

Here's what you can expect from the installation process:

 1. This installer will compile and install Nginx with Passenger support.
 2. You'll learn how to configure Passenger in Nginx.
 3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.


--------------------------------------------

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 > (*)  Ruby
   (*)  Python
   ( )  Node.js
   ( )  Meteor

<...skipped...>

Checking for required software...

 * Checking for C compiler...
      Found: yes
      Location: /usr/bin/cc
 * Checking for C++ compiler...
      Found: yes
      Location: /usr/bin/c++
 * Checking for A download tool like 'wget' or 'curl'...
      Found: yes
      Location: /usr/bin/wget
 * Checking for Curl development headers with SSL support...
      Found: yes
      curl-config location: /usr/bin/curl-config
      Header location: /usr/include/curl/curl.h
      Version: libcurl 7.19.7
      Usable: yes
      Supports SSL: yes
 * Checking for OpenSSL development headers...
      Found: yes
      Location: /usr/include/openssl/ssl.h
 * Checking for Zlib development headers...
      Found: yes
      Location: /usr/include/zlib.h
 * Checking for Rake (associated with /usr/local/rvm/gems/ruby-2.0.0-p645@gemset2/wrappers/ruby)...
      Found: yes
      Location: /usr/local/rvm/gems/ruby-2.0.0-p645@gemset2/wrappers/rake
 * Checking for OpenSSL support for Ruby...
      Found: yes
 * Checking for RubyGems...
      Found: yes
 * Checking for Ruby development headers...
      Found: yes
      Location: /usr/local/rvm/rubies/ruby-2.0.0-p645/include/ruby-2.0.0/ruby.h
 * Checking for rack...
      Found: yes

--------------------------------------------

Automatically download and install Nginx?

Nginx doesn't support loadable modules such as some other web servers do,
so in order to install Nginx with Passenger support, it must be recompiled.

Do you want this installer to download, compile and install Nginx for you?

 1. Yes: download, compile and install Nginx for me. (recommended)
    The easiest way to get started. A stock Nginx 1.6.2 with Passenger
    support, but with no other additional third party modules, will be
    installed for you to a directory of your choice.

 2. No: I want to customize my Nginx installation. (for advanced users)
    Choose this if you want to compile Nginx with more third party modules
    besides Passenger, or if you need to pass additional options to Nginx's
    'configure' script. This installer will  1) ask you for the location of
    the Nginx source code,  2) run the 'configure' script according to your
    instructions, and  3) run 'make install'.

Whichever you choose, if you already have an existing Nginx configuration file,
then it will be preserved.

Enter your choice (1 or 2) or press Ctrl-C to abort: 1

<...skipped...>


Where do you want to install Nginx to?

Please specify a prefix directory [/opt/nginx]:

--------------------------------------------

<...skipped...>

Nginx with Passenger support was successfully installed.

The Nginx configuration file (/opt/nginx/conf/nginx.conf)
must contain the correct configuration options in order for Phusion Passenger
to function correctly.

This installer has already modified the configuration file for you! The
following configuration snippet was inserted:

  http {
      ...
      passenger_root /usr/local/rvm/gems/ruby-2.4.3@gemset2/gems/passenger-5.1.12;
      passenger_ruby /usr/local/rvm/gems/ruby-2.4.3@gemset2/wrappers/ruby;
      ...
  }

After you start Nginx, you are ready to deploy any number of Ruby on Rails
applications on Nginx.

Press ENTER to continue.
--------------------------------------------

Deploying a web application: an example

Suppose you have a web application in /somewhere. Add a server block
to your Nginx configuration file, set its root to /somewhere/public, and set
'passenger_enabled on', like this:

   server {
      listen 80;
      server_name www.yourhost.com;
      root /somewhere/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
   }

And that's it! You may also want to check the Users Guide for security and
optimization tips and other useful information:

  /usr/local/rvm/gems/ruby-2.0.0-p645@gemset2/gems/passenger-5.0.6/doc/Users guide Nginx.html
  https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

Настройка NGINX 1.12.2

Создаем пользователя nginx и назначаем его владельцем каталога redmine.

adduser -c Nginx_web_server -d /opt/nginx -M -r -s /sbin/nologin -U nginx
chown -R nginx:nginx /var/lib/redmine

Теперь добавляем nginx в rc.local и правим наш nginx.conf. У меня финальный результат последнего выглядит так:

grep -v '#' /opt/nginx/conf/nginx.conf
user  nginx;
worker_processes  4;

error_log  logs/error.log;
pid        logs/nginx.pid;

worker_rlimit_nofile  1024;

events {
    worker_connections  1024;
}


http {
    passenger_root /usr/local/rvm/gems/ruby-2.4.3@gemset2/gems/passenger-5.1.12;
    passenger_ruby /usr/local/rvm/gems/ruby-2.4.3@gemset2/wrappers/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    server_tokens off;
    reset_timedout_connection  on;
    output_buffers  1 64k;
    tcp_nodelay     on;
    log_not_found   off;
    tcp_nopush     on;
    keepalive_timeout  65;

    gzip  on;
    gzip_vary on;
    gzip_min_length 2048;
    gzip_comp_level 5;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_disable "msie6";
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    client_max_body_size 30m;
    large_client_header_buffers 4 8k;

    server {
        listen       80;
        server_name redmine.pnv152.ru;
        root   /var/lib/redmine/public;
        passenger_enabled on;
        rails_spawn_method smart;
        rails_env production;
    }
}

Вот вроде и все… правда, ничего сложного? LOL 8-o 8-)

Все это я сделал на основе следующих статей:

Подъем сервера и написание статьи — 02/07/2013

Обновлено — 15/04/2015

Обновлено — 25/01/2018

Яндекс.Метрика