Munin

Оглавление

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

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

выходим из директории

cd ~

включаем плагины

sudo ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request sudo ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status sudo ln -s /usr/share/munin/plugins/nginx_memory /etc/munin/plugins/nginx_memory sudo ln -s /usr/share/munin/plugins/multimemory /etc/munin/plugins/multimemory sudo ln -s /usr/share/munin/plugins/sshd_log /etc/munin/plugins/sshd_log sudo ln -s /usr/share/munin/plugins/php5-fpm_status /etc/munin/plugins/php5-fpm_status sudo ln -s /usr/share/munin/plugins/mysql_connections /etc/munin/plugins/mysql_connections sudo ln -s /usr/share/munin/plugins/mysql_qcache /etc/munin/plugins/mysql_qcache sudo ln -s /usr/share/munin/plugins/mysql_qcache_mem /etc/munin/plugins/mysql_qcache_mem

Некоторые плагины имеет не unix формат, чтобы он заработал в Ubuntu открываем его

sudo vim /usr/share/munin/plugins/sshd_log

и пишем команду для vim редактора (не в документ пишем а именно команду)

:set ff=unix

Редактируем дефолтовый конфиг Nginx

sudo vim /etc/nginx/sites-available/default

Добавляем новые location для localhost

location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }   location /fpm-status { access_log off; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /fpm-status; include fastcgi_params; allow 127.0.0.1; deny all; }

Перезагружаем nginx

sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start

Далее, необходимо указать плагинам, куда ходить за статистикой и тому подобное

sudo vim /etc/munin/plugin-conf.d/munin-node

Добавляем следующее

[nginx*] env.url http://localhost/nginx_status env.ua nginx-status-verifier/0.1   [multimemory] env.os linux env.names nginx php5-fpm mysqld   [users] env.category users   [sshd_log] user root group root env.logfile /var/log/auth.log env.category users

Для работы статистики php5-fpm редактируем его конфиг

sudo vim /etc/php5/fpm/main.conf

Добавляем

pm.status_path = /fpm-status

Перезагружаем клиент Munin:

sudo /etc/init.d/munin-node restart

или

sudo service munin-node restart

Перезагружаем php5-frm

sudo /etc/init.d/php5-fpm restart

Добавляем хост

sudo vim /etc/nginx/sites-available/munin.example.ru

Вставляем примерно следующее

server { listen 80; server_name munin.example.ru; access_log /var/log/nginx/munin.example.ru.access.log;   auth_basic "Restricted"; auth_basic_user_file /etc/munin/.htpasswd;   location / { root /var/cache/munin/www; index index.html; } }

Включаем

sudo ln -s /etc/nginx/sites-available/munin.example.ru /etc/nginx/sites-enabled/munin.example.ru

Создаем файлик, где будут располагаться пользователи, для которых будет открыт доступ к графикам производительности (http://www.codeobsessed.com/encryption.php нужен пароль crypt(3)):

sudo vim /etc/munin/.htpasswd

Перезагружаем nginx

sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start

Теперь можно смотреть графики по адресу munin.example.ru

Источник: http://www.drupal.ru/node/60544

Почта

Оглавление

Содержать свой почтовый сервер, со всеми прибомбасами, такими как антивирусник, антиспам и так далее, оказалось слишком дорого в плане ресурсов, это будет плохо вписываться в имеющиеся 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

Исправляем:

mynetworks = 127.0.0.0/8, 192.168.0.0/16

Добавляем в этот же конфиг

smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/saslpass smtp_sasl_security_options = relay = smtp.yandex.ru relayhost = smtp.yandex.ru

Добавим файл /etc/postfix/saslpass:

sudo vim /etc/postfix/saslpass

smtp.yandex.ru admin@example-d6.ru:password

Закрепим изменения:

sudo postmap /etc/postfix/saslpass

Подправим php.ini:

sudo vim /etc/php5/fpm/php.ini

Находим строку sendmail_path и заменяем:

sendmail_path = sendmail -t -i -f admin@example-d6.ru

Перезагружаем fpm

sudo /etc/init.d/php5-fpm restart

Теперь должно всё работать, я проверял на контактной форме случайного сайта, т.е. не c example-d6.ru, а например example-d7.ru, чтобы убедиться что письма отсылаются с любого домена, а не только указанного в конфиге.

Источник: http://www.drupal.ru/node/60543

Cron

Оглавление

Нужно настроить 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

Источник: http://www.drupal.ru/node/60542

D6 Установка

Оглавление

Создаём папочки в 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 location ~* .(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(.php)?|xtmpl|svn-base)$|^(code-style.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$ { deny all; }   # hide backup_migrate files location ~* ^/sites/www.example-d6.ru/files/backup_migrate { deny all; }   # Static content location = /robots.txt { if (-f $document_root/sites/www.example-d6.ru/robots.txt) { rewrite . /sites/www.example-d6.ru/robots.txt; } break; }   location ~ ^(/sites/all|/sites/www.example-d6.ru)?/(modules|themes|libraries)/.*.(css|js|png|gif|jpg)$ { break; } location /misc/ { break; } location /sites/www.example-d6.ru/files/ { break; }   # Imagecache (http://drupal.org/project/imagecache) location /sites/www.example-d6.ru/files/imagecache/ { if (-f $request_filename) { break; } rewrite ^(.*)$ /index.php?q=$1 last; }   location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;   fastcgi_param SCRIPT_FILENAME /var/www/drupal6$fastcgi_script_name;   include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; }   ## Disable viewing .htaccess & .htpassword location ~ /\.ht { deny all; } }

Включаем

sudo ln -s /etc/nginx/sites-available/example-d6.ru /etc/nginx/sites-enabled/example-d6.ru sudo /etc/init.d/nginx restart

Источник: http://www.drupal.ru/node/60541

D6 Подготовка

Оглавление

Создаём пользователя drupal6

sudo /usr/sbin/adduser drupal6

Добавляем папки для ключей SSH

sudo mkdir /home/drupal6/.ssh

Генерируем ключи, сразу же предложит указать файл, он будет такой /home/drupal6/.ssh/id_rsa

sudo ssh-keygen -t rsa sudo mv ~drupal6/.ssh/id_rsa.pub ~drupal6/.ssh/authorized_keys sudo rm ~drupal6/.ssh/id_rsa sudo chown -R drupal6:drupal6 ~drupal6/.ssh sudo chmod 700 ~drupal6/.ssh sudo chmod 600 ~drupal6/.ssh/authorized_keys

Надо разрешить им доступ по SSH для заливки файлов по SFTP протаколу

sudo vim /etc/ssh/sshd_config

Должно быть примерно так

AllowUsers admin drupal6

Перезагружаем SSH

sudo /etc/init.d/ssh reload

Теперь создаём папку для сайта

sudo mkdir /var/www/drupal6 sudo ln -s /var/www/drupal6 ~drupal6/www sudo chown -R drupal6:drupal6 /var/www/drupal6

Логинимся от имени drupal6, например через FileZilla, и заливаем свежую версию ядра, создаём базу, пользователя базы и т.д через PhpMyAdmin

Теперь определяемся с адресами, у меня будет такая структура:
technical6.example-d6.ru – технический сайт который находится пожизненно в режиме “на обслуживании”. Здесь будут включены все модули которые есть в папочке all, следить за обновлениями модулей буду именно отсюда. Это позволит не включать вообще вообще ни на одном другом сайте в этой связке этот модуль, что несомненно ускорит админку этих сайтов. Будут ставиться переводы, таблицы для переводов будут шариться на все сайты связки. Так же на главную страницу будут выноситься ссылки на скрипт обновления каждого из сайтов мультисайтинга, что при установке обновлений ускорит работу.
www.example-d6.ru – первый сайт мультисайтинга, на шестёрке.

Источник: http://www.drupal.ru/node/60540

MySqlDumper

Оглавление

Ставим MySqlDumper (www.mysqldumper.net), его я использую для переноса баз данных, т.к. один сайт имеет запредельный размер, порядка 500М в несжатом виде, также ставлю на хостинг, там делаю экспорт, здесь импорт.

sudo mkdir /var/www/mysqldumper sudo ln -s /var/www/mysqldumper ~admin/mysqldumper sudo chown -R admin:admin /var/www/mysqldumper

Заливаем сюда скрипты, я например через FileZilla это делаю, а не через putty

Сразу поставим права, т.к. этого потребует скрипт установки.

chmod 777 /var/www/mysqldumper/config.php

Добавляем хост

sudo vim /etc/nginx/sites-available/mysqldumper.example.ru

Вставляем примерно следующее

server { listen 80; server_name msd.example.ru; rewrite ^ http://mysqldumper.example.ru$request_uri? permanent; #301 redirect }   server { listen 80; server_name mysqldumper.example.ru; access_log /var/log/nginx/mysqldumper.example.ru.access.log;   location / { root /var/www/mysqldumper; index index.php; }   location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mysqldumper$fastcgi_script_name; include fastcgi_params; } }

Включаем

sudo ln -s /etc/nginx/sites-available/mysqldumper.example.ru /etc/nginx/sites-enabled/mysqldumper.example.ru

И перезагружаем nginx

sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start

Открыв в браузере mysqldumper.example.ru увидим install, проходим её. Нажимаем на “Create directory protection” например MD5. Для nginx нужен crypt(3) можно составить например здесь http://www.codeobsessed.com/encryption.php

Открываем файл с паролями и заменяем пароль на полученный через crypt(3)

vim /var/www/mysqldumper/.htpasswd

Но это не работает для nginx сервера, поэтому добавляем в конфиг

sudo vim /etc/nginx/sites-available/mysqldumper.example.ru

следующее

auth_basic "Restricted"; auth_basic_user_file /var/www/mysqldumper/.htpasswd;

т.е. получится примерно так

server { listen 80; server_name mysqldumper.example.ru; access_log /var/log/nginx/mysqldumper.example.ru.access.log;   auth_basic "Restricted"; auth_basic_user_file /var/www/mysqldumper/.htpasswd;   ...

И снова перезагружаем nginx

sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start

Источник: http://www.drupal.ru/node/60538

PhpMyAdmin

Оглавление

Устанавливаем нужные пакеты

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 suhosin.request.max_vars = 2048

так же логи не должны включать в себя sql

Далее отключаем предупреждение о возможных проблемах с suhosin

sudo vim /usr/share/phpmyadmin/libraries/config.default.php

В файле написано что мы не должны его менять, так что меняем только это значение, чтобы надпись не раздражала, так как мы выставили рекомендуемые параметры.

$cfg['SuhosinDisableWarning'] = true;

Перезагружаем php fpm и nginx

sudo /etc/init.d/php5-fpm restart && sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start

Теперь по адресу phpmyadmin.example.ru должна быть форма входа в PhpMyAdmin

Источник: http://www.drupal.ru/node/60537

MySQL

Оглавление

Устанавливаем нужные пакеты

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

Источник: http://www.drupal.ru/node/60536

MemCache

Оглавление

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

sudo apt-get install memcached sudo apt-get install php5-memcache

Перезагружаем php5-frm

sudo /etc/init.d/php5-fpm restart

Источник: http://www.drupal.ru/node/60535

eAccelerator

Оглавление

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

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

Копируем панель управления

cp /tmp/eaccelerator-0.9.6.1/control.php /var/www/eaccelerator/index.php

Меняем имя и пароль

sudo vim /var/www/eaccelerator/index.php

Перезагружаем php5-frm

sudo /etc/init.d/php5-fpm restart

Источник: http://www.drupal.ru/node/60534

PHP

Оглавление

Нам понадобятся 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

На самом деле динамические воркеры, это хорошо. Если мы даём каждому юзеру свой воркер это накладно при 2000 сайтов. Но у нас только VDS с 384М, а не сервак с 16 гигами, будет несколько юзеров, но с общими воркерами, для начала поставим 1, а когда будет всё настроено можно будет увеличивать если будут свободные ресурсы (На вторую конфигурацию с гигом памяти смело можно ставить 3, или вообще не трогать и оставить динамические). Так же хорошо для крона сделать отдельный воркер, это связано с тем что на моих сайтах долго выполняется cron, время каждого запуска расчитано, поэтому хватит и одного отдельного потока, для его бесперебойной работы, чтобы он не конкурировал с пользователями сайтов. Но всё это держим только в уме, а пока ставим 1 поток на всех.

pm = static pm.max_children = 1

Перезагружаем nginx и php5-frm.

sudo /etc/init.d/nginx stop && sudo /etc/init.d/nginx start sudo /etc/init.d/php5-fpm stop sudo /etc/init.d/php5-fpm start

Создаём проверочный файл

sudo vim /var/www/index.php

И пишем такую строчку


<?php phpinfo(); ?>

Проверяем, должно всё работать.

Источник: http://www.drupal.ru/node/60533

Nginx

Оглавление

Смотрим установлен ли апач

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; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; }   ## Disable viewing .htaccess & .htpassword location ~ /\.ht { deny all; } }

Чтобы можно было добавлять много server_name в разных конфигах нужно добавить директиву server_names_hash_bucket_size в конфиге nginx в http блок

sudo vim /etc/nginx/nginx.conf

server_names_hash_bucket_size 512;

Источник: http://www.drupal.ru/node/60532

Подготовка ОС

Оглавление

Устанавливаем локаль

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

Источник: http://www.drupal.ru/node/60531

Подготовка сервера

Оглавление

Хостер установил уже Ubuntu Server 10.10 и даже поставил ssh и Apache 2.

Заходим через SSH как root, сразу меняем пароль на нормальный

passwd

Добавляем группу избранных, назовём её raccess

/usr/sbin/groupadd raccess

Открываем файл, для того чтобы нашу группу сделать “избранной”

/usr/sbin/visudo

Добавляем в конец файла, далее если не оговаривается, то всегда вставляется именно в конец.

## Allows people in group raccess to run all commands %raccess ALL=(ALL) ALL

Добавляем нового пользователя, пускай будет admin, но в теории хорошо как и группу называть по другому, это усложняет взлом подбором.

/usr/sbin/adduser admin

Добавляем его к ранее созданной группе

/usr/sbin/usermod -a -G raccess admin

Добавляем папку для ключей SSH

mkdir ~/.ssh

Генерируем ключи

ssh-keygen -t rsa

Делаем для нашего будущего аккаунта, где вместо нулей подставляем реальный IP адрес

scp ~/.ssh/id_rsa.pub admin@0.0.0.0: mkdir ~admin/.ssh mv ~admin/id_rsa.pub ~admin/.ssh/authorized_keys

Назначаем права нашему пользователю

chown -R admin:admin ~admin/.ssh chmod 700 ~admin/.ssh chmod 600 ~admin/.ssh/authorized_keys

Настраиваем SSH

vim /etc/ssh/sshd_config

Проверяем значения и меняем или добавляем строки если нет…

Port 10022 # Меняем на что нибудь между 1025 и 65536, это так же усложнит жизнь взломщикам. Protocol 2 PermitRootLogin no # отключаем запись для root пользователя UseDNS no AllowUsers admin # если пользователей несколько через пробел называем всех

В интернете предлагают сделать следующее, я пока не разобрался как потом залогиниться

PasswordAuthentication no

Создаём правила маршрутизации в файлике, чтобы после перезагрузки сервера настройки восстанавливались.

vim /etc/iptables.up.rules

Вставляем следующее, и меняем порт для SSH, который недавно ставили 10022, остальные не трогаем, в комментариях видно для чего они понадобятся.

*filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You can modify this to only allow certain traffic -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT # Allows mysql -A INPUT -p tcp --dport 3306 -j ACCEPT # Allows fcgi -A INPUT -p tcp --dport 9000 -j ACCEPT -A INPUT -p tcp --dport 8521 -j ACCEPT # Allows SSH connections # # THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE # -A INPUT -p tcp -m state --state NEW --dport 10022 -j ACCEPT # Allows mail -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT # Allows ldap -A INPUT -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT # Allows memcache -A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT # Allows munin -A INPUT -p tcp -m state --state NEW -m tcp --dport 4949 -j ACCEPT # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT

Чистим память

/sbin/iptables -F

Применяем наши правила

/sbin/iptables-restore < /etc/iptables.up.rules

Проверяем внимательно особенно наш порт SSH

/sbin/iptables -L

Для восстановления после перезагрузки создаём файл

vim /etc/network/if-pre-up.d/iptables

Вставляем следующее

#!/bin/sh /sbin/iptables-restore < /etc/iptables.up.rules

Разрешаем запускать этот файл

chmod +x /etc/network/if-pre-up.d/iptables

Перезагружаем ssh

/etc/init.d/ssh reload

Закрываем Putty, открываем заново поменяв порт. Заходим под admin

Теперь нельзя залогиниться как root…

Источник: http://www.drupal.ru/node/60530

© 2009 Обзор CMS