Перейти к собственно контенту

Архив

Метка: MySQL

Данная статья описывает настройку Redmine+Unicorn+Nginx на ОС FreeBSD. Данные будем хранить в MySQL

Установка Web сервера

Ставим nginx
# cd /usr/ports/www/nginx
# make config-recursive
# make install clean

в /etc/rc.conf добавляем:
nginx_enable=YES

Ставим MySQL ( я выбрал MariaDB 10.1 )
# cd /usr/ports/databases/mariadb101-server
# make config-recursive
# make install clean

в /etc/rc.conf добавляем:
mysql_enable=YES
Запускаем MySQL
# /usr/local/etc/rc.d/mysql-server start

Задаем пароль для root в MySQL ( в скобках сам пароль )
# mysqladmin -u root password 'password'

Установка Redmine

# cd /usr/ports/www/redmine
# make config-recursive
# make install clean

Создаем пользователя и базу для redmine:
# mysql -p
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

Переходим в директорию с Redmine, копируем и редактируем конфиг подключения к БД в соотвествии ранее созданного пользователя:
cd /usr/local/www/redmine/
cp config/database.yml.example config/database.yml
nano config/database.yml

Установка Unicorn:
Редактируем файл Gemfile
# ee Gemfile
и добавляем в конце
gem 'unicorn'

Выполняем команду
# bundle install --without development test

Генерируем ключи и инициализируем базу данных
# bundle exec rake generate_secret_token
# rake db:migrate RAILS_ENV=production
# rake redmine:load_default_data RAILS_ENV=production

Создаем и редактируем конфиг unicorn
# touch config/unicorn.rb
# ee config/unicorn.rb

и приводим его к такому виду
worker_processes 3 # Numbers CPU + 1
working_directory "/usr/local/www/redmine/"
preload_app true
timeout 300
listen "/usr/local/www/redmine/tmp/sockets/unicorn.sock", :backlog => 64
pid "/usr/local/www/redmine/tmp/pids/unicorn.pid"
stderr_path "/usr/local/www/redmine/log/unicorn.stderr.log"
stdout_path "/usr/local/www/redmine/log/unicorn.stdout.log"

before_fork (далее…)

При попытке залить дамп базы данных через утилиту mysqldump столкнулся с ошибкой:
ERROR 2006 (HY000) at line 40283: MySQL server has gone away

Пофиксить можно следующим образом:
открываем файл my.cnf ( в Linux как правило /etc/my.cnf , во FreeBSD — /etc/my.cnf или же /usr/local/etc/my.cnf ), и добавляем следующие строки в секцию [mysqld]

wait_timeout = 6000
max_allowed_packet = 1G
, перезапускаем MySQL согласно той ОС которая у Вас стоит и пробуем залить дамп опять.
root@armfilm:/var/www/rg# mysql -p huid < 2017-11-02_04-35-42.sql Enter password: root@armfilm:/var/www/#
Дамп залит успешно

В дополнение к этой статье я напишу как установить Redmine и при необходимости перенести данные на сервер с ОС CentOS 6.5 и панелью ISPmanager Lite.

У нас имеется один сервер с рабочим Redmine и второй с ISPmanager Lite на котороый и будет делать перенос.

1) Ставим пакеты для сборки сорцов:

# yum install gcc-c++ patch readline readline-devel zlib zlib-devel
# yum install libyaml-devel libffi-devel openssl-devel make
# yum install bzip2 autoconf automake libtool bison iconv-devel mysql-devel

2) Устанавливаем RVM ( Ruby Version Manager ):

# curl -L get.rvm.io | bash -s stable

3) Выставляем переменные окружения:

# source /etc/profile.d/rvm.sh

4) Ставим Ruby 1.9.3 и назначаем дефолтным в системе, проверяем работоспособность:

# rvm install 1.9.3
# rvm use 1.9.3 --default

Провеверям:

# ruby --version
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]

5) Ставим Passenger и добавляем поддержку в Nginx:

# gem install passenger

Качаем исходный код nginx:

# cd /tmp
# wget http://nginx.org/download/nginx-1.7.9.tar.gz && tar xvzf nginx-1.7.9.tar.gz

Смотри с какими параметрами был уже бинарик у нас собран:

# nginx -V
nginx version: nginx/1.7.9
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-debug --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module (далее…)

Процесс установки и первоначальной настройки nginx и MySQL описывать не буду, об этом можно почитать в предыдущих заметках.
Приступим:

1) Redmine

Ставим passenger
cd /usr/ports/www/rubygem-passenger/ && make install clean
отмечаем галочками NGINX
Ставим Redmine
deathstar# cd /usr/ports/www/redmine
отмечаем галочками MySQL RMAGIC и PASSENGER
Далее выполняем команду
deathstar# passenger-config --root
/usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.15

и запоминаем путь.

2) настройка nginx$
Пересобираем nginx с модулем passenger , и добавляем в конфиг nginx в секцию http следующее:

passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.15;
passenger_ruby /usr/local/bin/ruby;

( тот самый путь по команде passenger-config --root )
и создаем виртуальный хост

server
{

listen 80;
server_name redmine.deathstar.name;
access_log /var/log/nginx/redmine.deathstar.name_access.log;
error_log /var/log/nginx/redmine.deathstar.name_error.log;
charset utf-8;
passenger_enabled on;
root /usr/local/www/redmine/public;
}

3) Настройка базы для Redmine

Создадим пустую БД и пользователя для работы с ней.

deathstar# mysql -p
mysql>create database redmine character set utf8;
mysql>create user 'redmine'@'localhost' identified by 'password';
mysql>grant all privileges on redmine.* to 'redmine'@'localhost';
mysql>exit;
Bye

Копируем и редактируем конфигурационный файл работы с БД config/database.yml.example в config/database.yml.

deathstar# cd /usr/local/www/redmine/config/
deathstar# cp database.yml.example database.yml
deathstar# chmod u+w database.yml
deathstar# ee database.yml

production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: password
encoding: utf8

4) Перезапускаем nginx и радуемся.

В дополнение к статье по настройке почтового сервера на FreeBSD решил написать как настроить тоже самое, но на ОС CentOS 6.

Подключаем репозиторий Remi и Epel

rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
yum install yum-priorities
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Приводим файл /etc/yum.repos.d/epel.repo к такому виду

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

и файл /etc/yum.repos.d/remi.repo к такому виду:

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Ставим MySQL , добавляем в атозагрузку и стартуем:

yum install mysql mysql-server
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

Установим пароь для root в MySQL следующей командой:

mysql_secure_installation

Устанавливаем nginx ( да да, как и в прошлый раз мы обойдемся без тяжеловесного Apache и сделаем все на NGINX + PHP-FPM ), добавим в автозагрузку и стартуем
yum install nginx
chkconfig --levels (далее…)

При установке IP.Board (CMS для создания форума ) на шаге 10 из 13 скрипт установки выдает такую ошибку:

Возникла ошибка при работе с базой данных. К сожалению, на данный момент из-за технических проблем с базой данных, форум не может обработать ваш запрос. О проблеме уже сообщено администрации форума. Приносим свои извинения за причиненные неудобства. Вы можете попробовать обновить страницу нажав сюда

Причина проблемы кроется в кодировке базы данных MySQL , используемой для IP.Board. Чтобы избежать данную проблему нужно перед установкой выполнить следующий запрос для базы данных:

ALTER DATABASE DB_NAME DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Где DB_NAME является именем БД. Ошибки не возникнет и установка пройдет как надо.

Добавляем в файл /etc/my.cnf
В секцию [mysqld] следующее

skip-grant-tables
и ребутим сервере
deathstar# /usr/local/etc/rc.d/mysql-server restart
Выполняем
Пароль не вводим жмем enter

deathstar# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.1.57 FreeBSD port: mysql-server-5.1.57

И выполняем запрос

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user SET password = PASSWORD('пароль') WHERE user = 'root' AND host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Ctrl-C -- exit!
Aborted

Потом убираем изменения в /etc/my.cnf
и ребутим сервер MySQL — все,доступ получен

Вздумалось мне этой ночью попробовать поставить Apache 22 + PHP 5 + MySQL 5.1 + phpMyAdmin на домашнем ПК,для обзора некоторых документов из локальной сети некоторым пользователям,подумал-сделал.
Устанавливаем из портов Apache22, при этом убираем поддержку IPV6:

cd /usr/ports/www/apache22
make install clean

Для старта apache при загрузке системы прописываем в /etc/rc.conf строчку:
apache22_enable="YES"

Устанавливаем php5. Убираем поддержку IPV6, добавляем поддержку Apache:

/cd /usr/ports/lang/php5
make install clean

В конфиге Apache /usr/local/etc/apache22/httpd.conf смотрим чтобы была строчка:

LoadModule php5_module libexec/apache22/libphp5.so

а так же блок:


DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

находим секцию и добавляем index.php

DirectoryIndex index.php index.html

В /usr/local/etc/php.ini проверяем, чтобы было разрешено отображение короткой формы записи

short_open_tag = On

Включаем защищенный режим:

safe_mode = On

Необходимо так же раскомментировать строчки:

extension=php_mcrypt.dll
session.save_path = "/tmp"

После этих действий страницы на php буду нормально открываться в браузере.

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

cd /usr/ports/databases/mysql51-server
make install clean

cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf

/usr/local/bin/mysql_intsall_db --user=mysql

chown -R mysql:mysql /var/db/mysql/

/usr/local/bin/mysqld_safe –user=mysql &

/usr/local/bin/mysqladmin -u root password '123456'

в /etc/rc.conf добавляем:

mysql_enable=”YES”

Установка PhpMyAdmin

cd /usr/ports/databases/phpmyadmin
make install clean

добавляем в /usr/local/etc/apache22/httpd.conf

Alias /pma/ "/usr/local/www/phpMyAdmin/"


Options none
AllowOverride Limit

Order Deny,Allow
Deny from all
Allow from 127.0.0.1 .example.com

Вместо .example.com нужно вписать IP с которого разрешено заходить.

Теперь необходимо создать файл конфигурации для подключения phpMyAdmin к (далее…)