第一次这样做。自从我解决此问题两天后,仍未找到问题。
我在laravel
上的Ubuntu 18.04
实例上安装了EC2
。该项目在我的本地Homestead
环境中运行良好。经过权限争夺之后,我现在停留在nginx/laravel
提供的空白页面上。
我正在尝试设置权限,以便用户ubuntu
可以从BitBucket
部署更新,而www-data
可以运行Laravel
应用程序。
我被困住了,因为我似乎找不到在哪里记录错误/发生错误了。
几点;
该网站的nginx
错误日志中没有错误
Nginx
在站点的访问日志中显示HTTP 200响应代码
我的APP_DEBUG=true
文件中有.env
,用于详细的堆栈跟踪,但没有显示
我在laravel.log
如果我将URL指向img文件夹中的徽标文件,浏览器将提供网站的徽标
我基于this answer
/ project = Laravel's
根文件夹
/ project / public = nginx
网络根目录
我的项目文件夹权限设置如下:
sudo chown -R www-data:www-data /project
sudo usermod -a -G www-data ubuntu
sudo chown -R ubuntu:www-data /project
sudo find /project -type f -exec chmod 664 {} \;
sudo find /project -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
我的nginx
配置是:
server {
server_name project.com.au www.project.com.au;
root /home/ubuntu/project/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
access_log /var/log/nginx/sc.access.log;
error_log /var/log/nginx/sc.error.log error;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/project.com.au/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/project.com.au/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.project.com.au) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = project.com.au) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name project.com.au www.project.com.au;
return 404; # managed by Certbot
}
第二个server
部分由letsencrypt / Cert-Bot
添加。
我的public
文件夹的文件列表是:
-rw-r--r--+ 1 ubuntu www-data 281 Aug 16 16:02 browserconfig.xml
drwxr-xr-x+ 2 ubuntu www-data 4096 Aug 16 10:46 css
-rw-r--r--+ 1 ubuntu www-data 1150 Aug 16 16:02 favicon.ico
drwxr-xr-x+ 2 ubuntu www-data 4096 Aug 16 16:02 fonts
drwxr-xr-x+ 3 ubuntu www-data 4096 Aug 16 16:02 img
-rw-r--r-- 1 ubuntu www-data 1823 Aug 16 16:36 index.php
drwxr-xr-x+ 2 ubuntu www-data 4096 Aug 16 10:46 js
-rw-r--r--+ 1 ubuntu www-data 720 Aug 16 16:02 manifest.json
-rw-r--r-- 1 ubuntu www-data 192 Aug 16 16:02 mix-manifest.json
-rw-r--r-- 1 ubuntu www-data 24 Aug 16 15:28 robots.txt
-rw-r--r-- 1 ubuntu www-data 914 Aug 16 15:28 web.config
我的nginx
访问和错误日志没有任何条目/
我的项目错误日志为空。我的项目访问日志显示:
27.99.0.231 - - [19/Aug/2018:13:33:05 +0000] "GET / HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
我的主页显示为空白,没有nginx
错误或laravel
堆栈跟踪。如果我在基本URL中添加/img/logo.png
,则徽标会显示在页面中。
我还能去哪里?所有研究都指向上面的conf文件,但我还没有发现与众不同的地方。
答案 0 :(得分:1)
您必须配置索引页位于公用文件夹内,但我看不到它完成了。就我而言,我的nginx .conf看起来像这样:
...
server {
listen 80;
listen 443 ssl;
listen [::]:80;
server_name domain.tld;
root /var/www/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/laravel_error.log;
access_log /var/log/nginx/laravel_access.log;
...
我认为根线可以解决您的问题