阿里云ECS服務(wù)器輕松搭建ThinkPHP環(huán)境
環(huán)境
- 阿里云ECS服務(wù)器(CentOS 7.9)
步驟
本文使用的是CentOS操作系統(tǒng),因為阿里云官方文檔上說:
搭建ThinkPHP框架時,已有ECS實例必須滿足以下條件:
- 操作系統(tǒng)必須為Alibaba Cloud Linux 3/2、CentOS 7.x。
- …
安裝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.
創(chuàng)建ThinkPHP項目
如果不用Apache,則可以在任意目錄創(chuàng)建ThinkPHP項目。
如果要使用Apache,最簡單的辦法是直接在 /var/www/html (Apache的網(wǎng)站根目錄)目錄下創(chuàng)建項目。
首先安裝Apache??蓞⒁娢伊硪黄臋n: http://www.dhdzp.com/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 。我只好把目錄的權(quán)限重新設(shè)置了一遍。
在 /var/www/html 目錄下,運行:
composer create-project topthink/think aaa
其中 aaa 是項目名稱,可任意命名。
創(chuàng)建成功后,會多出 aaa 目錄,即項目的根目錄。
查看項目結(jié)構(gòu)(只列出兩級子目錄):
$ 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內(nèi)置服務(wù)器
在項目根目錄下,運行:
php think run
打開8000端口:
sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
在瀏覽器里訪問 http://<公網(wǎng)IP>:8000 :

Apache服務(wù)器
Apache默認使用80端口。打開80端口:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
前面提到,可以把ThinkPHP項目部署在 /var/www/html/aaa ,其中,Apache服務(wù)器的網(wǎng)站根目錄是 /var/www/html ,因此,瀏覽器訪問地址是 http://<公網(wǎng)IP>/aaa/public 。
注:ThinkPHP的入口文件是 public/index.php ,其中 index.php 可以省略。
如果看到的是PHP文件的源碼( index.php ),可能是因為 php-fpm 服務(wù)沒有啟動。
檢查 php-fpm 服務(wù)狀態(tài):
sudo systemctl status php-fpm
如果尚未啟動,則啟動它:
sudo systemctl start php-fpm
并將其加入開機啟動:
sudo systemctl enable php-fpm
重啟Apache服務(wù):
sudo systemctl restart httpd
刷新頁面,現(xiàn)在就OK了。

但是,目前還有兩個個問題。
- 問題1:
http://<公網(wǎng)IP>/aaa/public這樣的URL既不美觀,也不安全 - 問題2:當(dāng)訪問其它目錄時,比如
http://<公網(wǎng)IP>/aaa,會直接列出目錄結(jié)構(gòu):

解決辦法:使用虛擬主機,使得 http://<ip> 直接指向 /var/www/html/aaa/public 。
在Apache的主配置文件( /etc/httpd/conf.d/httpd.conf )里,有如下內(nèi)容:
IncludeOptional conf.d/*.conf
因此,我們可以創(chuàng)建一個單獨的配置文件 aaa.conf ,以免混淆。
在 /etc/httpd/conf.d 目錄下創(chuàng)建文件 aaa.conf (需要sudo權(quán)限),內(nèi)容如下:
<VirtualHost *:80>
# 設(shè)置管理員郵箱,可選
ServerAdmin webmaster@localhost
# !!! 核心配置:將文檔根目錄設(shè)置為ThinkPHP的public目錄 !!!
DocumentRoot "/var/www/html/aaa/public"
# 設(shè)置服務(wù)器域名,如果沒有域名,可以用IP或留空
ServerName <公網(wǎng)IP>
# 定義對文檔根目錄的訪問權(quán)限
<Directory "/var/www/html/aaa/public">
# 允許覆蓋Apache配置(.htaccess文件生效所需)
AllowOverride All
# 訪問權(quán)限控制
Require all granted
# 可選:設(shè)置目錄索引文件,index.php優(yōu)先于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>注釋事項:
ServerName:設(shè)置為域名(如果有的話)或者公網(wǎng)IPSetHandler:根據(jù)服務(wù)器上PHP-FPM的實際配置,替換成正確的路徑,具體可通過sudo grep -r 'listen =' /etc/php-fpm.d/www.conf來查看。此處如果配置不正確的話,訪問頁面會報錯“Service Unavailable”:

修改配置后,要重啟php-fpm和httpd服務(wù):
sudo systemctl restart php-fpm sudo systemctl restart httpd
現(xiàn)在,只需訪問 http://<公網(wǎng)IP> :

訪問其它地址,會報錯:

參考資料
https://help.aliyun.com/zh/ecs/use-cases/building-thinkphp-frameworkhttps://help.aliyun.com/zh/ecs/getting-started/use-the-ecs-instance-in-the-consolehttps://help.aliyun.com/zh/ecs/use-cases/build-a-lamp-stack-on-a-centos-7-instancehttps://blog.csdn.net/duke_ding2/article/details/150351146
到此這篇關(guān)于阿里云ECS服務(wù)器輕松搭建ThinkPHP環(huán)境的文章就介紹到這了,更多相關(guān)阿里云ECS服務(wù)器搭建ThinkPHP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
云服務(wù)器+ASF實現(xiàn)全天掛卡掛時長的方法
我的服務(wù)器部署在騰訊云上,系統(tǒng)為Ubuntu?amd64,下面的wget使用了萌歪大大的GH代理,所以可以直接一條一條地輸入,下面通過本文給大家分享云服務(wù)器+ASF實現(xiàn)全天掛卡掛時長的方法,感興趣的朋友跟隨小編一起看看吧2024-05-05
兩臺服務(wù)器之間無密碼傳輸數(shù)據(jù)和操作的方法
這篇文章主要介紹了兩臺服務(wù)器之間無密碼傳輸數(shù)據(jù)和操作的方法,需要的朋友可以參考下2017-04-04
集群運維自動化工具ansible之使用playbook安裝zabbix客戶端
Zabbix客戶端的安裝配置:Zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運營;本文講述的是使用playbook安裝zabbix客戶端。2014-07-07
本地部署Jellyfin影音服務(wù)器并實現(xiàn)在公網(wǎng)訪問的過程
Jellyfin作為相對知名的影音服務(wù)器,在NAS平臺廣受歡迎,但筆者連韭菜都不愿意當(dāng),自然沒有NAS這樣的專業(yè)裝備,只有一臺淘汰下來的臺式機,這篇文章主要介紹了本地部署Jellyfin影音服務(wù)器并實現(xiàn)在公網(wǎng)訪問的過程,需要的朋友可以參考下2023-11-11
Windows下實現(xiàn)簡單的libevent服務(wù)器
這篇文章主要介紹了Windows下實現(xiàn)簡單的libevent服務(wù)器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
Cache-control使用Cache-control:private學(xué)習(xí)筆記
網(wǎng)頁緩存由 HTTP消息頭中的Cache-control控制,常見取值有private、no-cache、max-age、must- revalidate等,默認為private2013-02-02
TCP服務(wù)器實現(xiàn)數(shù)據(jù)通信
今天我們要介紹的是使用TCP協(xié)議實現(xiàn)數(shù)據(jù)通信,相比于之前寫的UDP服務(wù)器實現(xiàn)數(shù)據(jù)信,在主體邏輯上并沒有差別,下面,我們具體來看看UDP和TCP在編碼的實現(xiàn)上有什么不同,感興趣的朋友一起看看吧2023-08-08

