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

Apache服務(wù)器
Apache默認(rèn)使用80端口。打開80端口:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
前面提到,可以把ThinkPHP項(xiàng)目部署在 /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 ),可能是因?yàn)?php-fpm 服務(wù)沒有啟動。
檢查 php-fpm 服務(wù)狀態(tài):
sudo systemctl status php-fpm
如果尚未啟動,則啟動它:
sudo systemctl start php-fpm
并將其加入開機(jī)啟動:
sudo systemctl enable php-fpm
重啟Apache服務(wù):
sudo systemctl restart httpd
刷新頁面,現(xiàn)在就OK了。

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

解決辦法:使用虛擬主機(jī),使得 http://<ip> 直接指向 /var/www/html/aaa/public 。
在Apache的主配置文件( /etc/httpd/conf.d/httpd.conf )里,有如下內(nèi)容:
IncludeOptional conf.d/*.conf
因此,我們可以創(chuàng)建一個(gè)單獨(dú)的配置文件 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>
# 錯(cuò)誤日志和訪問日志路徑,方便排查問題
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>注釋事項(xiàng):
ServerName:設(shè)置為域名(如果有的話)或者公網(wǎng)IPSetHandler:根據(jù)服務(wù)器上PHP-FPM的實(shí)際配置,替換成正確的路徑,具體可通過sudo grep -r 'listen =' /etc/php-fpm.d/www.conf來查看。此處如果配置不正確的話,訪問頁面會報(bào)錯(cuò)“Service Unavailable”:

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

訪問其它地址,會報(bào)錯(cuò):

參考資料
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)文章
Deployment副本無狀態(tài)服務(wù)創(chuàng)建及水平擴(kuò)展
這篇文章主要為大家介紹了Deployment副本無狀態(tài)服務(wù)及水平擴(kuò)展,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
如何快速搭建一個(gè)自己的服務(wù)器的詳細(xì)教程(java環(huán)境)
這篇文章主要介紹了如何快速搭建一個(gè)自己的服務(wù)器的詳細(xì)教程(java環(huán)境),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Manjaro安裝CUDA實(shí)現(xiàn)教程解析
這篇文章主要介紹了Manjaro安裝CUDA實(shí)現(xiàn)教程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
如何解決啟動hadoop集群沒有SecondaryNode和DataNode和NameNode問題
本文提供了Hadoop集群中缺少SecondaryNode、DataNode和NameNode時(shí)的解決方案,包括環(huán)境變量配置、文件刪除和格式化namenode等操作,希望對使用Hadoop的用戶有所幫助2024-10-10
win11安裝wsl報(bào)錯(cuò)之無法解析服務(wù)器的名稱或地址的問題及解決方法
項(xiàng)目開發(fā)中,需要用到wsl,因此根據(jù)wsl官方(WSL安裝教程)命令?wsl --install 進(jìn)行wsl的安裝,本文主要是記錄自己在安裝wsl中遇到的問題"無法解析服務(wù)器的名稱或地址"的解決辦法,感興趣的朋友一起看看吧2024-04-04
寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯(cuò)誤的解決方法
寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯(cuò)誤的解決方法,經(jīng)常會出現(xiàn)數(shù)據(jù)庫管理phpMyadmin打不開,或則出現(xiàn)500內(nèi)部服務(wù)器錯(cuò)誤,本文介紹如果出現(xiàn)這個(gè)問題該如何解決2023-08-08
服務(wù)器遠(yuǎn)程超出最大連接數(shù)的原因及解決
服務(wù)器遠(yuǎn)程超出最大連接數(shù)的原因是沒有注銷退出有可能導(dǎo)致遠(yuǎn)程連接的進(jìn)程死掉,重啟服務(wù)器即可2014-05-05
服務(wù)器封UDP和封國外是什么意思? 封UDP和封海外云服務(wù)器選擇!
很多人在租用高防云服務(wù)器的時(shí)候,都會看到關(guān)于防御會有介紹是否封國外、封UDP,封海外就是封住海外的攻擊,而封UDP則使UDP攻擊無效,所以防御上面封UDP的機(jī)器比不封UDP的要強(qiáng)一些,下面給大家簡單介紹一下封UDP和封國外是什么意思,有什么用2023-05-05
詳解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件
這篇文章主要介紹了詳解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11

