Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. ## Подготовка сервера разработки
  2.  
  3. 1. Создаем общий каталог для проекта. Там будет располагаться каталог веб-сервера (или несколько, если одновременно будут существовать несколько копий), находиться служебные скрипты и пр.
  4. Например, `/sites/mysite` (здесь и далее обозначен как `@`).
  5.  
  6. ## Организация доступа к production-серверу (если есть)
  7.  
  8. 1. Если рабочая площадка уже есть - получаем доступ по SSH, логинимся.
  9.  
  10. 1. Проверяем, есть ли на сервере `git` (если нет - выясняем, можно ли его установить).
  11.  
  12. ## Настраиваем удобство доступа
  13.  
  14. 1. Добавляем публичные ключи с помощью `echo "..." >> ~/.ssh/authorized_keys`:
  15. * с локального компьютера (открываем `key.ppk` для putty, копируем публичный ключ)
  16. * ключ с сервера разработки
  17. * логинимся на него
  18. * делаем `cat ~/.ssh/id_rsa.pub`;
  19. если такого файла нет:
  20. * запускаем `ssh-keygen`
  21. * два раза нажимаем `Enter`
  22. * при желании, редактируем комментарий (последовательность символов до последнего пробела)
  23. * повторяем `cat`
  24. * копируем публичный ключ и записываем его на целевой сервер
  25. ***ВНИМАНИЕ!*** при использовании `putty` между командой `cat` и копированием ключа в буфер **окно не ресайзить**! Иначе в строке появятся разрывы, которые потом попадут в буфер и ключ будет скопирован неправильно.
  26.  
  27. 1. Создаем каталог `@/scripts/`, в нём - файл `_config.sh`, куда заносим данные production-сервера:
  28.  
  29. ```
  30. prod_user="имя_пользователя на production"
  31. prod_host="хост или ip-адрес"
  32. prod_mysql_user="..."
  33. prod_mysql_password="..."
  34. prod_mysql_database="..."
  35. ```
  36.  
  37. ## Копирование движка
  38.  
  39. 1. На production-сервере инициализируем **в каталоге веб-сервера** репозиторий `git`.
  40. Просматриваем содержимое каталогов (лучше с помощью `WinSCP`) и аккуратно вручную их добавляем.
  41. Полезно сразу определить, какие из каталогов занимают больше всех места - возможно, их содержимое не нужно добавлять в репозиторий (например, изображения товаров или кэш CMS). Для этого служит команда `du -B 1 -h -d 1` (`-d 1` - показывать только первый уровень вложенности).
  42.  
  43. 1. На сервере разработки создаем каталог веб-сервера для dev-версии (например, `/sites/mysite/dev`) и выполняем там `git clone ssh://username@domain/~/.../.git .`).
  44.  
  45. ## База данных
  46.  
  47. 1. На dev-сервере подключаемся к MySQL под рутом, создаем БД и пользователя под проект.
  48. С версии 5.7 для этого не нужно значить пароль рута в MySQL, достаточно подключиться от имени рута ОС через `sudo` или `su` (пароль для 1234ru.net см. в письме от paulmd 24 мая 2017 г.):
  49. * `su` - вводим пароль
  50. * `mysql` - подключаемся, проверяем командой `SHOW GRANTS;` - всё должно быть для `root`
  51. * `CREATE DATABASE (mysite)_dev CHARACTER SET UTF8;`
  52. * `GRANT ALL ON (mysite)_dev.* TO (mysite) IDENTIFIED BY '(придумать пароль)';`
  53. * выходим из mysql и из su, пробуем авторизоваться под вновь созданным пользователем в консоли `mysql`, делаем `SHOW GRANTS;`
  54.  
  55. 2. Получаем данные для доступа к базе данных на production - имя пользователя, пароль и название БД (также посмотреть хост, хотя он обычно localhost). Их заносим в `@/scripts/_config.sh`.
  56.  
  57. 3. Создаем скрипт `@/scripts/db-refresh.sh` для копирования базы данных с prod на dev:
  58. ```
  59. dir="$(dirname "$0")"
  60. . $dir/_config.sh # обязательно с $dir, иначе пишет not found
  61. ssh $prod_user@$prod_host "mysqldump -u $prod_mysql_user -p$prod_mysql_password $prod_mysql_db" | \
  62. mysql -u $dev_mysql_user -p$dev_mysql_password $dev_mysql_db
  63. ```
  64. Запускаем его каждый раз, когда нужно обновить содержимое базы данных.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement