Верх упрямства - вводить неправильный пароль, пока компьютер с ним не согласится.
(народная мудрость)
Верх упрямства - вводить неправильный пароль, пока компьютер с ним не согласится.
(народная мудрость)
Занимаясь разработкой сайтов и web-сервисов мы сталкиваемся с необходимостью многократных инсталяций сайтовых движков как на локальные машины, так и на удаленные сервера.
Потребность в данном действе у всех возникает по разным причинам: кто-то нуждается во многих копиях для проведения тестов, у кого очень много одновременных заказов на клиентские сайты, кто-то просто любит пощупать все новое.
Не суть важно "зачем", в этом посте отвечу на вопрос "Как сделать это быстро". Говорить, естественно, будем о Drupal (хотя лично я пользуюсь его оптимизированной версией по имени Pressflow).
Насколько мне известно, Drupal фактически единственная система, с которой идет столь мощная утилита управления сайтом из коммандной строки, как drush.
Главный плюс такого подхода к администрированию и управлению сайтами - это возможность групповых операций и автоматизации процесса. Вот ей-то самой автоматизацией на новогодних праздниках я и решил заняться, когда закончились мандарины.
Сразу оговорюсь, что ниже приведенный скрипт актуален только для Unix-подобных систем (читаем де-факто Linux). Со всякими виндавсами и денверами я извращаться не привык.
Итак даем вводную: у нас имеется *nix-сервер с установленными и настроенными Apache и MySQL серверами, drush и wget, а также root-доступ (да-да, не надо кидать в меня помидорами, скрипт работает из под рута, так как мой скрипт делался для локальной домашней машины, если кто его доработает с запуском от имени пользователя, будем рады).
Работать будет и на виртуальном хостинге, но он должен иметь доступ по SSH и поддерживать установку drush. Найти такой хостинг можно, например через этот рейтинг https://hostinghub.ru
Далее, что будем иметь на выходе: полностью сконфигурированный виртуальный хост, созданную базу данных, и отдельного пользователя на нее, установленный самый свежий друпал, закачанные и установленные модули, полную руссификацию, правильно выставленные права на все каталоги, закачанные и установленные необходимые библиотеки.
Что нужно делать и что менять. Тут все просто:
Само собой все эти параметры можно поменять или добавить индивидуальные. Кроме того, в скрипте присутствует список модулей, который вы, естественно можете поменять на свой. Пути в скрипте свормированы для Ubuntu 12.10, для других дистрибутивов их нужно скорректировать будет. Ну а ниже собственно сам скрипт:
#!/bin/sh
# vars
echo "Введите имя сайта:"
read sitepatch # = '/var/www/'
echo "Введите имя пользователя:"
read user # = 'user'
echo "Введите пароль для сайта:"
read password # = 'qwerty'
echo "Введите пароль root:"
read PSWD_SQL # root pass
# install mysql db
# Создаем базу данных имя которой мы ввели
mysql -uroot -p${PSWD_SQL} --execute="create database ${user};"
echo "База данных создана"
# Создаем нового пользователя
mysql -uroot -p${PSWD_SQL} --execute="GRANT ALL PRIVILEGES ON ${user}.* TO ${user}@localhost IDENTIFIED by '${password}' WITH GRANT OPTION;"
echo "Пользователь базы данных создан"
# create sitedir
mkdir /var/www/$sitepatch
chown -R www-data:www-data /var/www/$sitepatch/
chmod -R 777 /var/www/$sitepatch/
echo "Каталог сайта создан"
# apache conf
add_to_apache_conf="
ServerAdmin webmaster@localhost
DocumentRoot /var/www/$sitepatch
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/www/$sitepatch/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/www/$sitepatch/access.log combined
"
add_to_hosts_conf="127.0.0.1 ${sitepatch}"
echo "$add_to_hosts_conf" >> /etc/hosts
touch /etc/apache2/sites-available/${sitepatch}
echo "$add_to_apache_conf" >> /etc/apache2/sites-available/${sitepatch}
ln -s /etc/apache2/sites-available/${sitepatch} /etc/apache2/sites-enabled/${sitepatch}
echo "Кофигурация apache создана"
/etc/init.d/apache2 reload
echo "Сервер перезагружен"
# install site
cd /var/www/$sitepatch
drush dl
mv drupal*/* . && mv drupal*/.htaccess .
rm -r drupal*
mkdir /var/www/$sitepatch/sites/all/libraries
chmod -R 777 /var/www/$sitepatch/
drush --root=/var/www/$sitepatch -y site-install standard --db-url=mysql://$user:$password@localhost/$user –account-name=$user --account-pass=$password
chown -R www-data:www-data /var/www/$sitepatch/
chmod -R 755 /var/www/$sitepatch/
chmod 755 /var/www/$sitepatch/sites/default/
chmod 755 /var/www/$sitepatch/sites/default/settings.php
chmod 777 -R /var/www/$sitepatch/sites/default/files/
echo "Сайт создан"
# install modules
modules='ctools drush_language l10n_update image_resize_filter imce colorbox ckeditor metatag pathauto token transliteration views xmlsitemap yandex_metrics zen admin_menu admin_menu_toolbar '
drush --root=/var/www/$sitepatch -y dl ${modules}
echo "Модули загружены"
# enable modules
drush --root=/var/www/$sitepatch -y en ${modules}
echo "Модули установлены"
drush -y dis toolbar
# russian
drush language-add ru
drush language-enable ru
drush language-default ru
drush l10n-update-refresh
drush l10n-update
# libraries
wget jacklmoore.com/colorbox/colorbox.zip
wget download.cksource.com/CKEditor/CKEditor/CKEditor%204.0.1/ckeditor_4.0.1_standard.tar.gz
unzip colorbox.zip -d /var/www/$sitepatch/sites/all/libraries
tar xvfz ckeditor_4.0.1_standard.tar.gz -C /var/www/$sitepatch/sites/all/libraries
chmod -R 755 /var/www/$sitepatch/sites/all/libraries/
rm /var/www/$sitepatch/colorbox*
rm /var/www/$sitepatch/ckeditor*
# last config
chmod 777 -R /var/www/$sitepatch/sites/default/files
drush -y cc
Вот такая вот новогодняя оптимизация труда была :)
С удовольствием приму критику и оптимизацию кода.