ThinkPHP是一款遵循Apache2开源协议发布的免费、开源、快速、简单、面向对象的轻量级PHP开发框架,旨在支持敏捷Web应用开发和简化企业应用开发。本文介绍如何在Alibaba Cloud Linux 3/2、CentOS 7.x系统的ECS实例中搭建ThinkPHP 8.0框架。
前提条件
本教程适用于正在学习PHP或者已基于ThinkPHP框架进行开发的开发人员。搭建ThinkPHP框架时,已有ECS实例必须满足以下条件:
实例已分配公网IP地址或绑定弹性公网IP(EIP)。
操作系统必须为Alibaba Cloud Linux 3/2、CentOS 7.x。
实例安全组的入方向规则已放行22、8000(ThinkPHP默认端口)、443端口。具体操作,请参见添加安全组规则。
操作步骤
安装PHP 8.0。
说明ThinkPHP 8.0要求PHP版本大于等于8.0。
当ECS实例操作系统为Alibaba Cloud Linux 3时,需安装openssl10依赖包。
sudo yum install -y compat-openssl10
安装PHP。
Alibaba Cloud Linux 3/2
运行以下命令,更新YUM源。
sudo rpm -Uvh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
运行以下命令,启用PHP 8.0仓库。
sudo yum-config-manager --enable remi-php80
运行以下命令,安装PHP。
sudo yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring
CentOS 7.x
更新YUM源。
运行以下命令,安装EPEL源和Remi仓库。
sudo yum install -y epel-release sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
运行以下命令,启用PHP 8.0仓库。
sudo yum-config-manager --enable remi-php80
运行以下命令,安装PHP。
sudo yum install -y php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
运行以下命令,查看PHP版本。
php -v
返回结果如下所示,表示安装成功。
PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.30, Copyright (c) Zend Technologies
安装Composer。
Composer是一个用于PHP项目依赖管理的工具。它允许开发人员定义和管理项目所需的外部依赖关系,并自动处理这些依赖的安装、更新和加载。更多信息,请参见Composer官网。
安装Composer所需依赖。
sudo yum install -y unzip git
安装Composer。
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
查看Composer版本。
composer --version
回显信息类似如下所示时,表示Composer已安装。
安装ThinkPHP。
使用Composer创建一个新的ThinkPHP应用程序。
该命令会在当前目录下创建一个名为
my-thinkphp-app
的目录,并下载ThinkPHP的核心文件和依赖项。composer create-project topthink/think my-thinkphp-app
切换到新创建的ThinkPHP应用程序目录,启动ThinkPHP内置服务器进行开发。
cd my-thinkphp-app php think run
回显信息类似如下所示时,表示ThinkPHP已启动。
在本地浏览器中地址栏输入
http://<ECS实例公网IP地址>:8000
。显示如下所示时,表示ThinkPHP已部署成功。
配置Web服务器(生产环境)。
在生产环境中,您需要使用一个完整的Web服务器,如Apache或Nginx,来部署ThinkPHP应用。您需要正确配置服务器的URL重写规则以确保框架路由正常工作。
Apache(确保开启了mod_rewrite模块)配置示例:
<IfModule mod_rewrite.c> Options +FollowSymlinks -Indexes RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
Nginx配置示例:
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } }