Установка drupal на виртуальный сервер с нуля

Главные вкладки

Аватар пользователя solomenikm solomenikm 12 июня 2009 в 19:51

Мой опыт утсановки drupal на «голый» VPS сервер (ubuntu server). Связка apache+php+mysql. С примером настройки хостов для мультисайтинга и базовой оптимизацией.

Купил я себе виртуальный сервер на fastvps.ru (маленькая реклама с рефайлерской ссылкой Wink ) Заказал там поный комплект с предустановленым ПО и ISPmanager-pro. (Виртульный сервер 300Mhz/100MB/Ubuntu) Оказалось что это было зло. Не мог даже по ssh подключиться с первой попытки из-за перегруженности сервера. Кое-как он все-таки работал, но ISP пишет конфиги какие хочет и куда ему вздумается. Короче после попыток оптимизаци я его положил. Решил переустановить сервер и настроить все ручками. Вот как я это делал:
*127.127.1.1 - ip сервера
По умолчанию мой хостер устанавливает ОС с apache и прописаным в нем дефолтным сайтом mydefsite.com, чуть что это в etc/hosts

        127.0.0.1 localhost.localdomain localhost
        # Auto-generated hostname. Please do not remove this comment.
        127.127.1.1 mydefsite.com  user

Подключаемся по ssh: ssh root@127.127.1.1
Обновляем репозитории: apt-get update
Обновляем систему: apt-get upgrade
Ставим PHP: apt-get install php5
Ставим MySQL: apt-get install mysql-server
Указываем пароль к базе например dbpass
Идем в /etc/mysql.my.cnf и в секции [mysqld] прописываем

        default-character-set="utf8"
        default-collation="utf8_general_ci"
        character-set-server="utf8"

Перезапускаем сервер: service apache2 restart
Перезапускаем мускул: service mysql restart
Проверяем работу в браузере: http://127.127.1.1/
It works! Smile

Ставим еще пакеты: apt-get install libapache2-mod-auth-mysql php5-mysql
Ставим PhpMyAdmin: sudo apt-get install phpmyadmin
Перезапускаем сервер: service apache2 restart
Открываем /etc/apache2/httpd.conf
И прописываем в нем

        Alias /myadmin "/usr/share/phpmyadmin/"
        <Directory "/usr/share/phpmyadmin/">
        Order Deny,Allow
        Allow from all
        </Directory>

Проверяем: http://127.127.1.1/myadmin/

Идем в /etc/apache2/sites-available/ и создаем там файл с именем нашего сайта mydefsite.com куда вписываем следующее:

        <VirtualHost 127.127.1.1:80>
        ServerName mydefsite.com
        DocumentRoot /var/www/mydefsite.com
        ServerAlias mydefsite.com
        </VirtualHost>

Его же копируем в /etc/apache2/sites-enabled
По аналогии для других сайтов.
* /var/www/mydefsite.com - директория где лежат скрипты сайта

Для пользователей Друпал мултисайтинга остальные файлы кофигурации сайтов будут выглядеть так:

        <VirtualHost 127.127.1.1:80>
         ServerName mysecondsite.com
         DocumentRoot /var/www/mydefsite.com
         ServerAlias mysecondsite.com
        </VirtualHost>

Обратите внимание, что директория та же что и в предыдущем Wink Это чудо мультисайтинга будет.

В теории все готово к использованию. Пердположим что друпал мы поставили и он работает.
Ну что, бенчмарк?
*использовал ab - стандартный модуль apache для этого

        Concurrency Level:      5
        Time taken for tests:   11.596 seconds
        Complete requests:      100

        Concurrency Level:      50
        Time taken for tests:   59.782 seconds
        Complete requests:      500

Идем в /etc/mysql.my.cnf и раскоментируем строку skip-innodb.
Перезапускаем мускул: service mysql restart

        Concurrency Level:      5
        Time taken for tests:   10.911 seconds
        Complete requests:      100

        Concurrency Level:      50
        Time taken for tests:   55.983 seconds
        Complete requests:      500

Ставим php-apc: apt-get install php-apc
Перезапускаем apache: service apache2 restart И о чудо!

        Concurrency Level:      5
        Time taken for tests:   3.859 seconds
        Complete requests:      100

        Concurrency Level:      50
        Time taken for tests:   13.766 seconds
        Complete requests:      500

Все. Комментарии будут очень кстати, с вашего позволения буду править пост в соответсвии с ними.

Комментарии

Аватар пользователя solomenikm solomenikm 12 июня 2009 в 22:13

<a href="mailto:mensh@drupal.org">mensh@drupal.org</a> wrote:
Стесняюсь спросить: "А зачем Вы всё это написали?"

Первая причина - памятка.
Вторая - хочу знать на сколько я грамотно это сделал.
Третья - чтобы вместо того чтобы отвечать на вопросы я мог скидывать ссылку.

Аватар пользователя axel axel 12 июня 2009 в 21:21

Я думаю, лучше не трогать /etc/apache2/httpd.conf, чтобы не получать лишних вопросов от менеджера пакетов при апдейте апача в будущем, а конфиг phpmyadmin добавить тоже как виртхост в sites-available. Также для каждого виртхоста надо прописать ссылки в sites-enabled, чтобы конфиги сайтов были задействованы апачем - в debian-based дистрибутивах это делается командой a2ensite <имя_конфига_виртхоста>.

И вот неточно помню, но по-моему модуль rewrite в апаче в убунту по-умолчанию не включён, можно проверить ссылки на модули в modules-enabled и включить через a2enmod.

С мультисайтингом можно по-разному решать, я предпочитаю вариант с отдельными папками на каждый виртхост, чтобы аплоады и любые дополнения к друпалу не пересекались, а скрипты друпала кладу в /opt/drupal и на виртхост проставляю линки через ln -s. Но можно и так как описано выше, особенно если скриптов кроме друпала на сайтах не ставится. Этот вариант проще, не нужно проставлять никаких ссылок.

И если верно помню, то если сразу сказать apt-get install phpmyadmin, то по зависимостям автоматически установятся и php, и apache. Но это уже совсем мелочи )

Аватар пользователя solomenikm solomenikm 12 июня 2009 в 22:01

v1adimir wrote:
ошибка в строке
[quot]Ставим php-apc: apt-get install apt-get[/quot]

и вроде же рекомендуют aptitude пользовать вместо apt-get


Спасибо! Поправил. Должно было быть apt-get install php-apc
Почему рекомендуют aptitude? Не разу не встречал таких рекомендаций.

Аватар пользователя v1adimir v1adimir 13 июня 2009 в 8:18

solomenikm wrote:
...Почему рекомендуют aptitude? Не разу не встречал таких рекомендаций.

Может насчет рекомендуют, я сильно выразился. Понятно, что принципиально они не отличаются, но все чаще встречаю отсылки именно на aptitude.

На вскидку несколько причин:

  1. Aptitude is said to deal with dependencies better than apt-get
  2. One nice feature in aptitude: it keeps a log of its actions in /var/log/aptitude . Apt-get doesn't keep any log...
  3. Больше функционала собранно в одной программе

несколько ссылок по теме:
http://pthree.org/2007/08/12/aptitude-vs-apt-get/
http://ubuntuforums.org/showthread.php?t=379804
http://www.linuxquestions.org/questions/debian-26/apt-get-vs.-aptitude-3...

Аватар пользователя axel axel 13 июня 2009 в 16:45

v1adimir wrote:
solomenikm wrote:
...Почему рекомендуют aptitude? Не разу не встречал таких рекомендаций.

Поддержу насчёт aptitude, у меня такие же сведения из дебиановских рассылок. Собственно сам использую на серверах с дебианом aptitude, хотя установка через apt-get не будет ошибкой.

Аватар пользователя mensh@drupal.org mensh@drupal.org 13 июня 2009 в 18:58

Насколько я знаю, в описании к пакету aptitude сказано, что aptitude есть текстовой фронтэнд к apt.
Ну, а если для обработки пакетов используется всё тот же apt, то зачем же "огород городить"?
aptitude даёт конечно возможность разрешения мягких зависимостей, но это дело вкуса.

Аватар пользователя solomenikm solomenikm 14 июня 2009 в 15:34

ОК. Предположим что aptitude это круто и на оф. сайте как комманду для обновления ОС сервера sudo apt-get install update-manager-core зря написали. Теперь вопрос: если я пакеты до этих пор ставил через apt-get то переход на aptitude мне ничего не испортит?

Аватар пользователя mnv@drupal.org mnv@drupal.org 9 мая 2010 в 9:42

Спасибо за статью, кое-что прояснил для себя.
Подскажите, если у меня несколько сайтов, то куда их все прописать на VPS?
В /etc/hosts?
По умолчанию у меня там вот что:

127.0.0.1 localhost.localdomain localhost
# Auto generated hostname. Please do not remove this comment.
мой.ip.адрес цифра.мой.технический.адрес.ru цифра

Или может быть не стоит трогать этот файл совсем, раз тут есть задумка автогенерации этого файла? Но тогда когда и кто должен сгенерировать его? У меня VPS от Хостинг Центра.

Аватар пользователя solomenikm solomenikm 9 мая 2010 в 18:59

<a href="mailto:mnv@drupal.org">mnv@drupal.org</a> wrote:
Спасибо за статью, кое-что прояснил для себя.
Подскажите, если у меня несколько сайтов, то куда их все прописать на VPS?
В /etc/hosts?
По умолчанию у меня там вот что:

127.0.0.1 localhost.localdomain localhost
# Auto generated hostname. Please do not remove this comment.
мой.ip.адрес цифра.мой.технический.адрес.ru цифра

Или может быть не стоит трогать этот файл совсем, раз тут есть задумка автогенерации этого файла? Но тогда когда и кто должен сгенерировать его? У меня VPS от Хостинг Центра.


Не стоит. Сайты прописывать нужно в настройках web-сервера (apache) etc/apache2/sites-enable/файл_конфигурации_для_сайта

Аватар пользователя mnv@drupal.org mnv@drupal.org 10 мая 2010 в 22:12

"solomenikm" wrote:
Не стоит. Сайты прописывать нужно в настройках web-сервера (apache) etc/apache2/sites-enable/файл_конфигурации_для_сайта

Спасибо! Так и сделал, работает

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 11 мая 2010 в 16:37

Вместо "utf8" лучше использовать cp1251, если кончно не требуется мультиязыковая поддержка огромного множества языков, а для русского с английским вполне будет ее достаточно. а вот выигрыш в производительности поиска по полю будет колоссальным!