docker搭建nginx+php环境让halo博客轻松管理php脚本

docker搭建nginx+php环境让halo博客轻松管理php脚本

本文利用halo博客的静态存储,实现在halo博客中能够轻松管理自己的php脚本,而不需要直接登陆服务器
由我另一篇文章进行修改:docker搭建nginx+php环境

1 准备

1.已安装好docker
2.已在docker中安装好nginx,docker安装nginx可参考我另一篇文章:docker安装nginx并配置SSL
3.已安装好halo博客系统

2 docker安装php并启动

因为我之前没用过php,查了一些教程,不少用5.6的,怕踩坑,也用5.6的,不过现在发现用新版本的也没啥问题

docker pull php:5.6-fpm

安装完毕后,到halo的开发者模式的静态存储,新建一个名为php的文件夹,再往下创建一个open的文件夹
在这里插入图片描述

然后回到服务器,启动php,用-v把本地/data/halo/static/php 映射到php容器的/www目录中

docker run -itd --name myphp -v /data/halo/static/php:/www -m 55m php:5.6-fpm

注意我这里的halo是跑在docker里的,挂在到了本地的/data/halo目录中了,如果halo不是跑在docker中,则要用下面这条命令(目录自行修改)

docker run -itd --name myphp -v /root/.halo/static/php:/www -m 55m php:5.6-fpm

3 配置nginx

打开自己的nginx配置文件,在server中加入下面内容

location ~ ^/open/.+\.php$ {
        #root /www;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /www/$fastcgi_script_name;
        include        fastcgi_params;
    }

好了,这里需要解释一下前面为啥要建立/php和/php/open这两个文件夹了,因为如果只建立/php文件夹,而且我们启动php时挂载到本地的/data/halo/static/php目录,这样的话,访问 域名/xxx.php时会可以正常访问,但是此时halo中却不能够下载该.php文件了,所以需要再建/php/open这个目录
然后在nginx中的location中配置 ^/open/.+.php 这样就会匹配/open开头,.php结尾的路径
然后.php文件放在/php/open/下,要访问.php页面的时候就访问 域
名/open/xxx.php,要下载.php文件的时候就访问 域名/php/open/xxx.php
(可能说得有些乱...凑合看吧...捂脸...)

然后启动nginx容器,注意挂载的目录,nginx配置文件名,根据自己实际情况修改

docker run -itd --name nginx -p 80:80 -p 443:443 -v /data/nginx/conf.d/halo-ssl.conf:/etc/nginx/conf.d/nginx.conf -v /data/nginx/conf.d/cert:/etc/nginx/conf.d -v --link myphp:php -m 100m nginx

其它相关说明在我另一篇文章中,这里不赘述

4 使用

建一个info.php脚本文件,里面写

<?php phpinfo(); ?>

保存,用halo上传到/php/open中
然后浏览器访问
在这里插入图片描述
然后以后就可以愉快地随时随地给自己网站增加/修改php页面了~

5 其它说明

1 我给自己服务器配置了CDN,务必要将/*.php排除出CDN的缓存规则,否则会发现自己的php页面怎么变成静态页面了(大雾)
在这里插入图片描述
2 如果php页面需要返回302来让浏览器进行转发,记得在CDN中关闭重定向跟随,不然CDN会把302吞了,自行获取页面了再返回,这样太耗CDN流量了=。=

没错~ 我的随机图片API就是这么跑的~!