Можно ли ставить PHP и MYSQL на новом движке на другом домене?

Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#1
Добрый день. Мы на текущем сервере, где крутится ваш движок, хотим запустить другой сайт(другой домен) и там мини-сайтик на php/mysql запустить. Возможно ли это? Спасибо
 
Регистрация
15 Дек 2017
Сообщения
5,067
#2
Если работает на новой версии, то там изолированный Docker-контейнер. Можете на сервере устанавливать всё что угодно (кроме пакетов которые займут 80-й порт), это не помешает сайту.
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#3
Если работает на новой версии, то там изолированный Docker-контейнер. Можете на сервере устанавливать всё что угодно (кроме пакетов которые займут 80-й порт), это не помешает сайту.
А что прописать? Просто апач же займет 80 порт. Чтобы не было проблемы, нужно что-то в ваших настройках прописать? Можете подсказать что?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#4
А что прописать? Просто апач же займет 80 порт. Чтобы не было проблемы, нужно что-то в ваших настройках прописать? Можете подсказать что?
Устанавливаете все пакеты.
Создадите конфигурацию в папке PHP-сайта /home/website.com/config/production/nginx/conf.d/default.conf

С каким-нибудь, например стандартным содержимым.
NGINX:
server {
    listen 80;
    listen [::]:80;

    root /home/website.com;
    index index.php index.html;

    server_name website.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#5
Устанавливаете все пакеты.
mysql, php? а апач нужен?
Создадите конфигурацию в папке PHP-сайта /home/website.com/config/production/nginx/conf.d/default.conf
Что значит создать конфигурацию? Мне по такому пути, где website.com (домен отличный от домена с вашим движком) - положить конфиг с содержимым, что вы ниже привели в пример? А как апач это подхватит? Не апач? А как ваш движок это подхватит? Что-то совсем запутался :( Подскажите поподробнее, пожалуйста. На форуме пример про старую версию -там все понятно, а как с контейнерами быть и забитым портом - непонятно.
 
Регистрация
15 Дек 2017
Сообщения
5,067
#6
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#7
Нет.

Nginx подхватит, так как он слушает все эти файлы /home/ЛЮБОЙ.САЙТ/config/production/nginx/conf.d/default.conf
Что-то php так и не работает :( html файл открываются норм.
Выдает в логе такую вот ошибку
Код:
connect() to unix:/run/php/php7.3-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 1.2.3.4, server: test.site, request: "GET /index3.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "test.site"
Но файл на месте, создается после команды service php7.3-fpm restart:
Код:
root@debian10x64:~# ls -l /run/php/
total 4
-rw-r--r-- 1 root     root     5 Dec 25 17:12 php7.3-fpm.pid
srw-rw---- 1 www-data www-data 0 Dec 25 17:12 php7.3-fpm.sock
www.conf содержит всё вроде верное
Код:
listen = /run/php/php7.3-fpm.sock
listen.owner = www-data
listen.group = www-data
файл default.conf такой:
Код:
server {
    listen 80;
    listen [::]:80;

    root /home/test.site;
    index index.php index.html;

    server_name test.site;

   location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
Может видите где я допустил ошибку? :(

ps вместо test.site прописан адрес сайта.

pps
Код:
service php7.3-fpm status
● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-12-25 17:12:16 MSK; 6min ago
     Docs: man:php-fpm7.3(8)
Main PID: 12536 (php-fpm7.3)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 2312)
   Memory: 14.6M
   CGroup: /system.slice/php7.3-fpm.service
           ├─12536 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
           ├─12538 php-fpm: pool www
           └─12539 php-fpm: pool www

Dec 25 17:12:16 debian10x64.local systemd[1]: php7.3-fpm.service: Succeeded.
Dec 25 17:12:16 debian10x64.local systemd[1]: Stopped The PHP 7.3 FastCGI Process Manager.
Dec 25 17:12:16 debian10x64.local systemd[1]: Starting The PHP 7.3 FastCGI Process Manager...
Dec 25 17:12:16 debian10x64.local systemd[1]: Started The PHP 7.3 FastCGI Process Manager.
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#8
@Alisa может быть проблема в том, что я использую юзер www-data, а нужен тот, под который запущен сам сервис nginx? я пробовал юзером "nginx" указать, но тогда php-fpm не запускается, говорит
Код:
[25-Dec-2019 17:30:16] ERROR: [pool www] cannot get uid for user 'nginx': Success (0)

[25-Dec-2019 17:30:16] ERROR: FPM initialization failed
 
Регистрация
15 Дек 2017
Сообщения
5,067
#9
У Вас всё верно, дело в том, что этот файл /run/php/php7.3-fpm.sock Nginx ищет в своём контейнере, а не на сервере.
Контейнеру доступны все файлы в папке /home, поэтому если Вы перенесете туда, должно работать.
Возможно даже будет работать, если создать символическую ссылку:
ln -s /run/php/php7.3-fpm.sock /home/php7.3-fpm.sock
И в конфиге измените на /home/php7.3-fpm.sock
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#10
У Вас всё верно, дело в том, что этот файл /run/php/php7.3-fpm.sock Nginx ищет в своём контейнере, а не на сервере.
Контейнеру доступны все файлы в папке /home, поэтому если Вы перенесете туда, должно работать.
Возможно даже будет работать, если создать символическую ссылку:
ln -s /run/php/php7.3-fpm.sock /home/php7.3-fpm.sock
И в конфиге измените на /home/php7.3-fpm.sock
Не работает, выдается, что нет файла.
Контейнеру доступны все файлы в папке /home, поэтому если Вы перенесете туда, должно работать
Тоже не помогло.
Появилась другая ошибка:
Код:
2019/12/25 17:28:59 [crit] 9175#9175: *425 connect() to unix:/home/test.site/php7.3-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 1.2.3.4, server: test.site, request: "GET /index3.php HTTP/1.1", upstream: "fastcgi://unix:/home/test.site/php7.3-fpm.sock:", host: "test.site"
Если даю доступ 0777 на sock-файл, то ошибка пропадают, но вместо php кода - белый экран, хотя ответ 200. Без кода, просто текст - тоже пусто. html файлы всё также ОК :(
 
Регистрация
15 Дек 2017
Сообщения
5,067
#11
Если даю доступ 0777 на sock-файл, то ошибка пропадают, но вместо php кода - белый экран, хотя ответ 200. Без кода, просто текст - тоже пусто. html файлы всё также ОК :(
Вы в www.conf изменили путь?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#14
Код:
listen = /home/test.site/php7.3-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
И добавьте пользователя:
sudo useradd -r -s /bin/false nginx
usermod -aG sudo nginx

или может лучше его в группу www-data добавить
usermod -aG www-data nginx
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#15
Код:
listen = /home/test.site/php7.3-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
И добавьте пользователя:
sudo useradd -r -s /bin/false nginx
usermod -aG sudo nginx

или может лучше его в группу www-data добавить
usermod -aG www-data nginx
Не помогло, ни так ни так - всё такая же ошибка (13: Permission denied) :( Созданный вот так nginx это же не тот же nginx из контейнера, что стартует сервис nginx, а просто "тезка" и поэтому наверное всё такая же ошибка?
 
Регистрация
15 Дек 2017
Сообщения
5,067
#16
Не помогло, ни так ни так - всё такая же ошибка (13: Permission denied) :( Созданный вот так nginx это же не тот же nginx из контейнера, что стартует сервис nginx, а просто "тезка" и поэтому наверное всё такая же ошибка?
Нужно сделать отдельный контейнер PHP, который будет в одной сети с контейнером Nginx.

docker run -d --name php --restart always --network cinemapress -v /home:/home php:fpm-alpine

И Вы сможете обращаться к PHP через fastcgi_pass php:9000;
Код:
location ~* \.php$ {
    try_files $uri $uri/ /index.php last;
    fastcgi_split_path_info  (.+?\.php)(/.*)$;
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#17
Нужно сделать отдельный контейнер PHP, который будет в одной сети с контейнером Nginx.

docker run -d --name php --restart always --network cinemapress -v /home:/home php:fpm-alpine

И Вы сможете обращаться к PHP через fastcgi_pass php:9000;
Код:
location ~* \.php$ {
    try_files $uri $uri/ /index.php last;
    fastcgi_split_path_info  (.+?\.php)(/.*)$;
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}
УРА! Спасибо большое, php файл заработал!
сразу уточню для тех, кто будет читать: локальный php на сервере теперь не работает, скрипты будут работать через тот php, что в новом контейнере. Доп модули можно ставить такими коммандами
docker exec -ti php sh (перейдем в контейнер)
docker-php-ext-install mysqli (установка)
docker-php-ext-enable mysqli (включение )
reboot (перезагрузка, выход из контейнера)
Так у меня mysqli в phpinfo появился.
@Alisa а вот как быть с mysql? Её тоже нужно в контейнер, и на другой порт, верно? А то на 3306 ваши приложения крутится, верно? Не подскажите команду для создания контейнера, пожалуйста?
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#18
@Alisa а вот как быть с mysql? Её тоже нужно в контейнер, и на другой порт, верно? А то на 3306 ваши приложения крутится, верно? Не подскажите команду для создания контейнера, пожалуйста?
Я запустил вот это docker run -d --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw --restart always --network cinemapress -v /home:/home mysql:latest -p 3319:3319
И сейчас контейнер в постоянном ребуте :eek:
Код:
2019-12-25T22:53:33.935197301Z 2019-12-25 22:53:33+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.18-1debian9 started.
2019-12-25T22:53:33.984373717Z 2019-12-25 22:53:33+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
2019-12-25T22:53:33.984400232Z  command was: mysqld -p 3319:3319 --verbose --help
2019-12-25T22:53:33.984405450Z  Enter password: mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option.
2019-12-25T22:53:33.984410115Z 2019-12-25T22:53:33.971346Z 0 [ERROR] [MY-011084] [Server] Keyring migration failed.
2019-12-25T22:53:33.985871942Z 2019-12-25T22:53:33.976242Z 0 [ERROR] [MY-010119] [Server] Aborting
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#19
Всё получилось, ура! :)
Вот так ставится контейнер mysql без ошибок
Код:
docker run -d --name my-ysql-cntr -p 42000:3306 -e MYSQL_ROOT_PASSWORD=ВАШ_ПАРОЛЬ --restart always --network cinemapress -v /home:/home mysql:latest
Сервер - айпи сервера, не localhost/127.0.0.1, а порт ваш внешний порт 42000
Еще бы хорошо задать айпишники для коннекта, чтобы левые челы не подрубились, если такое возможно, и норм.
 
Регистрация
15 Дек 2017
Сообщения
5,067
#20
Порт контейнера можно не открывать миру, так как они в одной сети, то должно работать и на внутреннем.
И обязательно нужно базу монтировать на сервер, иначе после перезагрузки, она удалится.

Как-то так:
Код:
docker run \
    -d \
    --name mysql \
    -e MYSQL_ROOT_PASSWORD="ВАШ_ПАРОЛЬ" \
    --restart always \
    --network cinemapress \
    -v /var/lib/mysql:/var/lib/mysql \
    mysql:latest
 
Новичо́к, через «о́»
Регистрация
28 Окт 2019
Сообщения
22
#21
Порт контейнера можно не открывать миру, так как они в одной сети, то должно работать и на внутреннем.
И обязательно нужно базу монтировать на сервер, иначе после перезагрузки, она удалится.

Как-то так:
Код:
docker run \
    -d \
    --name mysql \
    -e MYSQL_ROOT_PASSWORD="ВАШ_ПАРОЛЬ" \
    --restart always \
    --network cinemapress \
    -v /var/lib/mysql:/var/lib/mysql \
    mysql:latest
спасибо! как круто система организована (y)