Мой опыт утсановки drupal на «голый» VPS сервер (ubuntu server). Связка apache+php+mysql. С примером настройки хостов для мультисайтинга и базовой оптимизацией.
Купил я себе виртуальный сервер на fastvps.ru (маленькая реклама с рефайлерской ссылкой ) Заказал там поный комплект с предустановленым ПО и ISPmanager-pro. (Виртульный сервер 300Mhz/100MB/Ubuntu) Оказалось что это было зло. Не мог даже по ssh подключиться с первой попытки из-за перегруженности сервера. Кое-как он все-таки работал, но ISP пишет конфиги какие хочет и куда ему вздумается. Короче после попыток оптимизаци я его положил. Решил переустановить сервер и настроить все ручками. Вот как я это делал:
*127.127.1.1 - ip сервера
По умолчанию мой хостер устанавливает ОС с apache и прописаным в нем дефолтным сайтом mydefsite.com, чуть что это в etc/hosts
# 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-collation="utf8_general_ci"
character-set-server="utf8"
Перезапускаем сервер: service apache2 restart
Перезапускаем мускул: service mysql restart
Проверяем работу в браузере: http://127.127.1.1/
It works!
Ставим еще пакеты: apt-get install libapache2-mod-auth-mysql php5-mysql
Ставим PhpMyAdmin: sudo apt-get install phpmyadmin
Перезапускаем сервер: service apache2 restart
Открываем /etc/apache2/httpd.conf
И прописываем в нем
<Directory "/usr/share/phpmyadmin/">
Order Deny,Allow
Allow from all
</Directory>
Проверяем: http://127.127.1.1/myadmin/
Идем в /etc/apache2/sites-available/ и создаем там файл с именем нашего сайта mydefsite.com куда вписываем следующее:
ServerName mydefsite.com
DocumentRoot /var/www/mydefsite.com
ServerAlias mydefsite.com
</VirtualHost>
Его же копируем в /etc/apache2/sites-enabled
По аналогии для других сайтов.
* /var/www/mydefsite.com - директория где лежат скрипты сайта
Для пользователей Друпал мултисайтинга остальные файлы кофигурации сайтов будут выглядеть так:
ServerName mysecondsite.com
DocumentRoot /var/www/mydefsite.com
ServerAlias mysecondsite.com
</VirtualHost>
Обратите внимание, что директория та же что и в предыдущем Это чудо мультисайтинга будет.
В теории все готово к использованию. Пердположим что друпал мы поставили и он работает.
Ну что, бенчмарк?
*использовал ab - стандартный модуль apache для этого
Идем в /etc/mysql.my.cnf и раскоментируем строку skip-innodb.
Перезапускаем мускул: service mysql restart
Ставим php-apc: apt-get install php-apc
Перезапускаем apache: service apache2 restart И о чудо!
Все. Комментарии будут очень кстати, с вашего позволения буду править пост в соответсвии с ними.
Комментарии
Стесняюсь спросить: "А зачем Вы всё это написали?"
Первая причина - памятка.
Вторая - хочу знать на сколько я грамотно это сделал.
Третья - чтобы вместо того чтобы отвечать на вопросы я мог скидывать ссылку.
2 mensh@drupal.org
я вот например с vps никогда дела не имел, а рано или поздно понадобиться, а прочитав я уже знаю хоть что-то)
Я думаю, лучше не трогать /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. Но это уже совсем мелочи )
ошибка в строке
[quot]Ставим php-apc: apt-get install apt-get[/quot]
и вроде же рекомендуют aptitude пользовать вместо apt-get
Спасибо! Поправил. Должно было быть apt-get install php-apc
Почему рекомендуют aptitude? Не разу не встречал таких рекомендаций.
Может насчет рекомендуют, я сильно выразился. Понятно, что принципиально они не отличаются, но все чаще встречаю отсылки именно на aptitude.
На вскидку несколько причин:
несколько ссылок по теме:
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...
2 XmasterX
Писали не раз. Например:
http://www.drupal.ru/node/24131
От чтения толку мало. Вы вероятно в Win работаете?
Ставьте *nix и практикуйте.
Насколько я знаю, в описании к пакету aptitude сказано, что aptitude есть текстовой фронтэнд к apt.
Ну, а если для обработки пакетов используется всё тот же apt, то зачем же "огород городить"?
aptitude даёт конечно возможность разрешения мягких зависимостей, но это дело вкуса.
ОК. Предположим что aptitude это круто и на оф. сайте как комманду для обновления ОС сервера sudo apt-get install update-manager-core зря написали. Теперь вопрос: если я пакеты до этих пор ставил через apt-get то переход на aptitude мне ничего не испортит?
ничего.
Спасибо за статью, кое-что прояснил для себя.
Подскажите, если у меня несколько сайтов, то куда их все прописать на VPS?
В /etc/hosts?
По умолчанию у меня там вот что:
# Auto generated hostname. Please do not remove this comment.
мой.ip.адрес цифра.мой.технический.адрес.ru цифра
Или может быть не стоит трогать этот файл совсем, раз тут есть задумка автогенерации этого файла? Но тогда когда и кто должен сгенерировать его? У меня VPS от Хостинг Центра.
Не стоит. Сайты прописывать нужно в настройках web-сервера (apache) etc/apache2/sites-enable/файл_конфигурации_для_сайта
Спасибо! Так и сделал, работает
Вместо "utf8" лучше использовать cp1251, если кончно не требуется мультиязыковая поддержка огромного множества языков, а для русского с английским вполне будет ее достаточно. а вот выигрыш в производительности поиска по полю будет колоссальным!