linux下,nginx环境,网站的样式无法正常显示,是不是路径未配置正确,求指导!

linux下,nginx环境,网站的样式无法正常显示,是不是路径未配置正确,求指导!,第1张

如果虚乎网站的样睁陵式无法正常显示,只可能是css文件未起效,也就是在meat头定义那边的CSS路径里面找不到CSS文件,css是用浏览器来生悉誉戚成属性的,和系统环境没有一毛钱关系。

常轮衫规 *** 作,是网上都能搜到到的:

1、setting.py 添加 STATIC_ROOT

2、执行 python manage.py collectstatic

以上两步还不行尝试一下设置:

在urlpatterns后追加 static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

以上常规 *** 作还不行,大部分是因为Nginx 静御袜态资源配置错误导腊拆腔致。

1、下载:

到官网下载nginx稳定版,解压到e盘根目录;

到官网下载php非安装版,解压到e盘根目录。

2、配置:

打开nginx.conf,修改相关位置如下,

location / {

root html#网站根目录

index index.html index.htm index.php

autoindex on #当网站没有默认文件时,打开域名可以看到文件目录世碰樱结构

}

location ~ \.php$ {

#root html

fastcgi_pass 127.0.0.1:9000

fastcgi_index index.php

fastcgi_param SCRIPT_FILENAME e:/html/$fastcgi_script_name#php文件存放目录,测试过相对路径不行,需吵氏要绝对路径

includefastcgi_params

}

配置好后打开命令提示符,切换到e:\nginx,启动nginx命令:start nginx 。(相关介搜丛绍可到l)

注意:当修改配置文件后,要nginx -s quit 然后 start nginx 才有配置后的效果,用 nginx -s reload 没效果。可能是windows版本的一个bug吧。

配置php.ini,设置extension_die = "ext/",把相关用到的ext扩展dll前面的分号去掉,不然不能正常启动php-cgi.ext。

启动php-cgi.exe;切换到e:\php,在命令提示符下输入php-cgi.exe -b 127.0.0.1:9000。

3、测试:

写一个打印phpinfo()的php脚本放到html目录下面,测试php程序是否能够运行。经过测试成功运行。

========================================================

启动与停止

1. 启动Nginx:

D:/nginx-1.0.4/nginx.exe -p D:/nginx-1.0.4

2. 启动PHP-CGI

D:/php/php-cgi.exe -b 127.0.0.1:9001 -c D:/php/php.ini

为了方便可以写到一个批处理文件中,这里用到了一个RunHiddenConsole,可以在这里下载:

@echo off

REM Windows 下无效

REM set PHP_FCGI_CHILDREN=5

REM 每个进程处理的最大请求数,或设置为 Windows 环境变量

set PHP_FCGI_MAX_REQUESTS=1000

echo Starting PHP FastCGI...

REM RunHiddenConsole C:/php5/php-cgi.exe -b 127.0.0.1:9000 -c C:/php5/php.ini

D:/nginx-1.0.4/RunHiddenConsole.exe D:/php/php-cgi.exe -b 127.0.0.1:9001 -c D:/php/php.ini

echo Starting nginx...

D:/nginx-1.0.4/RunHiddenConsole.exe D:/nginx-1.0.4/nginx.exe -p D:/nginx-1.0.4

exit

3. 停止Nginx

D:/nginx-1.0.4/nginx.exe -p D:\nginx-1.0.4 -s stop

4. 停止PHP-CGI

taskkill /F /IM php-cgi.exe >nul

同样可以写到一个批处理文件中:

@echo off

echo Stopping nginx...

REM taskkill /F /IM nginx.exe >nul

D:/nginx-1.0.4/nginx.exe -p D:\nginx-1.0.4 -s stop

echo Stopping PHP FastCGI...

taskkill /F /IM php-cgi.exe >nul

Nginx配置的路径问题

由于在Windows下文件路径可以用”\”, 也可以用”\\”, 也可以用”/”作为路径做分隔符。但”\”最容易引发问题,所以要尽量避免使用。

例如下面的配置可以正常运行

root G:\ezdemo

但是这样

root G:\tweb

就会出现问题,访问程序时会出现500错误。

在logs/error.log里面会发现这类似这样的错误日志:

2011/06/16 22:07:28 [crit] 4756#5412: *2 GetFileAttributesEx() "G: web" failed (123: The filename, directory name, or volume label syntax is incorrect), client: 127.0.0.1, server: php.lab, request: "GET / HTTP/1.1", host: "php.lab"

2011/06/16 22:13:38 [crit] 4756#5412: *5 CreateFile() "G: pweb/test.html" failed (123: The filename, directory name, or volume label syntax is incorrect), client: 127.0.0.1, server: php.lab, request: "GET /test.html HTTP/1.1", host: "php.lab"

注意到G:后而有一个tab空格,你应该明白怎么回事了:)

========================================================

关于nginx以服务方式运行原理和实现方法参见 http://bbs3.chinaunix.net/thread-1264548-1-1.html

另在那个帖子中还有一个完整的所用工具和脚步的zip包,照readme.txt 安装好服务是没有问题的

本文主要是说说 nginx-0.7.58 以服务方式运行后“nginx -s reload”常见错误解决方法

注意,这个 nginx-0.7.58 下载自官方

1、[alert]: CreateFileMapping(1024, nginx_shared_zone) failed (5: Access is denied)

根据这个提示我分析了一下,应该是权限问题,这时我分别用服务启动和命令启动nginx后发现

服务启动后 nginx 是以 system 身份运行的,而 命令启动后 nginx 是以 administrator 身份运行的

这样看问题应该是出在了服务的运行身份上,所以我们应该修改服务的运行身份,具体修改方法:

服务--》NGNIX--》属性--》登陆--》登陆身份--》选择此账户后账户填入administration,再填入密码

修改完后重启服务再试 nginx -s reload ,一切正常

2、[error]: OpenEvent("ngx_reload_31796") failed (2: The system cannot find the file specified)

这个应该是最常见的错误了,一般引起这个错误的主要原因是 nginx 不能处理特定pid的 nginx 进程而造成的

这个错误信息中 reload 还有可能是 stop reopen quit,而后面的31796则是当前 logs\nginx.pid 中的值

我碰到这个问题的时候是在我mstsc登陆vps上的win03时,下面是当时复制出的一些信息

D:\httpd\nginx>sc stop nginx

D:\httpd\nginx>sc start nginx

D:\httpd\nginx>tasklist | findstr nginx

nginx.exe16360 Console0 3,184 K

nginx.exe31112 Console0 3,512 K

D:\httpd\nginx>start nginx.exe

D:\httpd\nginx>tasklist | findstr nginx

nginx.exe16360 Console0 3,184 K

nginx.exe31112 Console0 3,512 K

nginx.exe32696 RDP-Tcp#3 7 3,212 K

nginx.exe14988 RDP-Tcp#3 7 3,524 K

D:\httpd\nginx>

当时我没有发现有啥问题,以为是程序的问题,后来我在本地虚拟机上win03上使用没有碰到此错误,一样的 *** 作为啥结果会不同?

我就又重新在vps上的win03上做试验,发现了猫腻,服务启动和远程登陆后手动启动的会话id不同

就拿上面抓的信息为例子

nginx以服务方式启动的会话id是0,而我远程登陆后的会话id是7,所以不能 *** 作会话id 0启动的nginx

而我远程登陆后自己手动 start nginx 启动,这时nginx.exe的会话id就是我现在用的,所以我此时是能正常使用 nginx -s reload 的

综上所述,这个错误是由于不能正常结束特定进程所引起的,也大多数情况是在远程登陆后 *** 作才会出现,具体的解决方法未知,最关键的问题远程登陆后如何切换到会话id 0上去


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存