wnmp不同路径部署多个php博客
首先,我不会php,只摸过php,对于nginx了解仅限于百度所得知识,以及自己猜的。
1️⃣问题
我需要在nginx项目目录里面放多个博客,比如我的nginx根目录为C:\wnmp\www
,我要在这个目录下部署wordpress
,在C:\wnmp\www\app\blog
下部署typecho,后期我可能部署其他的PHP博客,需要新建很多个目录。
2️⃣为啥有问题
好了,问题结束,这个问题解决真的搞死人,按照网上比较新的教程搭建了wnmp,部署了wordpress,没啥解决不了的问题:happy:。
我不会配置nginx,怎么办,谷歌wnmp,发现有人集成了这个包,不过我不要其他的,只解压了nginx,拿了他的nginx.conf配置文件。看起来写的挺好的做了一些优化,具体是啥也不太懂,就感觉有用。
然后当我部署第二个博客的时候,问题来了😫,因为不知道nginx是怎么解析PHP的,然后各种百度各种谷歌,
然后总是出现同一个问题,第二个不在根目录下的只能访问首页,然后其他页面页面或者文章内容页面都是404,曾经搞到半夜大概一两点钟,这个问题也没有解决。☹️
之前搭建博客一直用的是xampp,这个是开发环境下用的,并不适合线上环境使用,但是里面的apache
配置好了,直接创建目录,然后访问文件,就可以实现我之前说的效果,
但是本着折腾为原则的程序员,是不可能屈服在PHP的淫威之下的, 我发现他们的解决方法都有一个共同点,就是要根据访问的路径去判断,将路径重写到本地的PHP,
nice,这简单,
然后,然后就掉进了死胡同😐。在尝试了几周没有解决问题之后,我放弃了。
3️⃣又见问题
今天域名刚好下来,原来的腾讯云服务器不想续费了,因为学生优惠到期了,之前的博客用的是typecho,现在新服务器用的是wordpress。需要将原来的服务器上面的博客一同搬过来。那么问题又来了。这个问题不解决,我是没有办法搬过来的。
4️⃣解决
在分析了很多解决方法之后,我开窍了,我盯着配置文件看了很久。发现nginx路径重写就是将访问的那个路径代理到本地的PHP进行处理,然后返回结果再给前台,我复制了一份配置,加了一个同样的代理,然后把路径改成/app/blog
,stop,restart,问题解决了,what?解决了??????难受,这么简单。
附上配置文件nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include 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"';
sendfile on;
keepalive_timeout 65;
client_max_body_size 100m;
gzip on;
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
server_name localhost;
access_log logs/www.access.log main;
root C:\wnmp\www;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /app/blog {
try_files $uri $uri/ /app/blog/index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
listen 443 ssl;
ssl_certificate cert/2535490_www.yoouu.cn.pem;
ssl_certificate_key cert/2535490_www.yoouu.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
}
重点就是这段,代理不同的路径到不同文件路径下的index.php去处理
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /app/blog {
try_files $uri $uri/ /app/blog/index.php$is_args$args;
}
5️⃣感想
有时间还是要学习下nginx。
6️⃣补充
其实遇到的问题不只是这些。比如之前我博客访问一段时间就不能访问了。发现是PHP的进程结束了。猜测可能是博客访问遇到了什么问题,然后进程结束。用到了xxfpm
。去守护进程。现在PHP有五个进程。稳定运行了十多天,没有什么问题。然后是wnmp。环境搭建的教程,在另一个博客文档里面。
地址:http://xiaoxia.org/2011/02/01/xxfpm-wrote-a-fastcgi-process-manager/