Skip to content

Commit be2e471

Browse files
eerzhozhanbolat
andauthored
docs: translate to RU (#1325)
* README.md * worker.md * early-hints.md * config.md * docker.md * production.md * fix * mercure.md * performance.md * embed.md * compile.md * static.md * laravel.md * known-issues.md * fix links * github-actions.md * metrics.md * CONTRIBUTING.md * fix * fix * fix * main review fix --------- Co-authored-by: zhanbolat <z.yerkinbay@slotegrator.space>
1 parent 941f218 commit be2e471

16 files changed

Lines changed: 1861 additions & 0 deletions

docs/ru/CONTRIBUTING.md

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
# Участие в проекте
2+
3+
## Компиляция PHP
4+
5+
### С помощью Docker (Linux)
6+
7+
Создайте образ Docker для разработки:
8+
9+
```console
10+
docker build -t frankenphp-dev -f dev.Dockerfile .
11+
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8080:8080 -p 443:443 -p 443:443/udp -v $PWD:/go/src/app -it frankenphp-dev
12+
```
13+
14+
Образ содержит стандартные инструменты для разработки (Go, GDB, Valgrind, Neovim и др.).
15+
16+
Если версия Docker ниже 23.0, сборка может завершиться ошибкой из-за [проблемы с шаблонами dockerignore](https://github.com/moby/moby/pull/42676). Добавьте в `.dockerignore` следующие директории:
17+
18+
```patch
19+
!testdata/*.php
20+
!testdata/*.txt
21+
+!caddy
22+
+!internal
23+
```
24+
25+
### Без Docker (Linux и macOS)
26+
27+
[Следуйте инструкциям по компиляции из исходников](https://frankenphp.dev/docs/compile/) и укажите флаг конфигурации `--debug`.
28+
29+
## Запуск тестов
30+
31+
```console
32+
go test -tags watcher -race -v ./...
33+
```
34+
35+
## Модуль Caddy
36+
37+
Соберите Caddy с модулем FrankenPHP:
38+
39+
```console
40+
cd caddy/frankenphp/
41+
go build -tags watcher,brotli,nobadger,nomysql,nopgx
42+
cd ../../
43+
```
44+
45+
Запустите Caddy с модулем FrankenPHP:
46+
47+
```console
48+
cd testdata/
49+
../caddy/frankenphp/frankenphp run
50+
```
51+
52+
Сервер будет доступен по адресу `127.0.0.1:8080`:
53+
54+
```console
55+
curl -vk https://localhost/phpinfo.php
56+
```
57+
58+
## Минимальный тестовый сервер
59+
60+
Соберите минимальный тестовый сервер:
61+
62+
```console
63+
cd internal/testserver/
64+
go build
65+
cd ../../
66+
```
67+
68+
Запустите тестовый сервер:
69+
70+
```console
71+
cd testdata/
72+
../internal/testserver/testserver
73+
```
74+
75+
Сервер будет доступен по адресу `127.0.0.1:8080`:
76+
77+
```console
78+
curl -v http://127.0.0.1:8080/phpinfo.php
79+
```
80+
81+
## Локальная сборка Docker-образов
82+
83+
Выведите план bake:
84+
85+
```console
86+
docker buildx bake -f docker-bake.hcl --print
87+
```
88+
89+
Соберите образы FrankenPHP для amd64 локально:
90+
91+
```console
92+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/amd64"
93+
```
94+
95+
Соберите образы FrankenPHP для arm64 локально:
96+
97+
```console
98+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/arm64"
99+
```
100+
101+
Соберите образы FrankenPHP с нуля для arm64 и amd64 и отправьте их в Docker Hub:
102+
103+
```console
104+
docker buildx bake -f docker-bake.hcl --pull --no-cache --push
105+
```
106+
107+
## Отладка ошибок сегментации с использованием статических сборок
108+
109+
1. Скачайте отладочную версию бинарного файла FrankenPHP с GitHub или создайте собственную статическую сборку с включённым отладочным режимом:
110+
111+
```console
112+
docker buildx bake \
113+
--load \
114+
--set static-builder.args.DEBUG_SYMBOLS=1 \
115+
--set "static-builder.platform=linux/amd64" \
116+
static-builder
117+
docker cp $(docker create --name static-builder dunglas/frankenphp:static-builder):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp
118+
```
119+
120+
2. Замените текущую версию `frankenphp` на бинарный файл с включенным отладочным режимом.
121+
3. Запустите FrankenPHP как обычно (или сразу запустите FrankenPHP с GDB: `gdb --args frankenphp run`).
122+
4. Подключитесь к процессу через GDB:
123+
124+
```console
125+
gdb -p `pidof frankenphp`
126+
```
127+
128+
5. При необходимости введите `continue` в консоли GDB.
129+
6. Вызовите сбой FrankenPHP.
130+
7. Введите `bt` в консоли GDB.
131+
8. Скопируйте вывод.
132+
133+
## Отладка ошибок сегментации в GitHub Actions
134+
135+
1. Откройте файл `.github/workflows/tests.yml`.
136+
2. Включите режим отладки PHP:
137+
138+
```patch
139+
- uses: shivammathur/setup-php@v2
140+
# ...
141+
env:
142+
phpts: ts
143+
+ debug: true
144+
```
145+
146+
3. Настройте `tmate` для удалённого подключения к контейнеру:
147+
148+
```patch
149+
-
150+
name: Set CGO flags
151+
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
152+
+ -
153+
+ run: |
154+
+ sudo apt install gdb
155+
+ mkdir -p /home/runner/.config/gdb/
156+
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
157+
+ -
158+
+ uses: mxschmitt/action-tmate@v3
159+
```
160+
161+
4. Подключитесь к контейнеру.
162+
5. Откройте файл `frankenphp.go`.
163+
6. Включите `cgosymbolizer`:
164+
165+
```patch
166+
- //_ "github.com/ianlancetaylor/cgosymbolizer"
167+
+ _ "github.com/ianlancetaylor/cgosymbolizer"
168+
```
169+
170+
7. Загрузите модуль: `go get`.
171+
8. В контейнере используйте GDB и другие инструменты:
172+
173+
```console
174+
go test -tags watcher -c -ldflags=-w
175+
gdb --args frankenphp.test -test.run ^MyTest$
176+
```
177+
178+
9. После исправления ошибки откатите все внесенные изменения.
179+
180+
## Дополнительные ресурсы для разработки
181+
182+
* [Встраивание PHP в uWSGI](https://github.com/unbit/uwsgi/blob/master/plugins/php/php_plugin.c)
183+
* [Встраивание PHP в NGINX Unit](https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c)
184+
* [Встраивание PHP в Go (go-php)](https://github.com/deuill/go-php)
185+
* [Встраивание PHP в Go (GoEmPHP)](https://github.com/mikespook/goemphp)
186+
* [Встраивание PHP в C++](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7)
187+
* [Книга "Extending and Embedding PHP" Сары Големан](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
188+
* [Статья: Что такое TSRMLS_CC?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html)
189+
* [SDL bindings](https://pkg.go.dev/github.com/veandco/go-sdl2@v0.4.21/sdl#Main)
190+
191+
## Docker-ресурсы
192+
193+
* [Определение файлов bake](https://docs.docker.com/build/customize/bake/file-definition/)
194+
* [Документация по команде `docker buildx build`](https://docs.docker.com/engine/reference/commandline/buildx_build/)
195+
196+
## Полезные команды
197+
198+
```console
199+
apk add strace util-linux gdb
200+
strace -e 'trace=!futex,epoll_ctl,epoll_pwait,tgkill,rt_sigreturn' -p 1
201+
```
202+
203+
## Перевод документации
204+
205+
Чтобы перевести документацию и сайт на новый язык, выполните следующие шаги:
206+
207+
1. Создайте новую директорию с 2-буквенным ISO-кодом языка в папке `docs/`.
208+
2. Скопируйте все `.md` файлы из корня папки `docs/` в новую директорию (используйте английскую версию как основу для перевода).
209+
3. Скопируйте файлы `README.md` и `CONTRIBUTING.md` из корневой директории в новую папку.
210+
4. Переведите содержимое файлов, но не изменяйте имена файлов. Не переводите строки, начинающиеся с `> [!`, это специальная разметка GitHub.
211+
5. Создайте Pull Request с переводом.
212+
6. В [репозитории сайта](https://github.com/dunglas/frankenphp-website/tree/main) скопируйте и переведите файлы в папках `content/`, `data/` и `i18n/`.
213+
7. Переведите значения в созданных YAML-файлах.
214+
8. Откройте Pull Request в репозитории сайта.

docs/ru/README.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# FrankenPHP: Современный сервер приложений для PHP
2+
3+
<h1 align="center"><a href="https://frankenphp.dev"><img src="../../frankenphp.png" alt="FrankenPHP" width="600"></a></h1>
4+
5+
**FrankenPHP** — это современный сервер приложений для PHP, построенный на базе веб-сервера [Caddy](https://caddyserver.com/).
6+
7+
FrankenPHP добавляет новые возможности вашим PHP-приложениям благодаря следующим функциям: [*Early Hints*](https://frankenphp.dev/docs/early-hints/), [Worker режим](https://frankenphp.dev/docs/worker/), [Real-time режим](https://frankenphp.dev/docs/mercure/), автоматическая поддержка HTTPS, HTTP/2 и HTTP/3.
8+
9+
FrankenPHP совместим с любыми PHP-приложениями и значительно ускоряет ваши проекты на Laravel и Symfony благодаря их официальной поддержке в worker режиме.
10+
11+
FrankenPHP также может использоваться как автономная Go-библиотека для встраивания PHP в любое приложение с использованием `net/http`.
12+
13+
[**Узнайте больше** на сайте *frankenphp.dev*](https://frankenphp.dev) или из этой презентации:
14+
15+
<a href="https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/"><img src="https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png" alt="Slides" width="600"></a>
16+
17+
## Начало работы
18+
19+
### Docker
20+
21+
```console
22+
docker run -v .:/app/public \
23+
-p 80:80 -p 443:443 -p 443:443/udp \
24+
dunglas/frankenphp
25+
```
26+
27+
Перейдите по адресу `https://localhost` и наслаждайтесь!
28+
29+
> [!TIP]
30+
>
31+
> Не используйте `https://127.0.0.1`. Используйте `https://localhost` и настройте самоподписанный сертификат.
32+
> Чтобы изменить используемый домен, настройте переменную окружения [`SERVER_NAME`](config.md#environment-variables).
33+
34+
### Автономный бинарный файл
35+
36+
Если вы предпочитаете не использовать Docker, мы предоставляем автономный бинарный файл FrankenPHP для Linux и macOS, включающий [PHP 8.4](https://www.php.net/releases/8.4/en.php) и большинство популярных PHP-расширений.
37+
38+
Для Windows используйте [WSL](https://learn.microsoft.com/windows/wsl/) для запуска FrankenPHP.
39+
40+
[Скачать FrankenPHP](https://github.com/dunglas/frankenphp/releases) или выполните следующую команду для автоматической установки подходящей версии:
41+
42+
```console
43+
curl https://frankenphp.dev/install.sh | sh
44+
mv frankenphp /usr/local/bin/
45+
```
46+
47+
Для запуска содержимого текущей директории выполните:
48+
49+
```console
50+
frankenphp php-server
51+
```
52+
53+
Вы также можете запускать CLI-скрипты:
54+
55+
```console
56+
frankenphp php-cli /path/to/your/script.php
57+
```
58+
59+
## Документация
60+
61+
* [Worker режим](https://frankenphp.dev/docs/worker/)
62+
* [Поддержка Early Hints (103 HTTP статус код)](https://frankenphp.dev/docs/early-hints/)
63+
* [Real-time режим](https://frankenphp.dev/docs/mercure/)
64+
* [Конфигурация](https://frankenphp.dev/docs/config/)
65+
* [Docker-образы](https://frankenphp.dev/docs/docker/)
66+
* [Деплой в продакшен](https://frankenphp.dev/docs/production/)
67+
* [Оптимизация производительности](https://frankenphp.dev/docs/performance/)
68+
* [Создание автономного PHP-приложений](https://frankenphp.dev/docs/embed/)
69+
* [Создание статических бинарных файлов](https://frankenphp.dev/docs/static/)
70+
* [Компиляция из исходников](https://frankenphp.dev/docs/compile/)
71+
* [Интеграция с Laravel](https://frankenphp.dev/docs/laravel/)
72+
* [Известные проблемы](https://frankenphp.dev/docs/known-issues/)
73+
* [Демо-приложение (Symfony) и бенчмарки](https://github.com/dunglas/frankenphp-demo)
74+
* [Документация Go-библиотеки](https://pkg.go.dev/github.com/dunglas/frankenphp)
75+
* [Участие в проекте и отладка](https://frankenphp.dev/docs/contributing/)
76+
77+
## Примеры и шаблоны
78+
79+
* [Symfony](https://github.com/dunglas/symfony-docker)
80+
* [API Platform](https://api-platform.com/docs/symfony)
81+
* [Laravel](https://frankenphp.dev/docs/laravel/)
82+
* [Sulu](https://sulu.io/blog/running-sulu-with-frankenphp)
83+
* [WordPress](https://github.com/StephenMiracle/frankenwp)
84+
* [Drupal](https://github.com/dunglas/frankenphp-drupal)
85+
* [Joomla](https://github.com/alexandreelise/frankenphp-joomla)
86+
* [TYPO3](https://github.com/ochorocho/franken-typo3)

0 commit comments

Comments
 (0)