Проблема с php-fpm в gitpod - PullRequest
       28

Проблема с php-fpm в gitpod

0 голосов
/ 23 сентября 2019

Я пытаюсь запустить php-fpm в gitpod.io.
Но когда я запускаю следующую команду ...

service php7.1-fpm start

... Консоль GitPod возвращает ошибку разрешения, я не могу использовать sudo в консоли GITPOD.Что я могу сделать, чтобы решить эту проблему.

Ошибка:
> mkdir: cannot create directory ‘/run/php’: Permission denied . That error are show in my gitpod console

Мой dockerfile:

FROM gitpod/workspace-full:latest

# optional: use a custom Nginx config.
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./docker-run.sh /

# optional: change document root folder. It's relative to your git working copy.
ENV NGINX_DOCROOT_IN_REPO="www"
USER root
RUN apt-get update \
 && apt-get -y install mysql-server mysql-client \
 && apt-get -y install php-fpm php-cli php-bz2 php-bcmath php-gmp php-imap php-shmop php-soap php-xmlrpc php-xsl php-ldap \
 && apt-get -y install php-amqp php-apcu php-imagick php-memcached php-mongodb php-oauth php-redis\
 && apt-get clean && rm -rf /var/cache/apt/* /var/lib/apt/lists/* /tmp/*

RUN mkdir /var/run/mysqld \
 && chown -R gitpod:gitpod /var/run/mysqld /usr/share/mysql /var/lib/mysql /var/log/mysql /etc/mysql

COPY ./my.cnf /etc/mysql/my.cnf

RUN mysqld --daemonize --skip-grant-tables \
    && sleep 3 \
    && ( mysql -uroot -e "USE mysql; UPDATE user SET authentication_string=PASSWORD(\"root\") WHERE user='root'; UPDATE user SET plugin=\"mysql_native_password\" WHERE user='root'; FLUSH PRIVILEGES;" ) \
    && mysqladmin -uroot -proot shutdown;

EXPOSE 80 443

Извините за мой английский очень плохо.

1 Ответ

0 голосов
/ 24 сентября 2019

Я не знаком с php-fpm, поэтому не могу проверить, правильно ли работает мое решение.Тем не менее, я могу запустить php-fpm в Gitpod, когда я изменяю пути в конфигурационных файлах php-fpm на места, в которые пользователю разрешено писать gitpod.

Вы найдете конфигурацию php-fpm в /etc/php/7.2/fpm/ (возможно, вам придется изменить номер версии, если вы используете 7.1).Я создал простой файл конфигурации, в котором файл pid, файл сокета и файл журнала будут записаны в /tmp/, где пользователю gitpod разрешено записывать файлы:

[global]
pid = /tmp/php7.2-fpm.pid
error_log = /tmp/php7.2-fpm.log

[www]
listen = /tmp/php7.2-fpm.sock
listen.owner = gitpod
listen.group = gitpod

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Теперь выможно запустить демон php-fpm следующим образом:

/usr/sbin/php-fpm7.2 --fpm-config php-fpm.conf

После этого вы можете проверить, что демон запущен с помощью ps -aux.Там вы найдете что-то вроде этого:

gitpod      3342  0.0  0.0 234512 11524 ?        Ss   14:34   0:00 php-fpm: master process (php-fpm.conf)
gitpod      3343  0.0  0.0 234644  5812 ?        S    14:34   0:00 php-fpm: pool www
gitpod      3344  0.0  0.0 234644  5812 ?        S    14:34   0:00 php-fpm: pool www

Вы можете найти рабочий пример здесь .

Я надеюсь, что это работает для вас.

Cornelius


PS: Если это ответ на ваш вопрос, пожалуйста, рассмотрите возможность написать комментарий к вашему сообщению reddit со ссылкой на этот ответ, чтобы пользователи reddit знали, чтопроблема уже решена.

...