Heim  >  Fragen und Antworten  >  Hauptteil

Nginx-basierte WordPress-Installation schlägt fehl?

Ich bin ein Neuling. Ich habe mir kürzlich einen Server zugelegt und wollte zum Vergnügen einen einfachen Blog einrichten. Also habe ich mich für WordPress entschieden, das einfachste, und es Schritt für Schritt gemäß den Tutorials zu WordPress installiert. Gleichzeitig habe ich MySQL installiert, um die WordPress-Datenbank zuzuweisen, und dann php* mit yum gemäß den Informationen installiert (ich habe es installiert). Alle PHP-Pakete, einschließlich php-fpm ), habe ich als Server Nginx ausgewählt, der ebenfalls mit yum installiert wird.

Aber wenn ich WordPress über install.php weiter installiere, erscheint ein 404-Fehler Nach dem Entfernen einiger Kommentare der Nginx-Standardkonfiguration erscheint ein 500-Fehler.

Ich habe das Gefühl, dass es sich um ein Problem mit den Nginx-Einstellungen handelt, aber die Konfigurationsdatei in CentOS unterscheidet sich von der im Internet, und auch die Konfiguration verschiedener Informationen im Internet unterscheidet sich. Ich möchte, dass eine erfahrene Person meine Zweifel klärt. Ich wäre einem Neuling sehr dankbar.

Der Inhalt von /etc/nginx/nginx.conf lautet wie folgt:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/default.conf ist wie folgt eingestellt:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        proxy_pass   http://127.0.0.1;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

/etc/nginx/fastcgi_params ist wie folgt eingestellt:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
PHPzPHPz2712 Tage vor1127

Antworte allen(3)Ich werde antworten

  • 巴扎黑

    巴扎黑2017-05-16 17:30:53

    直接贴代码吧:

    /etc/php-fpm.d/www.conf 配置文件,设置了监听:

    ...
    ;                            (IPv6 and IPv4-mapped) on a specific port;
    ;   '/path/to/unix/socket' - to listen on a unix socket.
    ; Note: This value is mandatory.
    ; listen = 127.0.0.1:9000
    listen = /var/run/php-fpm.sock
    
    ; Set listen(2) backlog.
    ; Default Value: 65535
    ;listen.backlog = 65535
    ...
    

    /etc/nginx/nginx.conf 配置了 phpupstream

        ...
        reset_timedout_connection on;
        server_names_hash_bucket_size 2048;
    
        upstream php {
            server unix:/var/run/php-fpm.sock;
        }
    
        include /etc/nginx/conf.d/*.conf;
        ...
    

    WordPress 配置的文件,需要引入:

    文件位置为:/etc/nginx/inc.d/wordpress-multisite.inc

    charset utf-8;
    
    root $app_root/public;
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    
    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log off; log_not_found off; expires max;
    }
    
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass php;
    }
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        log_not_found off;
        access_log off;
    }
    
    location ~ /\. {
        deny all;
    }
    
    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }
    

    某一个WordPress网站的配置文件:

    server {
        listen 80;
        server_name server.name;
        set $app_root '/home/www/server.name';
        include /etc/nginx/inc.d/wordpress-multisite.inc;
    }
    

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 17:30:53

    root xxx;
    
    location / {
           index index.php;
    }
    
    location ~ \.php5?($|/) {
           set $script $uri;
           set $path_info "";
    
           if ($uri ~ "^(.+\.php)(/.+)") {
                 set $script $1;
                 set $path_info $2;
           }
    
           unix:/var/run/php-fpm/php-fpm.sock
           fastcgi_index index.php;
           fastcgi_param SCRIPT_FILENAME $document_root$script;
           fastcgi_param SCRIPT_NAME $script;
           fastcgi_param PATH_INFO $path_info;
    }
    

    Antwort
    0
  • ringa_lee

    ringa_lee2017-05-16 17:30:53

    将 nginx 的 default 配置修改为:

    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock

    再去修改 php-fpm 的 /etc/php5/fpm/pool.d/www.conf 配置:

    listen = /var/run/php5-fpm.sock

    然后 reload 一下 nginx……

    Antwort
    0
  • StornierenAntwort