QINGFENG

如何部署 ThinkPHP 应用到 SiteGround

发布于 2024/09/28

本文详细介绍了如何将ThinkPHP应用部署到SiteGround主机上。文章首先简要介绍了ThinkPHP框架和SiteGround主机的特点,然后逐步讲解了部署过程,包括检查服务器环境、上传网站文件、调整目录结构、修改配置文件等关键步骤。对于使用ThinkPHP开发且需要在SiteGround上部署应用的开发者来说,这篇文章提供了实用的操作指南。

简介

什么是 ThinkPHP?

ThinkPHP 是一个开源的 PHP 框架,它遵循 Apache2 开源协议发布。ThinkPHP 以易用性和模块化为设计目标,提供了一个简便、高性能的开发框架来帮助开发者快速地构建动态网站。这个框架支持 MVC(模型-视图-控制器)架构模式,可以使得业务逻辑、数据、界面显示分离,提高代码的可维护性和复用性。

https://www.thinkphp.cn/

什么是 SiteGround?

SiteGround 是一家全球知名的网页托管服务提供商,成立于 2004 年,总部位于保加利亚索菲亚,在美国、英国等多个国家设有办事处。SiteGround 提供一系列的托管服务,包括共享托管、WordPress 托管、云托管、电子邮件托管等,适用于从个人博客到企业级应用程序的不同规模网站。

https://www.siteground.com/

实现步骤

SiteGround 对 WordPress 的支持是极佳的,但对于其他 PHP 框架官方文档没有特别说明,就需要自己研究了。

检查服务器环境

首先创建一个 SiteGround 的网站,注意要选择 Blank Site 而不是它默认提供的 WordPress 等。

创建好以后,在 public_html 目录下创建一个 index.php 文件,输入以下内容:

<?php phpinfo(); ?>

然后访问这个页面,从输出的信息可以看出 SiteGround 使用的是 Apache.

上传网站

打包整个 ThinkPHP 的网站为 Zip 包,然后通过 SiteGround 的 FTP 服务上传到 public_html 目录,右键 "Extract" 解压后把目录文件全部移动到网站根目录。

现在你看到的网站目录应该是这样。

移出 Public 的资源

由于 SiteGround 不像宝塔可以将 ThinkPHP 的 public/ 设置为访问目录,因此我们需要将 public 的静态资源全部移动至根目录,这样能快速解决静态资源访问不到的问题。

注意:

  • 如果你的 ThinkPHP 应用配置了 PATHINFO 访问形式,请确保根目录下存在 .htaccess 文件
  • 修改 "index.php" 里的 vendor 路径
// [ 应用入口文件 ]
namespace think;

// 去除 "../"
require __DIR__ . '/vendor/autoload.php'; 

// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();

$response->send();

$http->end($response);

创建 MySQL 数据库

SiteGround 创建 MySQL 数据库是个坑,因为这是你自己创建的数据库,SiteGround 默认不会给新建的用户绑定数据库的权限,需要手动分配权限。然后把 MySQL 的账号密码填入到 .env

至此,你的网站应该可以跑起来了。