D7 Мультисайтинг
Прислано: EliteMonk
пн, 11/04/2011 - 21:02
Будут использованы сайты aaa.ru и bbb.ru находящиеся в мультисайтинговой связке. А так же адреса на которых сайты разрабатывались zzz.ru, т.е. aaa.zzz.ru и bbb.zzz.ru Первое отличие от D6 это возможность задать название папки не по домену. Копируем файл sites/example.sites.php в sites/sites.php и прописываем соответствия.
$sites['aaa.ru'] = 'aaa.ru'; $sites['aaa.zzz.ru'] = 'aaa.ru'; $sites['bbb.ru'] = 'bbb.ru'; $sites['bbb.zzz.ru'] = 'bbb.ru';
Как видим, теперь не надо будет менять пути при переносе сайта, а также рыться в базе чтобы поправить все ссылки. По сравнению с D6 очень удобно, то что может быть у каждого сайта своя база, и даже не одна, например, один из вариантов, вынести все переводы в отдельную базу. Так же перенос и отделение от мультисайтинга значительно облегчится.
$databases = array ( 'default' => array ( 'default' => array ( 'database' => 'd7_aaa', 'username' => 'd7_aaa_u', 'password' => '<ваш-пароль>', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => array( 'default' => '', 'locales_source' => 'd7_shared_locales.', 'locales_target' => 'd7_shared_locales.', ), ), ), );
Munin
Прислано: EliteMonk
пн, 11/04/2011 - 19:41
Устанавливаем клиент и сервер
sudo apt-get install munin munin-node
переходим в каталог доступных плагинов munin
cd /usr/share/munin/plugins
скачиваем плагины для nginx
sudo wget -O nginx_request http://exchange.munin-monitoring.org/plugins/nginx_request/version/2/download sudo wget -O nginx_status http://exchange.munin-monitoring.org/plugins/nginx_status/version/3/download sudo wget -O nginx_memory http://exchange.munin-monitoring.org/plugins/nginx_memory/version/1/download
скачиваем другие плагины
sudo wget -O multimemory http://exchange.munin-monitoring.org/plugins/multimemory/version/3/download sudo wget -O sshd_log http://exchange.munin-monitoring.org/plugins/sshd_log/version/1/download sudo wget -O php5-fpm_status http://exchange.munin-monitoring.org/plugins/php5-fpm_status/version/1/download sudo wget -O mysql_connections http://exchange.munin-monitoring.org/plugins/mysql_connections/version/1/download sudo wget -O mysql_qcache http://exchange.munin-monitoring.org/plugins/mysql_qcache/version/1/download sudo wget -O mysql_qcache_mem http://exchange.munin-monitoring.org/plugins/mysql_qcache_mem/version/1/download
делаем плагины исполняемыми
sudo chmod +x nginx_request sudo chmod +x nginx_status sudo chmod +x nginx_memory sudo chmod +x multimemory sudo chmod +x sshd_log sudo chmod +x php5-fpm_status sudo chmod +x mysql_connections sudo chmod +x mysql_qcache sudo chmod +x mysql_qcache_mem
Почта
Прислано: EliteMonk
пн, 11/04/2011 - 19:35
Содержать свой почтовый сервер, со всеми прибомбасами, такими как антивирусник, антиспам и так далее, оказалось слишком дорого в плане ресурсов, это будет плохо вписываться в имеющиеся 384М оперативки, даже при 512 я буду смотреть в сторону увеличения воркеров для fpm, увеличения памяти для скриптов (сейчас 1 воркер на 128М, что катострафически мало), также буду смотреть в сторону организации ускорителя и кеша... В общем только на конфигурации 1Gb оперативной памяти следует задуматься о развёртовании полноценного почтового сервера.
Я использую яндекс, т.к. в панели управления доменами у моего регистратора есть автоматическая привязка. Но можно пробовать завязывать на gmail или mail.ru
Меняем имя сервера (по умолчанию оно server), впринципе это нужно для полноценного почтового сервера, но пускай будет настроено правильно.
sudo vim /etc/hostname
Пишем название, например
sergei
Меняем хост
sudo vim /etc/hosts
Заменяем нули на реальный IP
0.0.0.0 sergei.example-d6.ru sergei
Перезагружаем ОС
sudo reboot
Смотрим на имя и хост
hostname hostname -f
Если после перезагрузки имя не сменилось, то надо идти в панель управления VDS если нет доступа к ней, то просить хостера сменить имя.
Установим нужные пакеты, которые настроены будут позже
sudo apt-get install postfix libsasl2-2 sasl2-binОтредактируем конфиг:
sudo vim /etc/postfix/main.cf
Cron
Прислано: EliteMonk
пн, 11/04/2011 - 19:31
Нужно настроить cron для всех сайтов, в том числе и для технических. Периоды выбираются индивидуально для каждого сайта, но на технический я ставлю 1 раз в сутки, не смотря на то что в админке drupal'a ставлю проверять обновления раз в неделю...
Открываем для редактирования задачи cron'a
sudo crontab -e
Должно быть примерно так, третья строка (www.example-d6.ru) запускается каждую минуту чтобы убедиться сразу что работает, после чего надо выставить нормальное время, чтобы не завалить сервер если сайтов в мультисайтинге десяток, а то и не один...
45 2 * * * /usr/bin/wget -O - -q -t 1 http://technical.example-d6.ru/cron.php 15 3 * * * /usr/bin/wget -O - -q -t 1 http://technical.example-d7.ru/cron.php * * * * * /usr/bin/wget -O - -q -t 1 http://www.example-d6.ru/cron.php 35 3 * * /usr/bin/wget -O - -q -t 1 http://www.example-d7.ru/cron.php
D6 Установка
Прислано: EliteMonk
пн, 11/04/2011 - 19:28
Создаём папочки в sites
www.example-d6.ru www.example-d6.ru/files www.example-d6.ru/modules www.example-d6.ru/themes www.example-d6.ru/tmp
Копируем в www.example-d6.ru из sites/default файл default.settings.php и переименовываем в settings.php
Также копируем в www.example-d6.ru robots.txt
Если сайт переносится, редактируется settings.php чтобы данные о базе были верны.
Если ставиться, новый сайт и он первый на связке, то настройки добавляются при установке, потом редактируются.
Если ставиться, новый сайт, но он уже не первый, то копировать settings.php удобнее из соседнего сайта связки, и изменить следующее
$db_url = 'mysqli: //и ваши данные о базе $db_prefix = array( 'default' => 'exampled6_', 'locales_meta' => 'shared_', 'locales_source' => 'shared_', 'locales_target' => 'shared_', ); $base_url = 'http://www.example-d6.ru'; ini_set('memory_limit', '128M');
Теперь остаётся только задать адрес
sudo vim /etc/nginx/sites-available/example-d6.ru
Заменяем на свой хост
server { listen 80; server_name example-d6.ru; rewrite ^ http://www.example-d6.ru$request_uri? permanent; #301 redirect } server { listen 80; server_name www.example-d6.ru; access_log /var/log/nginx/example-d6.ru.access.log; root /var/www/drupal6; index index.php; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } error_page 404 index.php; # hide protected files
D6 Подготовка
Прислано: EliteMonk
пн, 11/04/2011 - 19:26
Создаём пользователя drupal6
sudo /usr/sbin/adduser drupal6
Добавляем папки для ключей SSH
Установка сайта
Прислано: EliteMonk
пн, 11/04/2011 - 19:24
Далее я буду описывать установку для разных пользователей и как минимум двух установок Drupal6 и Drupal7. Это наглядно покажет как добавлять, новые сайты которые не входят в мультисайтинг с первым, а также как добовлять в уже имеющуюся систему.
MySqlDumper
Прислано: EliteMonk
пн, 11/04/2011 - 19:20
Ставим MySqlDumper (www.mysqldumper.net), его я использую для переноса баз данных, т.к. один сайт имеет запредельный размер, порядка 500М в несжатом виде, также ставлю на хостинг, там делаю экспорт, здесь импорт.
PhpMyAdmin
Прислано: EliteMonk
пн, 11/04/2011 - 19:17
Устанавливаем нужные пакеты
sudo apt-get install phpmyadmin php5-mcrypt
В окошке не выбираем ничего просто жмём enter
Добавляем хост
sudo vim /etc/nginx/sites-available/phpmyadmin.example.ru
Вставляем примерно следующее
server { listen 80; server_name pma.example.ru; rewrite ^ http://phpmyadmin.example.ru$request_uri? permanent; #301 redirect } server { listen 80; server_name phpmyadmin.example.ru; root /usr/share/phpmyadmin; access_log /var/log/nginx/phpmyadmin.example.ru.access.log; location / { root /usr/share/phpmyadmin; index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name; include fastcgi_params; } }
Включаем
sudo ln -s /etc/nginx/sites-available/phpmyadmin.example.ru /etc/nginx/sites-enabled/phpmyadmin.example.ru
Забегая вперёд, после входа PhpMyAdmin будет жаловаться на установленный Suhosin, правим конфиг как рекомендовано в доках на PhpMyAdmin
sudo vim /etc/php5/conf.d/suhosin.ini
Должны быть следующие значения:
suhosin.sql.bailout_on_error = off suhosin.post.max_array_index_length = 256 suhosin.post.max_totalname_length = 8192 suhosin.post.max_vars = 2048 suhosin.request.max_array_index_length = 256 suhosin.request.max_totalname_length = 8192
MySQL
Прислано: EliteMonk
пн, 11/04/2011 - 19:13
Устанавливаем нужные пакеты
sudo apt-get install mysql-server mysql-client php5-mysql
Правим конфиг чтобы уменьшить потребление памяти
sudo vim /etc/mysql/my.cnf
Находим раздел про InnoDB, и добавляем
skip-innodb
Перезапускаем mysql
sudo /etc/init.d/mysql restart
если не получится, то попробовать надо так
sudo service mysql restart
Потребление памяти уменьшилось, благодаря тому, что запущено теперь меньше процессов mysql
Перезапускаем php fpm т.к. мы поставили php5-mysql, который пока не работает
sudo /etc/init.d/php5-fpm restart
MemCache
Прислано: EliteMonk
пн, 11/04/2011 - 19:11
Устанавливаем сам memcache
sudo apt-get install memcached sudo apt-get install php5-memcache
Перезагружаем php5-frm
sudo /etc/init.d/php5-fpm restart
eAccelerator
Прислано: EliteMonk
пн, 11/04/2011 - 19:09
Скачиваем во временную папку последнию версию и устанавливаем
cd /tmp/ sudo wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2 sudo tar xvjf eaccelerator-0.9.6.1.tar.bz2 cd eaccelerator-0.9.6.1 sudo phpize sudo ./configure --enable-eaccelerator=shared sudo make sudo make install cd ~
теперь редактируем и добавляем следующие строки, начиная после тега [PHP]:
sudo vim /etc/php5/fpm/php.ini
; eAccelerator configuration ; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension ; If you are using a thread safe build of PHP you must use ; zend_extension_ts instead of zend_extension ;extension = "/usr/lib/php5/20090626/eaccelerator.so" zend_extension = "/usr/lib/php5/20090626/eaccelerator.so" eaccelerator.shm_size = "32" eaccelerator.cache_dir = "/var/cache/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "1" eaccelerator.debug = "0" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.shm_prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
Создаём директории с нужными права
sudo mkdir -p /var/cache/eaccelerator sudo chmod 0777 /var/cache/eaccelerator sudo mkdir -p /var/www/eaccelerator sudo chmod 0755 /var/www/eaccelerator
Копируем панель управления
PHP
Прислано: EliteMonk
пн, 11/04/2011 - 19:02
Нам понадобятся 2 библиотеки, закачаем последние версии и установим их
cd /tmp wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb wget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb sudo dpkg -i *.deb cd ~
Обновим список репозиториев, для установки последней стабильной версии PHP
sudo vim /etc/apt/sources.list
Добавляем
deb http://php53.dotdeb.org stable allОбновляемся и устанавливаем PHP с нужными пакетами.
sudo apt-get update sudo apt-get install php5-cli php5-common php5-suhosin sudo apt-get install php5-fpm php5-cgi sudo apt-get install php-apc php5-curl php5-dev
Редактируем конфиг для fpm, т.к. через него у нас будет запускаться FastCGI
sudo vim /etc/php5/fpm/php.ini
Вставляем следующий параметр
cgi.fix_pathinfo = 0
Правим конфиг для пакета php-apc
sudo vim /etc/php5/conf.d/apc.ini
Добавляем строку
apc.shm_size = 48Чтобы не было падений php-fpm открываем этот конфиг
sudo vim /etc/php5/fpm/pool.d/www.conf
Nginx
Прислано: EliteMonk
пн, 11/04/2011 - 18:57
Смотрим установлен ли апач
dpkg -l | grep apache
Если установлен, то удаляем примерно так (будет зависеть от установленных пакетов):
sudo apt-get --purge remove apache2 apache2.2-bin apache2.2-common apache2-mpm-prefork apache2-utils apache2-doc
Устанавливаем nginx
sudo apt-get install nginx
Запускаем
sudo /etc/init.d/nginx start
Далее в браузере вводим IP своего VDS и видим надпись
Welcome to nginx!
* Если появилась ошибка 403, то на этом этапе не страшно, в одной из версий неправильный конфиг дефолтовый, что исправиться при установке PHP
Меняем дефолтовый конфиг
sudo vim /etc/nginx/sites-available/default
Заменяем содержимое файла на следующее
server { listen 80; server_name localhost; access_log /var/log/nginx/localhost.access.log; ## Default location location / { root /var/www; index index.php; } ## Images and static content is treated different location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; root /var/www; } ## Parse all .php file in the /var/www directory location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method;
Подготовка ОС
Прислано: EliteMonk
пн, 11/04/2011 - 18:53
Устанавливаем локаль
sudo /usr/sbin/locale-gen en_US.UTF-8 && sudo /usr/sbin/update-locale LANG=en_US.UTF-8
Обновляемся
sudo apt-get update
Ставим менеджер для обновлений
sudo apt-get install update-manager-core sudo do-release-upgrade
Ставим для обзора процессов и их потребления памяти ими, ставим htop
sudo apt-get install htop
используем очень просто
htop
Ставим утилиты разработки
sudo apt-get install build-essential
Если стоит 10.04 а не 10.10 то обновление делается так
Открываем файл менеджера обновлений для правки
sudo vim /etc/update-manager/release-upgrades
Заменяем
Prompt=lts
на
Prompt=normal
Обновляемся
sudo do-release-upgrade
Теперь должна быть версия 10.10