首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

阿里雲 ECS 從零搭建 PHP 網站:環境配置、代碼部署、域名解析全流程

     編輯:程式設計綜合問答

剛購買阿里雲 ECS(雲服務器)和域名,想部署 PHP 專案(如 ThinkPHP、Laravel、WordPress 或自寫代碼)。本文提供**從建立實例到網站上線**的標準化操作手冊,適合初學者按步驟執行。

前置準備

  • 阿里雲帳號、已購買 ECS(建議 2核4G+、Ubuntu 22.04 / CentOS 7.9 / Alibaba Cloud Linux 3)
  • 已購買域名並完成實名認證
  • 本地電腦安裝 SSH 工具(Windows:PowerShell / Tabby / Xshell;Mac/Linux:Terminal)

步驟 1:ECS 基礎配置

  1. 安全組放行端口:控制台 → 網絡與安全 → 安全組 → 配置規則 → 入方向放行 22 (SSH)、80 (HTTP)、443 (HTTPS)、3306 (MySQL 可選)、8888 (寶塔面板可選)。
  2. 設定 root 密碼或 SSH 金鑰:實例詳情 → 重置實例密碼 / 綁定金鑰對。
  3. 彈性公網 IP:若非固定公網 IP,綁定 EIP。

步驟 2:遠程登入與環境安裝(推薦:寶塔面板 / 手動編譯 / Docker)

方案 A:寶塔面板(圖形化、最適合新手)

# 1. SSH 登入
ssh root@你的公網IP

# 2. 一鍵安裝寶塔(官網最新指令)
# Ubuntu/Deepin
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
# CentOS/Alibaba Cloud Linux
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh

# 3. 瀏覽器訪問 https://IP:8888,按提示綁定寶塔賬號、安裝 LNMP(Nginx + MySQL + PHP)
# 建議:Nginx 1.24、MySQL 8.0、PHP 8.1/8.2、Pure-FTPd、phpMyAdmin

方案 B:手動安裝 LNMP(生產環境推薦,可控性高)

# Ubuntu 22.04 範例
apt update && apt upgrade -y
apt install -y nginx mysql-server php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd php8.1-bcmath

# 配置 Nginx 虛擬主機
cat > /etc/nginx/sites-available/mysite <<'EOF'
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/mysite/public;  # Laravel/ThinkPHP 指向 public
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF
ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

# MySQL 安全初始化
mysql_secure_installation
# 建立資料庫/用戶
mysql -u root -p -e "CREATE DATABASE mysite CHARSET utf8mb4; CREATE USER 'mysite'@'%' IDENTIFIED BY 'StrongPass123!'; GRANT ALL ON mysite.* TO 'mysite'@'%'; FLUSH PRIVILEGES;"

方案 C:Docker Compose(微服務、遷移友好)

# docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports: ["80:80", "443:443"]
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./www:/var/www/html
  php:
    image: php:8.2-fpm-alpine
    volumes:
      - ./www:/var/www/html
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: mysite
      MYSQL_USER: mysite
      MYSQL_PASSWORD: userpass
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data:

步驟 3:代碼部署

方式適用場景操作
寶塔面板「網站」→「根目錄」上傳新手、小項目壓縮代碼為 zip → 面板文件管理上傳解壓 → 設置運行目錄為 public
SCP / SFTP(FileZilla、WinSCP、scp 命令)手動環境、CI/CD 前置`scp -r ./dist root@IP:/var/www/mysite`
Git Clone + Composer Install團隊協作、版本控制服務器安裝 Git、Composer → `git clone ... && composer install --no-dev`
CI/CD(GitHub Actions / GitLab CI / 寶塔一鍵部署)自動化發布配置 Deploy Key、編寫 workflow yaml

步驟 4:域名解析與 SSL

  1. 阿里雲控制台 → 域名 → 解析設置 → 新增記錄:
    • 類型 A,主機記錄 `@`,記錄值 = ECS 公網 IP
    • 類型 A,主機記錄 `www`,記錄值 = ECS 公網 IP
  2. 等待生效(通常幾分鐘),瀏覽器訪問 `https://yourdomain.com` 驗證。
  3. 申請免費 SSL:寶塔面板 → 網站 → SSL → Let's Encrypt 一鍵申請 → 強制 HTTPS;或手動 `certbot --nginx -d yourdomain.com -d www.yourdomain.com`。

步驟 5:常見坑點與驗證清單

  • ✅ `php-fpm` 與 Nginx `fastcgi_pass` 路徑一致(`/run/php/php8.1-fpm.sock` vs `127.0.0.1:9000`)
  • ✅ 儲存目錄權限:`chown -R www-data:www-data /var/www/mysite && chmod -R 755 /var/www/mysite && chmod -R 775 /var/www/mysite/storage /var/www/mysite/bootstrap/cache` (Laravel)
  • ✅ `.env` / 配置檔修改:`APP_URL=https://yourdomain.com`、`DB_HOST=127.0.0.1`、`DB_DATABASE=mysite` 等
  • ✅ 防火牆:`ufw allow 80,443/tcp` 或 `firewall-cmd --add-service={http,https} --permanent`
  • ✅ 定時任務:`crontab -e` 加入 `* * * * * cd /var/www/mysite && php artisan schedule:run >> /dev/null 2>&1` (Laravel)

參考資源

按上述流程操作,30 分鐘內即可將 PHP 專案部署至阿里雲 ECS 並通過域名訪問。遇到具體報錯,查看 Nginx 錯誤日誌(`/var/log/nginx/error.log`)與 PHP-FPM 日誌(`/var/log/php8.1-fpm.log`)即可定位。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved