我有一个非常简单的配置docker-complace与php: 7-fpm
和nginx
我想用它来托管简单的php网站。
有人能告诉我我做错了什么吗?
这是docker compose。产品名称:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ../nurock/hidden_creste:/code
- ./site.prod.conf:/etc/nginx/conf.d/default.conf
php:
image: php:7-fpm
volumes:
- ../nurock/hidden_creste:/code
这是网站。prod.conf文件:
server {
listen 80;
index index.php index.html;
server_name example.com;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;
location ~ \.php$ {
try_files $uri =404;
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;
}
}
我可以编写日志,日志看起来很好,当我运行docker ps时:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c268a9cf4716 php:7-fpm "docker-php-entrypoi…" 27 minutes ago Up 16 seconds 9000/tcp example_code-php-1
beaaec39209b nginx:latest "/docker-entrypoint.…" 27 minutes ago Up 16 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp example_code-web-1
然后检查端口,我认为这看起来不错:
netstat -tulpn | grep :80
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 204195/docker-proxy
tcp6 0 0 :::8080 :::* LISTEN 204207/docker-proxy
您必须检查日志以找出错误。https://docs.docker.com/engine/reference/commandline/logs/
这些问题可能会发生:
以下是Docker Docker最佳实践:https://docs.docker.com/develop/dev-best-practices/
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
在这里,我建议这样docker-compose.prod.yml
version: '3.8'
services:
web:
image: nginx:1.21
depends_on:
- my-php-container-name
container_name: my-nginx-container-name
working_dir: /code
ports:
- '80:80'
- '443:443'
volumes:
- ../nurock/hidden_creste:/code
- ./site.prod.conf:/etc/nginx/conf.d/default.conf
restart: always
php:
build: php-fpm
container_name: my-php-container-name
working_dir: /code
volumes:
- ../nurock/hidden_creste:/code
restart: always
在与此docker compose相同的目录中。prod.yml文件,创建php fpm目录:mkdir php fpm(或在docker-compose.prod.yml文件中的
build
下编写的目录架构)
在php-fpm目录中,请添加这个名为
Dockerfile
的Dockerfile
FROM php:8.1-fpm
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
WORKDIR "/code"
RUN apt-get update && apt-get install -y --no-install-recommends \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd pdo_mysql bcmath mysqli intl
当然,添加项目所需的PHP扩展。这里有一个如何安装gd、pdo_mysql、bcmatch、mysqli、intl的示例。但还有其他扩展,如curl、xml、xdebug、mcrypt、memcache等。。。https://github.com/mlocati/docker-php-extension-installer
在您的nginx配置中,您应该为端口为443的HTTPS定义配置。还请更新这一行
fastcgi_passphp: 9000;
。将php
替换为容器名称。当然,容器名称必须是唯一的。
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass my-php-container-name:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
然后,建立您的设置
docker-compose -f docker-compose.prod.yml build && docker-compose -f docker-compose.prod.yml up
php:
image: php:7-fpm
expose:
- "9000"
...
location / {
try_files $uri $uri/ =404;
}
我在nginxweb服务器上,我想删除来自url的扩展。 我目前有以下会议: 如果试图遵循一些类似的案例说明,但似乎没有任何工作与我的conf。 问题是这段代码 在两种情况下运行良好: 客户要求https://mywebsite.com/page.php:好的 客户要求https://mywebsite.com/page:好的 不重写url! 如果客户端试图访问具有文件扩展名的页面,我需要告诉NG
为了版本控制和安全,我想将两个Dockerfile合并为一个,然后为. sock=创建一个目录 第一个Dockerfile一半 第二个Dockerfiel代码是这个PHP代码的一半,相应的文件比这个代码高一级。我不会公开9000端口并注释掉CMD。所有这些都通过supervisord进行管理。 我在docker compose的帮助下构建了它 当我这样运行它时,设置php和nginx conf来使
我在使用nginx1.19版本。并在我的linux服务器上安装了PHP5-FPM。我的nginx php配置如下: 在我将nginx更新到1.6版之后。2和升级linux,我的php文件不工作。php请求返回白色页面,没有错误。 (在我的/var/run文件夹中找不到php-fpm.sock) 如何重新启动PHP?
我有一台本地haproxy服务器(10.10.1.18),用于loadbalance 2台nginx本地Web服务器(web1=10.10.1.21,web2=10.10.1.22)。 我可以达到本地IP的web服务器到index.php文件成功http://10.10.1.21/http://10.10.1.22/ 但是,当我指向haproxy的本地ip时http://10.10.1.18/,它
我花了几个小时在这个问题上,尽管相关帖子很多,但我无法解决它。我有一个Fedora 20盒与Nginx PHP-FPM,直到今天工作得很好(在我重新加载php-fpm.service我猜)。Nginx提供的静态文件没有问题,但是任何PHP文件都会触发错误403。 权限正常,nginx和php fpm在用户“nginx”下运行: 服务的文件也被设置为nginx用户,我甚至结束了chmoding 77
配置 Ubuntu服务器11.10 64位 亚马逊AWS,Ec2,云端托管 t1。微实例 在我写任何其他东西之前,我想声明我已经检查了nginx 502坏网关和nginx PHP-FPM 502坏网关线程,不幸的是,这在这方面对我没有帮助。 这个问题似乎很常见:nginx或php fpm的错误配置可能导致错误,这是我一直无法解决的问题。请注意,即使在我转到我的域根目录时,也会出现这种情况,而不指定