-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.txt
195 lines (171 loc) · 14.5 KB
/
test.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# Docker
🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘
🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘 🐘
Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն
Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն Ողջույն
____
После загрузки из репозитория запустить команду `>start_copy.bat` для windows или ` >./start_copy.sh ` для linux
В результате скопируются требуемые конфигурационные файлы
При необходимости их следует настроить:
- **.env** (~Пример `.env.example`)
- **.gitignore** (~Пример `.gitignore.example`)
- **docker-compose.yml** (~Пример `docker-compose.yml.bak`)
Далее требуется установить сертификаты для работы по протоколу https://
Для этого запускается ` >run.bat ` для windows или ` >./run.sh ` для linux
### Набор контейнеров для работы
| Обозначение | Путь к dockerfile | Описание |
|----|:----:|:----|
| `>app`| ./fpm |исполнение скриптов |
| `>workspace` | ./workspace | контейнер для выполнения служебных функций (composer, npm и т.д) |
| `>webserver`| ./nginx | webserver проекта |
| `>mysql-master`| Из репозитория | мастер база данных Mysql |
| `>mysql-slave`| Из репозитория | slave база данных Mysql |
| `>postgres`| Из репозитория | база данных Postgres |
| `>redis`| ./redis | база данных Redis |
| `>elasticsearch`| Из репозитория | база данных Elasticsearch |
| `>memcached`| ./memcached | контейнер, где крутиться memcached |
### Назначение папок
- [code](./code) (Место расположения исполняемого кода)
- [application.loc](./code/application.loc) - код для сайта `application.loc`.
Это единственная папка, находящаяся в каталоге ./code, в которой изменения отслеживаются гитом (MyDock)
- [otus.loc](./code/otus.loc) - код для сайта `otus.loc`
(Для работы сайта otus.loc необходимо создать каталог `/otus.loc` в папке
на которую указывает параметр `CODE` из файла настроек `.env`. Начальная настройка на папку `./code`.
Папка `./code/otus.loc`не отслеживается гитом (MyDock), поэтому можно использовать код из другого репозитория)
- [valyakin.loc](./code/valyakin.loc) - код для сайта `valyakin.loc`
(Для работы сайта valyakin.loc необходимо создать каталог `/valyakin.loc` в папке
на которую указывает параметр `CODE` из файла настроек `.env`. Начальная настройка на папку `./code`.
Папка `./code/valyakin.loc`не отслеживается гитом (MyDock), поэтому можно использовать код из другого репозитория)
- [fpm](./fpm) - папка с данными для создания контейнера `app`
- [memcached](./memcached) - папка с данными для создания контейнера `memcached`
- [mysql](./mysql) - папка с данными для создания контейнеров `mysql-master` и `mysql-slave`
- [nginx](./nginx) - папка с данными для создания контейнера `webserver`
- [hosts](./nginx/hosts) - место, где находятся конфигурационные файлы для сайтов
- [redis](./redis) - папка с данными для создания контейнера `redis`
- [workspace](./workspace) - папка с данными для создания контейнера `workspace`
- [scripts](workspace/scripts) - папка со скриптами
- [certificate](workspace/scripts/certificate) - скрипты для создания сертификата сайта
- `./create_root_ca.sh` - создает корневой сертификат с приватным для него ключем
- `./create_certicicate_for_domain.sh mysite.loca` - создает сертификат для сайта с приватным ключем для всех сайтов (если еще не было)
- [_logs](./_logs) (Логи) Настраивается параматром `LOGS=./_logs` в файле .env
- [memprof](_logs/memprof) - путь сохранения в проекте для данных из memprof берется из `$_SERVER['MEMPROF_LOG_PATH']`
```
Используется в коде например так:
$memprofPath = $_SERVER['MEMPROF_LOG_PATH'];
memprof_dump_callgrind(fopen($memprofPath."memprof_logs.out", "w"));
```
- [mysql](_logs/mysql) - расположение логов Mysql (/master, /slave)
- [nginx](_logs/nginx) - расположение логов Nginx
- [php_errors](_logs/php_errors) - расположение логов ошибок PHP
- [redis](_logs/redis) - расположение логов redis
- [xdebug](_logs/x-debug) - расопложение логов x-debug
- [ZoneForSTORAGE](./ZoneForSTORAGE) (Хранение данных) Настраивается параматром STORAGE=./ZoneForSTORAGE в файле .env
- certificates - место хранения сертификатов для сайтов + корневой сертификат
- docker
- elasticsearch
- data
- nodes
- 0 - `нулевая нода у эластики`
- mysql1 - `Место хранения данных Mysql-master`
- mysql2 - `Место хранения данных Mysql-slave`
- postgres - `Место хранения данных Postgres`
- redis - `Место хранения данных redis`
- sock - `Место хранения unix-socket`
Для того чтобы базы данных подключились необходимо либо до Установки контейнеров, либо при выключенном контейнере добавить данные в нужную папку.
Этот способ не рекомендуется. Лучше воспользоваться средствами восстановления из бекапа!!!
Если не будет в наличии папок `elasticsearch`, `mysql1`, `mysql2`, `postgres`, `sock` - то при первом запуске контейнеров
они будут созданы. И в них появятся базы данных с настройками из файла .env
В контейнере Workplace /srv/scripts/certificate для создания ssl сертификата для сайта есть 2 скрипта
- create_root_ca.sh - создает корневой сертификат
- create_certifivate_for_domain.sh - создает сертификат для сайта, который используется в качестве параметра при запуске скрипта
`/srv/scripts/start.sh` - запускает их поочереди.
### Структура .env
>#### environment ################
|Параметр|Назначение|
|----|----|
|TIMEZONE=Europe/Moscow| Зона времени, устанавливаемая на все контейнеры |
>#### sites ######################
|Параметр|Назначение|
|----|----|
|SITES_ENABLED_PATH=./nginx/hosts| Место на хосте, где находятся конфигурационные файлы для папки sites-enabled Веб-сервера. |
Достаточно положить в эту папку новый, настроенный файл типа `newsite.loc.conf`,
в ./code создать новую директорию с кодом,
установить в файле `hosts` связь доменного имени с localhost,
перезагрузить веб-сервер и готово. Можно пользоваться новым доменным именем `http://newsite.loc`
>#### IDE ########################
|Параметр|Назначение|
|----|----|
|PHP_IDE_CONFIG=serverName=Docker| Имя сервера в IDE, для режима пошаговой отладки x-debug, должно совпадать со значением в serverName |
>#### PATH ########################
|Параметр|Назначение|
|----|----|
|LOGS=./_logs| Корневая папка для хранения логов. Ее изменение переместит отображение всех логов в другое место |
|STORAGE=./ZoneForSTORAGE| Корневая папка для хранения данных контейнеров. Таких как базы данных и юникс сокета |
|CERTIFICATES=${STORAGE}/certificates| Местоположение ключей и сертификатов для сайтов |
|ADDITIONAL_CODE_PATH_HOST=c:/MyWork/School/Otus/HomeWork| Отдельная папка с кодом для сайта, код которого не располагается в стандартной папке проектов /code |
|ADDITIONAL_SITE_NAME=homework.otus| Имя сайта, которое будет использовано для ADDITIONAL_CODE_PATH_HOST. Так же его нужно настроить в хостах nginx |
|WORKSPACE_SCRIPTS_PATH_HOST=./workspace/scripts| Папка со скриптами на хосте |
|WORKSPACE_SCRIPTS_PATH_DOCKER=/srv/scripts| Папка со скриптами в контейнере |
>#### code #######################
|Параметр|Назначение|
|----|----|
|PHP_VERSION=8.0| версия PHP |
|APP_CODE_PATH_HOST=./code| Местоположение корневой папки с кодом проектов на хосте |
|APP_CODE_PATH_DOCKER=/var/www/html| Местоположение корневой папки с кодом проектов в контейнерах |
|PHP_ERROR_LOG_PATH=${LOGS}/php_errors/| Место складывания логов ошибок PHP |
>#### nginx ######################
|Параметр|Назначение|
|----|----|
|NGINX_LOG_PATH=${LOGS}/nginx| Место складывания логов webserver-а |
|NGINX_SSL_PATH_DOCKER=/etc/nginx/ssl| Папка с ключами и сертификатами в контейнере |
>#### x-debug
|Параметр|Назначение|
|----|----|
|X_DEBUG=1|при true или 1 включается x-debug|
|X_DEBUG_ERROR_LOG_PATH=${LOGS}/x-debug/| Место складывания логов x-Debug |
>#### memprof
|Параметр|Назначение|
|----|----|
|MEMPROF_PROFILE_ENABLE=1| только значение null отключает Memprof |
|MEMPROF_LOG_PATH_HOST=${LOGS}/memprof| путь для лога memprof на хосте |
|MEMPROF_LOG_PATH_DOCKER=/var/log/memprof/| путь для лога memprof в контейнере |
>#### unix socket
|Параметр|Назначение|
|----|----|
|UNIX_SOCKET_PATH_HOST=${STORAGE}/docker/sock| путь для файла сокета на хосте |
|UNIX_SOCKET_PATH_DOCKER=/sock| путь для файла сокета в контейнере |
>#### mysql-Master
|Параметр|Назначение|
|----|----|
|MYSQL_MASTER_DB=laravel| имя базы данных mysql-master |
|MYSQL_MASTER_ROOT_PASSWORD=password| пароль |
|MYSQL_MASTER_STORAGE_PLACE=${STORAGE}/docker/mysql1| путь к каталогу хранения данных |
|MYSQL_MASTER_LOG_PATH_HOST=${LOGS}/mysql/master| Место где можно смотреть логи на хосте |
|MYSQL_MASTER_LOG_PATH_DOCKER=/var/log/mysql/| Место хранения MySql логов в контейнере |
|MYSQL_SLAVE_CONFIG_PATH_HOST=./mysql/conf| Место хранения файла настроек MySql |
>#### mysql-Slave
|Параметр|Назначение|
|----|----|
|MYSQL_SLAVE_DB=laravel| имя базы данных mysql-slave |
|MYSQL_SLAVE_ROOT_PASSWORD=password| пароль |
|MYSQL_SLAVE_STORAGE_PLACE=${STORAGE}/docker/mysql2| путь к каталогу хранения данных |
|MYSQL_SLAVE_LOG_PATH_HOST=${LOGS}/mysql/master| Место где можно смотреть логи на хосте |
|MYSQL_SLAVE_LOG_PATH_DOCKER=/var/log/mysql/| Место хранения MySql логов в контейнере |
|MYSQL_SLAVE_CONFIG_PATH_HOST=./mysql/conf| Место хранения файла настроек MySql |
>#### postgres
|Параметр|Назначение|
|----|----|
|PGSQL_DB_NAME=postgres| имя базы данных Postgres - задается при создании контейнера, если базы нет |
|PGSQL_DB_USER=postgres| имя пользователя - задается при создании контейнера, если базы нет |
|PGSQL_DB_PASSWORD=password| пароль - задается при создании контейнера, если базы нет |
|PGSQL_STORAGE_PLACE=${STORAGE}/docker/postgres/data| путь к каталогу хранения данных |
>#### Redis
|Параметр|Назначение|
|----|----|
|REDIS_CONF=./redis/conf/redis/etc|местоположение конфигурационного файла redis|
|REDIS_DATA=${STORAGE}/docker/redis/data| путь к каталогу хранения данных |
|REDIS_LOG=${LOGS}/docker/redis/| путь к каталогу логов |
>#### Elasticsearch
|Параметр|Назначение|
|----|----|
|ELASTICSEARCH_DATA=${STORAGE}/docker/elasticsearch/data| путь к каталогу хранения данных |