gitpod 中 php-fpm 的问题
Issue with php-fpm in gitpod
我正在尝试 运行 php-fpm gitpod.io。
但是当我运行遵循命令时...
service php7.1-fpm start
...Gitpod console return 一个权限错误,我不能在 gitpod console 中使用 sudo。
我该怎么做才能解决这个问题。
错误:
> mkdir: cannot create directory ‘/run/php’: Permission denied . That error are show in my gitpod console
我的 docker 文件:
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
对不起,我的英语很糟糕。
我不熟悉 php-fpm 因此我无法测试我的解决方案是否正确运行。但是,当我将 php-fpm 配置文件中的路径更改为允许用户 gitpod 写入的位置时,我可以在 Gitpod 中启动 php-fpm。
你会在/etc/php/7.2/fpm/
中找到php-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
您可以找到一个工作示例 here。
希望对你有用。
科尼利厄斯
PS:如果这回答了您的问题,请考虑给您的 reddit post 写一条评论,并对此答案加上 link,以便 reddit 用户知道问题已经解决了。
我正在尝试 运行 php-fpm gitpod.io。
但是当我运行遵循命令时...
service php7.1-fpm start
...Gitpod console return 一个权限错误,我不能在 gitpod console 中使用 sudo。
我该怎么做才能解决这个问题。
错误:> mkdir: cannot create directory ‘/run/php’: Permission denied . That error are show in my gitpod console
我的 docker 文件:
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
对不起,我的英语很糟糕。
我不熟悉 php-fpm 因此我无法测试我的解决方案是否正确运行。但是,当我将 php-fpm 配置文件中的路径更改为允许用户 gitpod 写入的位置时,我可以在 Gitpod 中启动 php-fpm。
你会在/etc/php/7.2/fpm/
中找到php-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
您可以找到一个工作示例 here。
希望对你有用。
科尼利厄斯
PS:如果这回答了您的问题,请考虑给您的 reddit post 写一条评论,并对此答案加上 link,以便 reddit 用户知道问题已经解决了。