首页服务器thinkphp部署到服务器(php项目如何部署在服务器上)

thinkphp部署到服务器(php项目如何部署在服务器上)

编程之家2023-10-2199次浏览

大家好,关于thinkphp部署到服务器很多朋友都还不太明白,今天小编就来为大家分享关于php项目如何部署在服务器上的知识,希望对各位有所帮助!

thinkphp部署到服务器(php项目如何部署在服务器上)

前端vue与后端Thinkphp在服务器的部署

vue在服务端部署时,我们都知道通过npm run build指令打包好的dist文件,通过http指定是可以直接浏览的,Thinkphp通过域名指向index.php文件才可以浏览。要使前端正常调用后端数据,有两种方法:1、前端跨域调用后端数据,2、前端打包文件部署在后端的服务器文件夹下(同域)。

web服务器: apache

一、跨域

thinkphp部署到服务器(php项目如何部署在服务器上)

在服务器配置站点:

在路径/home/www/  下创建test项目文件夹,用来放项目文件。  

找到httpd-vhosts.conf文件配置站点  

thinkphp部署到服务器(php项目如何部署在服务器上)

前端站点:  

    ServerName test.test.com  

    DocumentRoot "/home/www/test/dist"    

    DirectoryIndex index.html  

后端站点:  

    ServerName test.testphp.com  

    DocumentRoot "/home/www/test/php"    

    DirectoryIndex index.php  

将前端打包好的dist文件放在/home/www/test/文件夹下,运行http://test.test.com可浏览,当路径改变时,刷新会出现404错误。此时dist文件下创建一个.htaccess文件,当路径不存在时,路径指向http://test.test.com/index.html能解决此问题。

  RewriteEngine On  

  RewriteBase /  

  RewriteRule ^index\.html$ - [L]  

  RewriteCond %{REQUEST_FILENAME} !-f  

  RewriteCond %{REQUEST_FILENAME} !-d  

  RewriteRule . /index.html [L]  

在/home/www/test文件夹下创建项目根目录php文件夹,将thinkphp文件放在php下。TP5的入口文件在public文件下,在这将public下的入口文件index.php挪到php文件夹下(个人习惯将入口文件放在项目根目录),后端绑定Index模块。

前端调用后端接口,存在跨域,跨域解决方法有好几种,在这我将在后端php做配置,解决跨域问题,在公用控制器设置跨域配置:

class Common extends Controller  

{  

    public $param;  

    // 设置跨域访问  

    public function _initialize()  

    {  

        parent::_initialize();  

        isset($_SERVER['HTTP_ORIGIN']) ? header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']) : '';  

        header('Access-Control-Allow-Credentials: true');  

        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');  

        header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");  

$param =  Request::instance()->param();  

$this->param = $param;  

    }  

}  

前端调用登录接口: this.axios.post('http://test.testphp.com/index.php/base/login',{user:'', password:''})。

(可在webpack.base.conf.js文件下可定义接口:http://test.testphp.com/index.php/)

二、同域

后端配置同上,公共配置器中的header配置注释。将前端的dist文件下的所有文件(包含.htaccess),放在php文件夹下。将后端index控制器的index方法的路径重定向php下的index.html文件:

namespace app\index\controller;  

use think\Controller;  

class Index extends Controller  

{  

    public function index() {  

$this->redirect('/index.html');  

    }  

}  

前端调用登录接口: this.axios.post('/index.php/base/login',{user:'', password:''})

转自:https://blog.csdn.net/qq_35465132/article/details/78986675

Thinkphp5项目在nginx服务器部署

1,切换到nginx的配置目录,找到nginx.conf文件

    cd /usr/local/nginx/conf

   vim nginx.conf

2,如果是单项目部署的话,只需要在nginx.conf文件里面加上以下

server{

        listen 80;

        #域名,本地测试可以使用127.0.0.1或localhost

        server_name www.zhangc.cn;

        # php项目根目录

        root/home/data-www/blog;

        location/{

                #定义首页索引文件的名称

                index index.php index.html index.htm;

               #影藏入口文件

               if(-f$request_filename/index.html){

                            rewrite(.*)$1/index.html break;

                }

                if(-f$request_filename/index.php){

                            rewrite(.*)$1/index.php;

                }

                if(!-f$request_filename){

                            rewrite(.*)/index.php;

                }

                try_files$uri$uri//index.php?$query_string;

        }

        # PHP脚本请求全部转发到 FastCGI处理.使用FastCGI协议默认配置.

        # Fastcgi服务器和程序(PHP)沟通的协议

        .location~.*\.php${

                #设置监听端口

                fastcgi_pass 127.0.0.1:9000;

                #设置nginx的默认首页文件

                fastcgi_index index.php;

                #设置脚本文件请求的路径

                fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;

                #引入fastcgi的配置文件

                include fastcgi_params;

               fastcgi_split_path_info ^(.+?\.php)(/.*)$;

                set$path_info$fastcgi_path_info;

                fastcgi_param PATH_INFO$path_info;

                try_files$fastcgi_script_name=404;

        }

}

3,如果多项目部署,就需要配置vhost

第一步:编辑nginx.conf文件,在最后加上   include  vhost/*.conf;

第二步:进入vhost文件夹,创建  域名.conf  文件,如创建一个:quanma.meyat.com.conf

第三步:编辑quanma.meyat.com.conf文件,内容如下:

        server

        {

                listen 80;

                server_name quanma.meyat.com;

         index index.html index.htm index.php default.html default.htm default.php;

                root/data/wwwroot/default/quanma/public/;

                #error_page 404/404.html;

                location/{

                        index index.html index.php;

                        if(-f$request_filename/index.html){

                                rewrite(.*)$1/index.html break;

                        }

                        if(-f$request_filename/index.php){

                                rewrite(.*)$1/index.php;

                        }

                        if(!-f$request_filename){

                                rewrite(.*)/index.php;

                        }

                        try_files$uri$uri//index.php?$query_string;

                }

                location~ [^/]\.php(/|$)

                {

                        # comment try_files$uri=404; to enable pathinfo

                        #try_files$uri=404;

                        fastcgi_pass 127.0.0.1:9000;

                        fastcgi_index index.php;

                        include fastcgi_params;

                        fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;

                        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

                        set$path_info$fastcgi_path_info;

                        fastcgi_param PATH_INFO$path_info;

                        try_files$fastcgi_script_name=404;

                        #include fastcgi.conf;

                        #include pathinfo.conf;

            }

            location~.*\.(gif|jpg|jpeg|png|bmp|swf)$

            {

                    expires 30d;

            }

            location~.*\.(js|css)?$

            {

                    expires 12h;

            }

            # Disallow access to.ht,.svn,.bzr,.git,.hg,.cvs directories

            location~/\.(ht|svn|bzr|git|hg|cvs){

                    deny all;

            }

            #access_log/date/nginx/bmp.com.conf/access.log main;

}

php项目如何部署在服务器上

一、阿里ECS服务器配置

1.因为线上已经有几个站点了.所以要配置ngnix多站点

2.阿里云ecs目录结构,ngxin在/etc/nginx/目录下,配置的地方主要是nginx.config文件。或者在conf.d新建一个配置文件然后在include到nginx.config文件中

3.nginx.config新建站点信息

server{

listen 80;

server_name www.你的域名.com;

root站点的相对路径;

index index.php index.html index.htm;

#charset koi8-r;

#access_log/var/log/nginx/host.access.log main;

# Load configuration files for the default server block.

include/etc/nginx/default.d/*.conf;

location/{

#try_files$uri$uri//index.php;

root/opt/www/pcweb/ytyy_pc;

index index.php index.html index.htm; if(!-e$request_filename){ rewrite ^(.*)$/index.php?s=$1 last; break;}} url重写(可以没有)

# redirect server error pages to the static page/40x.html

#

error_page 404/404.html; 40错误页面配置

location=/40x.html{

}

# redirect server error pages to the static page/50x.html

#

error_page 500 502 503 504/50x.html; 50错误页面配置

location=/50x.html{

}

location~ \.php${

root站点相对路径;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;

include fastcgi_params;

}

location~/\.ht{

deny all;

}

}

配置文件的基本内容如上;

配置完成后测试配置文件是否正确

这样配置就可以使用了

然后重启nginx服务器

这样nginx配置就结束了可以使用了。吧站点文件放到对应的目录下面。我直接git clone过去的。

二.thinkphp项目文件转移

本来以为上传完就结束了。上传上去碰到的第一个问题就是访问页面报错,页面被电信的114页面劫持了。。。麻蛋看不到报错

万能百度大法

解决方法1.internet高级选项->隐私->站点新加阻止站点

解决方法2:控制面板->网络和internet->本地连接->属性->ipv4使用如下ip

终于搞定可以看到报错页面了。。。。。。麻蛋。再次开启万能百度大法

得到最终结论是文件目录权限引起的。thinkphp的runtime目录没有写入权限。。thinkphp文件上传到阿里的好像都有这个问题。解决问题很简单

进入到项目文件目录

直接跟文件最高权限

chmod-R 777 [目录]//linux修改文件权限

关于thinkphp部署到服务器,php项目如何部署在服务器上的介绍到此结束,希望对大家有所帮助。

如何登录阿里云服务器,怎么进入阿里云服务器设计数据库,简述数据库设计过程