记在虚拟机搭建php+nginx+mysql踩到的坑
首先因为工作原因,离开了上家公司,然后入职xx后,由于没有开发机只能自己搭建了一个虚拟机
搭建好后使用一键安装式工具安装了lnmp环境
之后访问nginx是可以访问通的,但是指定了项目目录却访问不到了,开始报502
之后发现是php-fpm 与 nginx 他俩的fast_cgi没有绑定到一起
- 排错的方法 ,首先看到nginx fast_cgi listen的是9000端口, 之后 netstat -tlnup | grep 9000查询,并没有查询到此端口
- 查看php-fpm 的conf文件发现 php-fpm是通过socket文件进行关联的, 之后监听进行修改 再次使用命令发现是可以监听到9000端口了。至此这个问题就解决完成了,
而后上面问题解决完之后突然发现一直报 nginx access 之后科学上网查了一下,有很多人说因为版本问题 静态文件访问不到需要修改php-fpm.conf 配置文件 增加 security.limit_extensions = .php .php3 .php4 .php5 .html .htm或者有注释直接去掉,但是之后还是继续报错,查看php-fpm错误日志没有任何问题, nginx 错误日志一直报错,那么肯定就是nginx的问题, 具体原因尚且不知,但是去掉了fastcgi_param后就好了,下面贴上最终的php-fpm.conf 与 vhost/xxx.conf 配置文件
### nginx配置文件
server {listen 80 ;server_name sportkbs.com;root /webapp;access_log /www/weblogs/kbs/activity.access.log; #访问日志error_log /www/weblogs/kbs/activity.error.log; #访问日志index index.php index.html index.htm;location / {try_files $uri $uri/ /index.php?s=$uri&$args; # 重写}location ~ \.php(.*)$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;#下面两句是给fastcgi权限,可以支持 ?s=/module/controller/action的url访问模式fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#下面两句才能真正支持 index.php/index/index/index的pathinfo模式#fastcgi_param PATH_INFO $fastcgi_path_info;#fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;include fastcgi_params;}}
#php-fpm配置文件
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice[www]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 1024
pm.process_idle_timeout = 10s
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
security.limit_extensions=.php .html .js .css .jpg .jpeg .gif .png .htm
对了记得千万在本地hosts文件添加访问的域名哈