本文利用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流量了=。=