回答
收藏
分享
举报
docker使用lnmp搭建wordpress访问php报错
提问于2021-03-24 09:56

浏览 727

环境

[root@docker opt]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
···
···

[root@docker opt]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 

[root@docker opt]# firewall-cmd --state
not running

[root@docker opt]# getenforce 
Permissive

配置文件:

php容器的镜像vphp:7.3-fpm是使用php官方的php:7.3-fpm镜像仅添加了一个nginx的用户和组制作的

docker-compose:
[root@docker lnmp]# cat docker-compose.yml 
version: "3.0"

services:
  web01:
    container_name: nginx01
    depends_on:
      - "db01"
      - "php01"
    image: nginx:stable
    ports:
      - "8080:80"
    volumes:
      - /opt/conf/nginx/:/etc/nginx
      - /opt/html/:/usr/share/nginx/html
    #restart: always
    networks:
      - lnmp

  db01:
    container_name: mysql01
    image: mysql:5.7
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    #environment:
    #  - MYSQL_ROOT_PASSWORD=123.com
    env_file:
      - env.mysql
    #restart: always
    networks:
      - lnmp

  php01:
    container_name: php-fpm01
    image: vphp:7.3-fpm
    ports:
      - "9000:9000"
    volumes:
      - /opt/conf/php-fpm/php-fpm.d:/usr/local/etc/php-fpm.d
      - /opt/html/:/var/www/html
    networks:
      - lnmp
    privileged: true

#  dashboard:
#    container_name: "portainer"
#    image: "portainer/portainer-ce:2.1.1"
#    restart: "always"
#    ports:
#      - "8000:8000"
#      - "9001:9000"
#    volumes:
#      - "/var/run/docker.sock:/var/run/docker.sock"
#      - "portainer_data:/data"
#    networks:
#      - "lnmp"

volumes:
  db_data:
#    external:
#      false
  portainer_data:

networks:
  lnmp:
#    external:
#     false
nginx:
[root@docker lnmp]# grep -Ev "^$|#" /opt/conf/nginx/nginx.conf
worker_processes  1;
user nginx nginx;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    include    conf.d/*.conf;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
}

[root@docker opt]# grep -Ev '^$|#' conf/nginx/conf.d/default.conf 
server {
        listen       80;
        server_name  localhost;
        location / {
            root   /usr/share/nginx/html/wordpress;
            index  index.php index.html;
        }
        location ~\.php$ {
            root /usr/share/nginx/html/;
            fastcgi_pass php-fpm01:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        include fastcgi_params;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
}
php-fpm:
[root@docker opt]# grep -Ev '^$|;' conf/php-fpm/php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
security.limit_extensions = .php .php3 .php4 .php5 .php7
目录结构

宿主机:
wordpress:/opt/html/wordpress html文件夹权限777

报错详情:

nginx:

2021/03/09 13:17:34 [error] 28#28: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.0.117, server: localhost, request: "GET /wp-admin/install.php HTTP/1.1", upstream: "fastcgi://172.22.0.3:9000", host: "192.168.0.179:8080"

php-fpm:

172.22.0.4 -  09/Mar/2021:13:13:56 +0000 "GET /index.php" 404
172.22.0.4 -  09/Mar/2021:13:17:34 +0000 "GET /wp-admin/install.php" 404

访问http://宿主机IP:8080/wp-admin/install.php,网页报错File not found.
访问http://宿主机IP:8080/index.html,正常显示提前准备的html

基本上能百度/Google到的方法都试了,每次都是这个报错,但是访问html文件没问题

求助大牛!

已修改于2023-03-17 02:24



写下您的回答
发表回答
全部回答(0)

按点赞数排序

按时间排序

提问者
阿尔巴
这家伙很懒还未留下介绍~
12
文章
10
问答
11
粉丝
相关问答

没太看懂,是在用auth_basic协议吗?那什么要升级HTTP协议呢?是升级到Websocket协议吗?

点赞 0
浏览 830


location / {
proxy_pass http://inter-router;
proxy_set_header Host ***;
proxy_http_version 1.1;
}
location ^~ /websocket/ {
proxy_pass http://inter-router/websocket/;
proxy_set_header Host ***;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
}

不要把websocket 配置放到通配符里面,那样就全部都是了,只对websocket部分,这样用,示例如上

点赞 0
浏览 705
主要性能优势来源于连接复用和 lua 变成 rust
个人认为调度上 stealing 未必比绑核更好
点赞 0
浏览 1k