Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Подготовка сервера разработки
- 1. Создаем общий каталог для проекта. Там будет располагаться каталог веб-сервера (или несколько, если одновременно будут существовать несколько копий), находиться служебные скрипты и пр.
- Например, `/sites/mysite` (здесь и далее обозначен как `@`).
- ## Организация доступа к production-серверу (если есть)
- 1. Если рабочая площадка уже есть - получаем доступ по SSH, логинимся.
- 1. Проверяем, есть ли на сервере `git` (если нет - выясняем, можно ли его установить).
- ## Настраиваем удобство доступа
- 1. Добавляем публичные ключи с помощью `echo "..." >> ~/.ssh/authorized_keys`:
- * с локального компьютера (открываем `key.ppk` для putty, копируем публичный ключ)
- * ключ с сервера разработки
- * логинимся на него
- * делаем `cat ~/.ssh/id_rsa.pub`;
- если такого файла нет:
- * запускаем `ssh-keygen`
- * два раза нажимаем `Enter`
- * при желании, редактируем комментарий (последовательность символов до последнего пробела)
- * повторяем `cat`
- * копируем публичный ключ и записываем его на целевой сервер
- ***ВНИМАНИЕ!*** при использовании `putty` между командой `cat` и копированием ключа в буфер **окно не ресайзить**! Иначе в строке появятся разрывы, которые потом попадут в буфер и ключ будет скопирован неправильно.
- 1. Создаем каталог `@/scripts/`, в нём - файл `_config.sh`, куда заносим данные production-сервера:
- ```
- prod_user="имя_пользователя на production"
- prod_host="хост или ip-адрес"
- prod_mysql_user="..."
- prod_mysql_password="..."
- prod_mysql_database="..."
- ```
- ## Копирование движка
- 1. На production-сервере инициализируем **в каталоге веб-сервера** репозиторий `git`.
- Просматриваем содержимое каталогов (лучше с помощью `WinSCP`) и аккуратно вручную их добавляем.
- Полезно сразу определить, какие из каталогов занимают больше всех места - возможно, их содержимое не нужно добавлять в репозиторий (например, изображения товаров или кэш CMS). Для этого служит команда `du -B 1 -h -d 1` (`-d 1` - показывать только первый уровень вложенности).
- 1. На сервере разработки создаем каталог веб-сервера для dev-версии (например, `/sites/mysite/dev`) и выполняем там `git clone ssh://username@domain/~/.../.git .`).
- ## База данных
- 1. На dev-сервере подключаемся к MySQL под рутом, создаем БД и пользователя под проект.
- С версии 5.7 для этого не нужно значить пароль рута в MySQL, достаточно подключиться от имени рута ОС через `sudo` или `su` (пароль для 1234ru.net см. в письме от paulmd 24 мая 2017 г.):
- * `su` - вводим пароль
- * `mysql` - подключаемся, проверяем командой `SHOW GRANTS;` - всё должно быть для `root`
- * `CREATE DATABASE (mysite)_dev CHARACTER SET UTF8;`
- * `GRANT ALL ON (mysite)_dev.* TO (mysite) IDENTIFIED BY '(придумать пароль)';`
- * выходим из mysql и из su, пробуем авторизоваться под вновь созданным пользователем в консоли `mysql`, делаем `SHOW GRANTS;`
- 2. Получаем данные для доступа к базе данных на production - имя пользователя, пароль и название БД (также посмотреть хост, хотя он обычно localhost). Их заносим в `@/scripts/_config.sh`.
- 3. Создаем скрипт `@/scripts/db-refresh.sh` для копирования базы данных с prod на dev:
- ```
- dir="$(dirname "$0")"
- . $dir/_config.sh # обязательно с $dir, иначе пишет not found
- ssh $prod_user@$prod_host "mysqldump -u $prod_mysql_user -p$prod_mysql_password $prod_mysql_db" | \
- mysql -u $dev_mysql_user -p$dev_mysql_password $dev_mysql_db
- ```
- Запускаем его каждый раз, когда нужно обновить содержимое базы данных.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement