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

RSS-материал

Новое на сайте

Ссылки партнёров