服务器其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 服务器其它 > 阿里云ECS服务器搭建ThinkPHP

阿里云ECS服务器轻松搭建ThinkPHP环境

作者:蓝黑2020

本文指导在阿里云ECS CentOS 7.9上部署ThinkPHP框架,涉及安装PHP、Composer、Apache,配置虚拟主机解决URL问题及目录权限设置,确保项目正常运行,感兴趣的朋友跟随小编一起看看吧

环境

步骤

本文使用的是CentOS操作系统,因为阿里云官方文档上说:

搭建ThinkPHP框架时,已有ECS实例必须满足以下条件:

安装PHP

安装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: Jun  4 2024 15:19:49) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies

安装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 version 2.8.11 2025-08-21 11:29:39
PHP version 8.0.30 (/usr/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.

创建ThinkPHP项目

如果不用Apache,则可以在任意目录创建ThinkPHP项目。

如果要使用Apache,最简单的办法是直接在 /var/www/html (Apache的网站根目录)目录下创建项目。

首先安装Apache。可参见我另一篇文档: https://www.jb51.net/server/348183pqc.htm

注意:在下面的操作前,先看一下 /var/www/html 的属性:

$ ll -d /var/www/html
drwxrwsr-x 2 root apache 4096 Jun  3  2024 /var/www/html

确保group是 apache

我先安装的Apache,然后安装的PHP和composer,不知道什么原因, /var/www/html 目录的group又变回成了 root 。我只好把目录的权限重新设置了一遍。

/var/www/html 目录下,运行:

composer create-project topthink/think aaa

其中 aaa 是项目名称,可任意命名。

创建成功后,会多出 aaa 目录,即项目的根目录。

查看项目结构(只列出两级子目录):

$ tree -L 2
.
├── app
│   ├── AppService.php
│   ├── BaseController.php
│   ├── common.php
│   ├── controller
│   ├── event.php
│   ├── ExceptionHandle.php
│   ├── middleware.php
│   ├── provider.php
│   ├── Request.php
│   └── service.php
├── composer.json
├── composer.lock
├── config
│   ├── app.php
│   ├── cache.php
│   ├── console.php
│   ├── cookie.php
│   ├── database.php
│   ├── filesystem.php
│   ├── lang.php
│   ├── log.php
│   ├── middleware.php
│   ├── route.php
│   ├── session.php
│   ├── trace.php
│   └── view.php
├── extend
├── LICENSE.txt
├── public
│   ├── favicon.ico
│   ├── index.php
│   ├── robots.txt
│   ├── router.php
│   └── static
├── README.md
├── route
│   └── app.php
├── runtime
├── think
├── vendor
│   ├── autoload.php
│   ├── bin
│   ├── composer
│   ├── league
│   ├── psr
│   ├── services.php
│   ├── symfony
│   └── topthink
└── view
    └── README.md
16 directories, 35 files

注:ThinkPHP的安装配置,参见我另一篇文档: https://blog.csdn.net/duke_ding2/article/details/150351146

验证

ThinkPHP内置服务器

在项目根目录下,运行:

php think run

打开8000端口:

sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

在浏览器里访问 http://<公网IP>:8000

Apache服务器

Apache默认使用80端口。打开80端口:

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

前面提到,可以把ThinkPHP项目部署在 /var/www/html/aaa ,其中,Apache服务器的网站根目录是 /var/www/html ,因此,浏览器访问地址是 http://<公网IP>/aaa/public

注:ThinkPHP的入口文件是 public/index.php ,其中 index.php 可以省略。

如果看到的是PHP文件的源码( index.php ),可能是因为 php-fpm 服务没有启动。

检查 php-fpm 服务状态:

sudo systemctl status php-fpm

如果尚未启动,则启动它:

sudo systemctl start php-fpm

并将其加入开机启动:

sudo systemctl enable php-fpm

重启Apache服务:

sudo systemctl restart httpd

刷新页面,现在就OK了。

但是,目前还有两个个问题。

解决办法:使用虚拟主机,使得 http://<ip> 直接指向 /var/www/html/aaa/public

在Apache的主配置文件( /etc/httpd/conf.d/httpd.conf )里,有如下内容:

IncludeOptional conf.d/*.conf

因此,我们可以创建一个单独的配置文件 aaa.conf ,以免混淆。

/etc/httpd/conf.d 目录下创建文件 aaa.conf (需要sudo权限),内容如下:

<VirtualHost *:80>
    # 设置管理员邮箱,可选
    ServerAdmin webmaster@localhost
    # !!! 核心配置:将文档根目录设置为ThinkPHP的public目录 !!!
    DocumentRoot "/var/www/html/aaa/public"
    # 设置服务器域名,如果没有域名,可以用IP或留空
    ServerName <公网IP>
    # 定义对文档根目录的访问权限
    <Directory "/var/www/html/aaa/public">
        # 允许覆盖Apache配置(.htaccess文件生效所需)
        AllowOverride All
        # 访问权限控制
        Require all granted
        # 可选:设置目录索引文件,index.php优先于index.html
        DirectoryIndex index.php index.html index.htm
    </Directory>
    # 错误日志和访问日志路径,方便排查问题
    ErrorLog /var/log/httpd/aaa_error.log
    CustomLog /var/log/httpd/aaa_access.log combined
    # 确保Apache能正确处理PHP文件(如果全局已配置则可省略)
    <FilesMatch \.php$>
        # SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

注释事项:

修改配置后,要重启php-fpm和httpd服务:

sudo systemctl restart php-fpm
sudo systemctl restart httpd

现在,只需访问 http://<公网IP>

访问其它地址,会报错:

参考资料

到此这篇关于阿里云ECS服务器轻松搭建ThinkPHP环境的文章就介绍到这了,更多相关阿里云ECS服务器搭建ThinkPHP内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文