thinkphp5.1部署在百度云主机的注意事项

thinkphp5.1部署在百度云主机的注意事项

网站建好了,找了一圈好点的云主机部署,首先看的是openshift,虽然有免费的支持,但是限制很多,且部署相当麻烦。正好看到最近百度云主机做活动,于是搞了一个bch玩一玩。但是也遇到很多坑,加上百度云主机对应的支持文档写的简单随意,也是遇到不少麻烦,整理出来,供参考。

1、程序文件上传位置
需要把你的程序根目录文件下的文件和文件夹上传到云主机对应的/webroot目录下,/webroot下此时已经有一些系统自动生成的文件,没关系,直接把你的文件内容(注意不是你的程序文件的根目录这一个文件夹,而是根目录下的所有内容)上传到这里就可以了。

2、首页无法进入的问题

无法进入自己的首页,主要因为从是thinkphp5开始,入口页面index.php被放在了public目录下了,所以,nginx这时候找不到入口文件,所以进步了主页。这时候有两种处理办法:

第一,是将你的入口文件从public下copy到webroot下面,这里需要注意修改你入口文件中的配置,比如:

// 定义应用目录 
define('APP_PATH', __DIR__ . '/../application/'); 
require __DIR__ . '/../thinkphp/start.php';

改为

 // 应用目录
define('APP_PATH', __DIR__.'/application/');
// 加载框架引导文件
require './thinkphp/start.php';

由于这里涉及到修改框架结构,本着尽量少改动的想法,我没有选择这种做法

第二,在webroot目录下新建index.php文件,增加一句代码即可


require './public/index.php';

这样就实现了通过新添加引导文件引导到我们正确的入口文件的目的,OK,这个时候你再试下,程序正常进入首页

3、只有首页能进入,其他页面404无法找到文件

主要是因为在thinkphp中做了url的重写PATHINFO,隐藏了入口文件,所以你在你的apache服务器中是没有感知,http://localhost/index.php 与 http://localhost 是一样的效果,但是在云虚拟机中,用的是nginx,这个时候,你的入口文件就隐藏不了了,如果要隐藏,就会报错404无法找到文件。要么你在处理时候注意加上入口文件,要么做url重写。
在webroot下新建bcloud_nginx_user.conf文件,代码如下:

  location / { 
   if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
   break;
    }
 }

4、可能你会遇到静态文件js/css/images等文件找不到,缺少样式等问题

这个时候你可以看看加载web时候,静态网页的地址是否正确,三种办法处理,一是在你的php的template.conf文件中做replace配置修改,把相应的文件做好别名;一种是重定向,在webroot下添加文件bcloud_nginx_user.conf,添加代码

location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        root /home/bae/app/htdocs;
        #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
        expires 30d;
    }

或者第三种办法,bcloud_nginx_user.conf种添加代码如下

location / {
root /home/bae/app/public;
index index.php index.html index.htm;
}

你可能感兴趣的:(thinkphp5.1部署在百度云主机的注意事项)