Приведу кратко основное по RedMine:
- ведение нескольких проектов;
- система отслеживания ошибок;
- диаграммы Ганта;
- настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
- лёгкая интеграция с системами управления версиями (SVN, Git, Mercurial);
Мне очень Важно было установить свежие версии всех модулей, почерпнул много источников, но практически все с недоделками, и очень таки неудобная конфигурация у них получалась.
Вот и пришлось самому сделать универсальную конфигурацию, которая может работать под любой из основных Веб-серверов.
Ставим на CentOS 6.5 x86_64:
[root@Red ~]#uname -a Linux Red 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [root@Red ~]# lsb_release -a LSB Version::base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID:CentOS Description:CentOS release 6.5 (Final) Release:6.5 Codename:Final [root@Red ~]#
Убедимся что все пакеты свежие:
[root@Red ~]# yum update Loaded plugins: downloadonly, fastestmirror, security, verify Loading mirror speeds from cached hostfile Setting up Update Process No Packages marked for Update [root@Red ~]#
Добавляем репозитарий epel
[root@Red ~]# rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
Сразу устанавливаем все пакеты, что нам понадобятся, а не по ходу…
[root@Red ~]# yum groupinstall "Development Tools" [root@Red ~]# yum install zlib-devel openssl-devel ncurses-devel gdbm-devel openssl-devel zlib-devel readline-devel libyaml-devel curl-devel httpd-devel apr-devel apr-util-devel mysql-devel libffi-devel rpm-build ttmkfdir cabextract
Скачиваем нужные исходники, предварительно посмотрев и проверив совместимость пакетов:
[root@Red ~]# cd /usr/src [root@Red src]# [root@Red src]# wget http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz [root@Red src]# wget http://www.redmine.org/releases/redmine-2.5.1.tar.gz [root@Red src]# wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.9-1.tar.gz [root@Red src]# wget http://pyyaml.org/download/libyaml/yaml-0.1.6.tar.gz [root@Red src]# wget http://rubyforge.org/frs/download.php/76729/rubygems-1.8.25.tgz
Распаковываем и конфигурируем сам Rubby
[root@Red src]# tar zxvf ruby-2.1.2.tar.gz [root@Red ruby-2.1.2]# ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for gcc... gcc [...skipped...] checking for nroff... /usr/bin/nroff .ext/include/x86_64-linux/ruby/config.h updated ruby library version = 2.1.0 configure: creating ./config.status config.status: creating GNUmakefile config.status: creating Makefile config.status: creating ruby-2.1.pc [root@Red ruby-2.1.2]#
Строчек с ненайдеyными файлами/библиотеками отсутствуют — можно компилировать и установим!
[root@Red ruby-2.1.2]# make [root@Red ruby-2.1.2]# make install
Проверим версию Rubby
[root@Red ruby-2.1.2]# rubby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
Распакуем и установим RubyGems
[root@Red src]# tar zxvf rubygems-1.8.25.tgz [root@Red src]# cd rubygems-1.8.25 [root@Red rubygems-1.8.25]# ruby setup.rb RubyGems 1.8.25 installed == 1.8.25/ 2013-01-24 * 6 bug fixes: * Added 11627 to setup bin_file location to protect against errors. Fixes #328 by ConradIrwin * Specification#ruby_code didn't handle Requirement with multiple * Fix error on creating a Version object with a frozen string. * Fix incremental index updates * Fix missing load_yaml in YAML-related requirement.rb code. * Manually backport encoding-aware YAML gemspec ------------------------------------------------------------------------------ RubyGems installed the following executables: /usr/local/bin/gem
Проверим версию RubyGems
[root@Red rubygems-1.8.25]# gem --version 1.8.25 [root@Red rubygems-1.8.25]#
Посмотрим какая версия Rails доступна
[root@Red rubygems-1.8.25]# gem list -r --all rails *** REMOTE GEMS *** rails (4.1.1, 4.1.0, 4.0.5, 4.0.4, 4.0.3, 4.0.2, 4.0.1, 4.0.0, 3.2.18, 3.2.17, 3.2.16, 3.2.15, 3.2.14, 3.2.13, 3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2.0, 3.1.12, 3.1.11, 3.1.10, 3.1.9, 3.1.8, 3.1.7, 3.1.6, 3.1.5, 3.1.4, 3.1.3, 3.1.2, 3.1.1, 3.1.0, 3.0.20, 3.0.19, 3.0.18, 3.0.17, 3.0.16, 3.0.15, 3.0.14, 3.0.13, 3.0.12, 3.0.11, 3.0.10, 3.0.9, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.18, 2.3.17, 2.3.16, 2.3.15, 2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0) rails-3-settings (0.1.1) rails-action-args (0.1.1, 0.1.0) [root@Red rubygems-1.8.25]#
Установим Rails. Если хотите без лишней документации — то тогда добавьте параметры —no-rdoc —no-ri
Спасибо Марку за данную подсказку, в одном из его постов — rubydev.ru/2012/09/tipstricks-no-ri-no-rdoc-gem-install
[root@Red rubygems-1.8.25]# gem install rails Fetching: i18n-0.6.9.gem Fetching: i18n-0.6.9.gem (100%) Fetching: json-1.8.1.gem Fetching: json-1.8.1.gem (100%) Building native extensions. This could take a while... Fetching: thread_safe-0.3.3.gem [...skipped...] Fetching: rails-4.1.1.gem Fetching: rails-4.1.1.gem (100%) Successfully installed i18n-0.6.9 Successfully installed json-1.8.1 Successfully installed thread_safe-0.3.3 Successfully installed tzinfo-1.1.0 [...skipped...] Successfully installed rails-4.1.1 30 gems installed Installing ri documentation for i18n-0.6.9... Installing ri documentation for json-1.8.1... [...skipped...] Installing RDoc documentation for rails-4.1.1... [root@Red rubygems-1.8.25]#
Проверим версию Rails:
[root@Red src]# rails -v Rails 4.1.1 [root@Red src]#
Затем обновим gem
[root@Red src]# gem update --system Updating rubygems-update Fetching: rubygems-update-2.2.2.gem [...skipped...] Fetching: rubygems-update-2.2.2.gem (100%) Successfully installed rubygems-update-2.2.2 Installing RubyGems 2.2.2 RubyGems 2.2.2 installed Parsing documentation for rubygems-2.2.2 Installing ri documentation for rubygems-2.2.2 === 2.2.1 / 2014-01-06 Bug fixes: * Platforms in the Gemfile.lock GEM section are now handled correctly. Bug #767 by Diego Viola. [...skipped...] RubyGems installed the following executables: /usr/local/bin/gem Ruby Interactive (ri) documentation was installed. ri is kind of like man pages for ruby libraries. You may access it like this: ri Classname ri Classname.class_method ri Classname#instance_method If you do not wish to install this documentation in the future, use the --no-document flag, or set it as the default in your ~/.gemrc file. See 'gem help env' for details. RubyGems system software updated
[root@Red src]# gem --version 2.2.2 [root@Red src]#
Проверяем уже ранее установленный MySQL, версию
[root@Red src]# yum list mysql mysql-server mysql-devellist Loaded plugins: downloadonly, fastestmirror, security, verify Loading mirror speeds from cached hostfile Installed Packages mysql.x86_64 5.1.73-3.el6_5 @updates mysql-devel.x86_64 5.1.73-3.el6_5 @updates mysql-server.x86_64 5.1.73-3.el6_5 @updates Available Packages mysql-devel.i686 5.1.73-3.el6_5 updates [root@Red src]#
Убедимся, что с UTF-8 все в порядке и по умолчанию установлено в файле /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server=utf8
Хотя некоторые предлагают ставить default-character-set=utf8
Делаем первый старт MySQL
[root@Red etc]# servisece mysqld start Initializing MySQL database: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h Red password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] Starting mysqld: [ OK ] [root@Red etc]#
Создаем пароль mysqlroot к MySQL
[root@Red etc]# mysql -uroot mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> update user set password=password('mysqlpasswd') where user = 'root';root Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> delete from user where user = ''; Query OK, 2 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye [root@Red etc]# service mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ] [root@Red etc]#
Создадим пользователя и пароль для базы redmine
[root@Red etc]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'RedPASS'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT USAGE ON *.* TO 'redmine'@'localhost' IDENTIFIED BY 'RedPASS' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USE R_CONNECTIONS 0; Query OK, 0 rows affected (0.00 sec) mysql> CREATE DATABASE IF NOT EXISTS `redmine`; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON `redmine`.* TO 'redmine'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye [root@Red etc]#
Добавляем с проверкой MySQL в автозагрузку
[root@Red etc]# chkconfig --list mysqld mysqld 0:off1:off2:off3:off4:off5:off6:off [root@Red etc]# chkconfig mysqld on [root@Red etc]# chkconfig --list mysqld mysqld 0:off1:off2:on3:on4:on5:on6:off [root@Red etc]#
На всякий случай проверяем зависимые библиотеки для MySQL.
[root@Red etc]# ll /usr/lib64/mysql total 3144 lrwxrwxrwx 1 root root 26 May 13 13:16 libmysqlclient_r.so -> libmysqlclient_r.so.16.0.0 lrwxrwxrwx 1 root root 26 May 13 12:51 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 -rwxr-xr-x 1 root root 1598280 Feb 12 21:42 libmysqlclient_r.so.16.0.0 lrwxrwxrwx 1 root root 24 May 13 13:16 libmysqlclient.so -> libmysqlclient.so.16.0.0 lrwxrwxrwx 1 root root 24 May 13 12:51 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 -rwxr-xr-x 1 root root 1587712 Feb 12 21:42 libmysqlclient.so.16.0.0 -rwxr-xr-x 1 root root 12935 Feb 12 21:42 mysqlbug -rwxr-xr-x 1 root root 6399 Feb 12 21:42 mysql_config drwxr-xr-x 2 root root 4096 May 13 12:52 plugin [root@Red etc]#
Не забываем в /etc/sysconfig/iptables добавить правила для 3306 порта и зоны доступа
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
Перезапустим iptables
[root@Red sysconfig]# service iptables restart iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ] [root@Red sysconfig]#
Лично я предпочитаю дать полные права для любого хоста, а потом отдельно настраивать в HeidiSQL или phpMyAdmin.
mysql> GRANT ALL PRIVILEGES ON `root`.* TO '*'@'*';
Хотя можно установить не последнюю версию ImageMagick через репозитарий — 6.5.4.7-7.
[root@Red src]# yum list ImageMagick ImageMagick-devel Loaded plugins: downloadonly, fastestmirror, security, verify Loading mirror speeds from cached hostfile * base: ftp.colocall.net * epel: ftp.colocall.net * extras: ftp.colocall.net * updates: ftp.colocall.net Available Packages ImageMagick.i686 6.5.4.7-7.el6_5 updates ImageMagick.x86_64 6.5.4.7-7.el6_5 updates ImageMagick-devel.i686 6.5.4.7-7.el6_5 updates ImageMagick-devel.x86_64 6.5.4.7-7.el6_5 updates [root@Red src]#
Я устанавливаю последнюю ImageMagick с исходников:
[root@Red src]# tar zxvf ImageMagick-6.8.9-1.tar.gz [root@Red ImageMagick-6.8.9-1]# ./configure configuring ImageMagick 6.8.9-1 checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu [...skipped...] Update ImageMagick configuration checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating common.shi [...skipped...] ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-linux-gnu Build system type: x86_64-unknown-linux-gnu Option Value ------------------------------------------------------------------------------- Shared libraries --enable-shared=yesyes [...skipped...] Options used to compile and link: PREFIX = /usr/local EXEC-PREFIX = /usr/local VERSION = 6.8.9 CC = gcc -std=gnu99 -std=gnu99 [...skipped...]
Просматриваем на отсутствие ошибок, нехватающих фалов и далее make
[root@Red ImageMagick-6.8.9-1]# make make all-recursive make[1]: Entering directory `/usr/src/ImageMagick-6.8.9-1' Making all in . make[2]: Entering directory `/usr/src/ImageMagick-6.8.9-1' CC magick/magick_libMagickCore_6_Q16_la-accelerate.lo CC magick/magick_libMagickCore_6_Q16_la-animate.lo [...skipped...] cp -f magick/ImageMagick.pc magick/ImageMagick-6.Q16.pc cp -f magick/MagickCore.pc magick/MagickCore-6.Q16.pc cp -f wand/MagickWand.pc wand/MagickWand-6.Q16.pc cp -f wand/Wand.pc wand/Wand-6.Q16.pc cp -f Magick++/lib/Magick++.pc Magick++/lib/Magick++-6.Q16.pc cp -f Magick++/lib/ImageMagick++.pc Magick++/lib/ImageMagick++-6.Q16.pc make[2]: Leaving directory `/usr/src/ImageMagick-6.8.9-1' make[1]: Leaving directory `/usr/src/ImageMagick-6.8.9-1' [root@Red ImageMagick-6.8.9-1]#
Проверим работу ImageMagick,
После чего у нас появится картинка ImageMagic.gif можно скачать и просмотреть.
[root@Red src]# /usr/local/bin/convert loho: imagemagic.gif
Установка поддержки шрифтов TrueType.
[root@Red src]# rpm -Uihv http://dl.atrpms.net/el6.5-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm [root@Red src]# yum install chkfontpath
Установим шрифты MS TrueType. На странице corefonts.sourceforge.net смотрим и устанавливаем последнюю версию
[root@Red src]# wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
Через MC находим в этом файле строчку function set_mirror { и проверяем или меняем зеркало на строку вида:
mirror="http://${m}.dl.sourceforge.net/project/corefonts/the%20fonts/final/"
После этого запускаем команду, будет загружено немало пакетов и вконце увидим где расположен инстаряционный пакет
[root@Red src]# rpmbuild -bb msttcorefonts-2.5-1.spec [...skipped...] Wrote: /root/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.VHo2lJ + umask 022 + cd /root/rpmbuild/BUILD + '[' /root/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64 '!=' / ']' + rm -rf /root/rpmbuild/BUILDROOT/msttcorefonts-2.5-1.x86_64 + exit 0 [root@Red src]#
Установим его и сделаем необходимые линки:
[root@Red src]# rpm -ivh /root/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm Preparing... ########################################### [100%] 1:msttcorefonts ########################################### [100%] [root@Red src]# cd /usr/share/fonts/msttcorefonts [root@Red msttcorefonts]# mkfontscale [root@Red msttcorefonts]# mkfontdir [root@Red msttcorefonts]# mkdir -p /usr/share/fonts/default/TrueType [root@Red msttcorefonts]# cd /usr/share/fonts/default/TrueType [root@Red TrueType]# find /usr/share/fonts/msttcorefonts/ -exec ln -s {} \; [root@Red TrueType]#
Установка RMagick и его путей.
[root@Red TrueType]# cd /usr/local/src/ [root@Red src]# gem list rmagick --all --remote *** REMOTE GEMS *** compass-rmagick-engine (0.0.2, 0.0.1) hornetseye-rmagick (1.0.3, 1.0.2, 1.0.1, 1.0.0, 0.5.0, 0.4.0, 0.3.1, 0.3.0, 0.2.2, 0.2.1, 0.2.0, 0.1.0) jdeerhake-compass-rmagick-engine (0.0.4, 0.0.3) rdp-rmagick (0.0.0) rmagick (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-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) rmagick4j (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.2) [root@Red src]# [root@Red src]# whereis pkgconfig pkgconfig: /usr/lib64/pkgconfig /usr/local/lib/pkgconfig /usr/share/pkgconfig [root@Red src]# printenv PKG_CONFIG_PATH [root@Red src]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig [root@Red src]# printenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig [root@Red src]# gem install rmagick Building native extensions. This could take a while... Successfully installed rmagick-2.13.2 Parsing documentation for rmagick-2.13.2 Installing ri documentation for rmagick-2.13.2 Done installing documentation for rmagick after 5 seconds 1 gem installed [root@Red src]# gem list rmagick *** LOCAL GEMS *** rmagick (2.13.2) [root@Red src]#
Установим passenger и модуль под apache
[root@Red redmine]# gem install passenger Fetching: daemon_controller-1.2.0.gem Fetching: daemon_controller-1.2.0.gem (100%) Successfully installed daemon_controller-1.2.0 Fetching: passenger-4.0.42.gem Fetching: passenger-4.0.42.gem (100%) Building native extensions. This could take a while... Successfully installed passenger-4.0.42 Parsing documentation for daemon_controller-1.2.0 Installing ri documentation for daemon_controller-1.2.0 Parsing documentation for passenger-4.0.42 Installing ri documentation for passenger-4.0.42 Done installing documentation for daemon_controller, passenger after 3 seconds 2 gems installed [root@Red redmine]# passenger-install-apache2-module Welcome to the Phusion Passenger Apache 2 module installer, v4.0.42. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 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.
Жмем Ентер и снова Ентер — выбирая Ruby, пойдет компиляция и в итоге мы увидим:
cd 'buildout/ruby/ruby-2.1.2-x86_64-linux/' && make compiling /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/ext/ruby/passenger_native_support.c /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/ext/ruby/passenger_native_support.c: In function f_generic_writev: /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/ext/ruby/passenger_native_support.c:327: warning: rb_thread_blocking_region is deprecated (declared at /usr/local/include/ruby-2.1.0/ruby/intern.h:870) linking shared-object passenger_native_support.so -------------------------------------------- Almost there! Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42 PassengerDefaultRuby /usr/local/bin/ruby After you restart Apache, you are ready to deploy any number of web applications on Apache, with a minimum amount of configuration! Press ENTER to continue. -------------------------------------------- Deploying a web application: an example Suppose you have a web application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public: ServerName www.yourhost.com # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /somewhere/public # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews # Uncomment this if you're on Apache >= 2.4: #Require all granted And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/doc/Users guide Apache.html http://www.modrails.com/documentation/Users%20guide%20Apache.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. [root@Red redmine]#
Согласно написаных настроек — добавим конфигурацию passenger в apache создав файл /etc/httpd/conf.d/passenger.conf
# Pathes from passenger-install-apache2-module LoadModule passenger_module /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42 PassengerDefaultRuby /usr/local/bin/ruby # Remove HTTP Headers Header always unset "X-Powered-By" Header always unset "X-Rack-Cache" Header always unset "X-Content-Digest" Header always unset "X-Runtime" # Tuning of Passenger PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 3600 #PassengerUseGlobalQueue on PassengerHighPerformance on PassengerStatThrottleRate 10 RailsSpawnMethod smart RailsAppSpawnerIdleTime 86400 #RailsFrameworkSpawnerIdleTime 0 # ServerName Host:Port ServerName redmine:80
После этого сделаем первичную настройку RedMine, и так как будет единая конфигурация (production) на хосте
то согласно примера /var/www/redmine/www/config/database.yml.example там же создадим файл database.yml
# Default setup is given for MySQL with ruby1.9. If you're running Redmine # with MySQL and ruby1.8, replace the adapter name with `mysql`. # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end. # Line indentation must be 2 spaces (no tabs). production: adapter: mysql2 database: redmine host: localhost username: redmine password: "RedPASS" encoding: utf8
Там же создаем файл configuration.yml в котором укажем данные для почты, чтобы иметь возможность получать уведомления от RedMine Все зависит от вашего почтового сервера, протоколы, методы авторизации и т.д. Т.е. здесь возможно придется потрудиться и поискать доп. информацию
# default configuration options for all environments default: # Outgoing emails configuration (see examples above) attachments_storage_path: /var/www/redmine/www/files autologin_cookie_name: autologin_cookie_path: autologin_cookie_secure: # scm_stderr_log_file: /var/log/redmine_scm_stderr.log scm_stderr_log_file: database_cipher_key: # Linux: # rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf rmagick_font_path: # specific configuration options for production environment # that overrides the default ones production: email_delivery: delivery_method: :smtp smtp_settings: address: mail.domain.com port: 25 domain: domain.com authentication: :login user_name: redmine@domain.com password: RedMailPASS # specific configuration options for development environment # that overrides the default ones development:
Установка Bundler
[root@Red www]# gem install bundler Successfully installed bundler-1.6.2 Parsing documentation for bundler-1.6.2 Done installing documentation for bundler after 1 seconds 1 gem installed [root@Red www]# bundle install --without development test postgresql sqlite Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine. Fetching gem metadata from https://rubygems.org/......... Fetching additional metadata from https://rubygems.org/.. Resolving dependencies... Installing rake 10.1.1 [...skipped...] Using rmagick 2.13.2 Your bundle is complete! Gems in the groups development, test, postgresql and sqlite were not installed. Use `bundle show [gemname]` to see where a bundled gem is installed. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay! [root@Red www]#
Создание токена
[root@Red www]# rake generate_session_store Note: The rake task generate_session_store has been deprecated, please use the replacement version generate_secret_token [root@Red www]# rake generate_secret_token [root@Red www]# ls config/initializers/secret_token.rb config/initializers/secret_token.rb [root@Red www]#
В моем случае с первого раза прошло не гладко, но такие действия решили небольшую заминку.
[root@Red www]# rake generate_session_store --trace rake aborted! Gem::LoadError: You have already activated rake 10.3.1, but your Gemfile requires rake 10.1.1. Prepending `bundle exec` to your command may solve this. /usr/local/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:34:in `block in setup' [...skipped...]
В моем случае нужен rake 10.1.1 и лишний 10.3.1. Проверим:
[root@Red ~]# gem list rake *** LOCAL GEMS *** rake (10.3.1, 10.1.1, 10.1.0) [root@Red ~]# gem uninstall rake -v 10.3.1 Successfully uninstalled rake-10.3.1 [root@Red ~]# gem uninstall rake -v 10.3.1 list rake -r *** LOCAL GEMS *** rake (10.1.1, 10.1.0) [root@Red ~]#
Установим модуль MySQL для Ruby.
[root@Red www]# gem install mysql Fetching: mysql-2.9.1.gem Fetching: mysql-2.9.1.gem (100%) Building native extensions. This could take a while... Successfully installed mysql-2.9.1 Parsing documentation for mysql-2.9.1 Installing ri documentation for mysql-2.9.1 Done installing documentation for mysql after 0 seconds 1 gem installed [root@Red www]# whereis ruby ruby: /usr/src/ruby-2.1.2/ruby.o /usr/src/ruby-2.1.2/ruby.c /usr/src/ruby-2.1.2/ruby /usr/local/bin/ruby /usr/local/lib/ruby [root@Red www]# cd /usr/local/lib/ryuby/gems/2.1.0/gems/mysql-2.9.1 [root@Red mysql-2.9.1]# whereis mysql_config mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz [root@Red mysql-2.9.1]# ruby ext/mysql_api/extconf.rb --with-mysql-config=/usr/bin/mysql_config checking for mysql_ssl_set()... yes checking for rb_str_set_len()... yes checking for rb_thread_start_timer()... no checking for mysql.h... yes creating Makefile [root@Red mysql-2.9.1]#
Далее надо собрать и установить пакет, но как правило при компиляции будет ошибка, и тогда надо немного подправить Makefile — явно прописать пути
т.е. сделать так:
SRCS = mysql.c OBJS = $(srcdir)/mysql.o
И снова откомпилировать, в итоге получим:
[root@Red mysql-2.9.1]# make linking shared-object mysql/mysql_api.so gcc: mysql.o: No such file or directory make: *** [mysql_api.so] Error 1 [root@Red mysql-2.9.1]# make linking shared-object mysql/mysql_api.so [root@Red mysql-2.9.1]# make install /usr/bin/install -c -m 0755 mysql_api.so /usr/local/lib/ruby/site_ruby/2.1.0/x86_64-linux/mysql installing default mysql_api libraries [root@Red mysql-2.9.1]# cd /var/www/redmine/www/lib [root@Red lib]# ln -s /usr/local/lib/ruby/gems/2.1.0/gems/mysql-2.9.1/lib/mysql.rb [root@Red lib]# cd ../
Создаем базу, после второй команды выбрать ru
[root@Red www]# rake db:migrate RAILS_ENV=production == Setup: migrating ========================================================== -- create_table("attachments", {:force=>true}) -> 0.0171s [...skipped...] == ChangeChangesetsCommentsLimit: migrated (0.0241s) ========================= [root@Red www]# [root@Red www]# rake redmine:load_default_data RAILS_ENV=production Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ru ==================================== Default configuration data loaded. [root@Red www]#
Развернем код RedMine. С учетом того, что на сервере может быть еще ряд других WWW сервисов и работать они будут как под Apache и/или nginx
то по правильному ставить в каталог /var/www/redmine
[root@Red src]# tar xzvf redmine-2.5.1.tar.gz [root@Red src]# mv redmine-2.5.1 /var/www/redmine
Сам сервер Apache уже установлен, пропишем его в автозагрузку и запустим
[root@Red www]# chkconfig --level 345 httpd on [root@Red www]# service httpd start Starting httpd: [root@Red www]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@Red www]#
После этого идем по 127.0.0.1 или какой у Вас там IP и проверяем работу стартовой страницы.
Целесообразно сделать ссылку в этом каталоге на каталог конфигурации Apache, позволит в дальнейшем не бегать по кучи каталогам)
[root@Red www]# ln -s /etc/httpd /var/www/httpd
настроим Apache на работу с виртуальными хостами — /etc/httpd/conf.d/vhosts.conf
# VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any block. # NameVirtualHost *:80 ServerAdmin admin@redmine DocumentRoot /var/www/redmine/www/public ServerName redmine ServerAlias www.redmine RailsEnv production RailsBaseURI /redmine # <Directory "/var/www/redmine/www/public/"> # Options Indexes ExecCGI FollowSymLinks # Order allow,deny # Allow from all # AllowOverride all # ErrorLog /var/www/redmine/error.log CustomLog /var/www/redmine/access.log common # # ServerAdmin admin@glpi # DocumentRoot /var/www/glpi/www # ServerName glpi # ServerAlias www.glpi # ErrorLog /var/www/glpi/error.log # CustomLog /var/www/glpi/access.log common #
добавим на локальном хосте привязку имени к ip — это позволит ходит по имени к этому хосту.
10.30.10.104 redmine
Сменим владельца на каталог:
[root@Red redmine]# pwd /var/www/redmine [root@Red redmine]# ls access.log error.log www [root@Red redmine]# chown -R apache:apache www [root@Red redmine]# chmod -R 755 www
Все после этого проверяем работу РедМайна,
если все делали по моему сценарию — любуемя результатом:
После этого настраиваем остальное:
[root@Red www]# gem list imagemagick --all -r *** REMOTE GEMS *** imagemagick-binaries (6.8.7.5.1) imagemagick-identify (0.0.1) [root@Red www]# gem list imagemagick --all *** LOCAL GEMS ***
[root@Red src]# gem install imagemagick-binaries Fetching: ffi-1.9.3.gem (100%) Building native extensions. This could take a while... Successfully installed ffi-1.9.3 Fetching: sys-uname-0.9.0.gem (100%) Successfully installed sys-uname-0.9.0 Fetching: imagemagick-binaries-6.8.7.5.1.gem (100%) imagemagick-binaries's executable "convert" conflicts with /usr/local/bin/convert Overwrite the executable? [yN] y imagemagick-binaries's executable "identify" conflicts with /usr/local/bin/identify Overwrite the executable? [yN] y Successfully installed imagemagick-binaries-6.8.7.5.1 Parsing documentation for ffi-1.9.3 Installing ri documentation for ffi-1.9.3 Parsing documentation for imagemagick-binaries-6.8.7.5.1 Installing ri documentation for imagemagick-binaries-6.8.7.5.1 Parsing documentation for sys-uname-0.9.0 Installing ri documentation for sys-uname-0.9.0 Done installing documentation for ffi, imagemagick-binaries, sys-uname after 7 seconds 3 gems installed [root@Red src]# gem install imagemagick-identify Fetching: imagemagick-identify-0.0.1.gem (100%) Successfully installed imagemagick-identify-0.0.1 Parsing documentation for imagemagick-identify-0.0.1 Installing ri documentation for imagemagick-identify-0.0.1 Done installing documentation for imagemagick-identify after 0 seconds 1 gem installed [root@Red src]#
Как видим в идеале было работать с исходниками ImageMagick версии 6.8.7.5.1 но все равно необходимо вносить ряд настроек чтобы в Редмайне стояла галочка а не восклицательный знак
В итоге лучший вариант установить ImageMagick из обычного репозитария — yum install ImageMagick он установит еще ряд зависимых библиотек
[root@Red www]# yum install ImageMagick Loaded plugins: downloadonly, fastestmirror, security, verify Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check [...skipped...] Dependencies Resolved ================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================== Installing: ImageMagick x86_64 6.5.4.7-7.el6_5 updates 1.7 M Installing for dependencies: GConf2 x86_64 2.28.0-6.el6 base 964 k ORBit2 x86_64 2.14.17-3.2.el6_3 base 168 k OpenEXR-libs x86_64 1.6.1-8.1.el6 base 197 k ilmbase x86_64 1.0.1-6.1.el6 base 72 k libIDL x86_64 0.8.13-2.1.el6 base 83 k libcroco x86_64 0.6.2-5.el6 base 100 k libgsf x86_64 1.14.15-5.el6 base 116 k librsvg2 x86_64 2.26.0-6.el6_5.3 updates 140 k libwmf-lite x86_64 0.2.8.4-22.el6.centos base 51 k sgml-common noarch 0.6.3-32.el6 base 43 k Transaction Summary ================================================================================================================================== Install 11 Package(s) [...skipped...]
И только потом поверх можно обновлять версии, хотя можно и оставить как есть.
Если строка «Каталог ресурсов модулей доступен для записи» стоит с восклицательным знаком, тогда делаем так:
[root@Red www]# mkdir public/plugin_assets [root@Red www]# chown -R apache:apache public/plugin_assets [root@Red www]# chmod -R 755 files log tmp public/plugin_assets
После того как все работает под apache — настроим работу под nginx.
Конечно можно длать различные связки у которой на статиту один а на динамику другой, много вариантов — я остановился на чистом nginx
Все делаем под нашу существующую универсальную структуру каталогов с сайтами.
В репозитарии epel версия nginx 1.0.15 хотя уже есть 1.7.0, но passenger точно работает с 1.6.0
Для этого останавливаем и отключаем Apache:
[root@Red conf]# service httpd stop Stopping httpd: [ OK ] [root@Red conf]# chkconfig httpd off [root@Red conf]# chkconfig --list httpd httpd 0:off1:off2:off3:off4:off5:off6:off [root@Red conf]#
Устанавливаем passenger под nginx, и выбираем 1й способ установки,
указав путь установки nginx как по умолчанию — /usr/local/nginx
[root@Red conf]# passenger-install-nginx-module Welcome to the Phusion Passenger Nginx module installer, v4.0.42. 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. [...skipped...] -------------------------------------------- Nginx with Passenger support was successfully installed. Please edit your Nginx configuration file (probably /usr/local/nginx/conf/nginx.conf), and set the passenger_root and passenger_ruby configuration options in the 'http' block, like this: http { ... passenger_root /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42; passenger_ruby /usr/local/bin/ruby; ... } After you (re)start Nginx, you are ready to deploy any number of web 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; # And that's it! You may also want to check the Users Guide for security and optimization tips and other useful information: /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.42/doc/Users guide Nginx.html http://www.modrails.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. [root@Red conf]#
Создадим ссылку на nginx в каталоге /var/www
[root@Red www]# ln -s /usr/local/nginx /var/www/nginx
И подправим следующим образом nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; server_tokens off; reset_timedout_connection on; output_buffers 1 64k; tcp_nodelay on; log_not_found off; 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; include /etc/nginx/conf/*.conf; passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.37; passenger_ruby /usr/local/bin/ruby; server { listen 80; server_name redmine redmine.domain.com; charset koi8-r; access_log /var/www/redmine/access.log main; error_log /var/www/redmine/error.log warn; passenger_enabled on; passenger_min_instances 1; rails_spawn_method smart; rails_env production; client_max_body_size 15m; # allow all; root /var/www/redmine/www/public; ## Disable viewing .htaccess & .htpassword location ~ /\.ht { deny all; } } }
После этого ставим в автозагрузку nginx
[root@Red conf]# chkconfig nginx on [root@Red conf]# chkconfig --list nginx nginx 0:off1:off2:off3:off4:off5:off6:off [root@Red conf]#
Все, теперь имеем полностью рабочую связку nginx + redmine
Хотя можно и вручную установить последнюю версию nginx:
[root@Red src]# wget http://nginx.org/download/nginx-1.7.0.tar.gz [root@Red src]# tar zxvf nginx-1.7.0.tar.gz [root@Red src]# cd nginx-1.7.0 [root@Red nginx-1.7.0]# ./configure --without-http_rewrite_module checking for OS + Linux 2.6.32-431.17.1.el6.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) checking for gcc -pipe switch ... found [...skipped...] creating objs/Makefile Configuration summary + PCRE library is not used + OpenSSL library is not used + md5: using system crypto library + sha1: using system crypto library + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" [root@Red nginx-1.7.0]# make [root@Red nginx-1.7.0]# make install make -f objs/Makefile install make[1]: Entering directory `/usr/src/nginx-1.7.0' test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx' test -d '/usr/local/nginx/sbin' || mkdir -p '/usr/local/nginx/sbin' test ! -f '/usr/local/nginx/sbin/nginx' || mv '/usr/local/nginx/sbin/nginx' '/usr/local/nginx/sbin/nginx.old' cp objs/nginx '/usr/local/nginx/sbin/nginx' test -d '/usr/local/nginx/conf' || mkdir -p '/usr/local/nginx/conf' cp conf/koi-win '/usr/local/nginx/conf' cp conf/koi-utf '/usr/local/nginx/conf' cp conf/win-utf '/usr/local/nginx/conf' test -f '/usr/local/nginx/conf/mime.types' || cp conf/mime.types '/usr/local/nginx/conf' cp conf/mime.types '/usr/local/nginx/conf/mime.types.default' test -f '/usr/local/nginx/conf/fastcgi_params' || cp conf/fastcgi_params '/usr/local/nginx/conf' cp conf/fastcgi_params '/usr/local/nginx/conf/fastcgi_params.default' test -f '/usr/local/nginx/conf/fastcgi.conf' || cp conf/fastcgi.conf '/usr/local/nginx/conf' cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default' test -f '/usr/local/nginx/conf/uwsgi_params' || cp conf/uwsgi_params '/usr/local/nginx/conf' cp conf/uwsgi_params '/usr/local/nginx/conf/uwsgi_params.default' test -f '/usr/local/nginx/conf/scgi_params' || cp conf/scgi_params '/usr/local/nginx/conf' cp conf/scgi_params '/usr/local/nginx/conf/scgi_params.default' test -f '/usr/local/nginx/conf/nginx.conf' || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf' cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default' test -d '/usr/local/nginx/logs' || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/logs' || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/html' || cp -R html '/usr/local/nginx' test -d '/usr/local/nginx/logs' || mkdir -p '/usr/local/nginx/logs' make[1]: Leaving directory `/usr/src/nginx-1.7.0' [root@Red nginx-1.7.0]#
Также не забудьте установить 777 права на все подпапки tmp — это позволит к примеру делать предпросмотр присоединенных файлов.
[root@Red www]# chmod -R 777 files log tmp tmp/cache public/plugin_assets
Все данные конфигурационные файлы можно скачать тут.
ссылка на оригинал статьи http://habrahabr.ru/post/225667/
Добавить комментарий