You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过EC2 Windows实例PowerShell用户数据安装运行最新Apache与PHP服务器

在EC2 Windows实例的UserData中安装最新版Apache和PHP的PowerShell脚本

以下是补充到你现有UserData中的PowerShell代码,实现自动安装最新版Apache和PHP并完成基础配置:

# 下载并安装最新版Apache(请替换为Apache官方推荐的Windows构建包下载地址)
Invoke-WebRequest -URI "【替换为Apache Windows版最新压缩包下载地址】" -OutFile "c:\Apache24.zip"
Expand-Archive -Path "c:\Apache24.zip" -DestinationPath "c:\" -Force
# 安装Apache服务
& "C:\Apache24\bin\httpd.exe" -k install

# 下载并安装最新版PHP(请替换为PHP官方最新非线程安全版(NTS)压缩包下载地址)
Invoke-WebRequest -URI "【替换为PHP Windows NTS版最新压缩包下载地址】" -OutFile "c:\PHP.zip"
Expand-Archive -Path "c:\PHP.zip" -DestinationPath "c:\PHP" -Force
# 复制并配置php.ini
Copy-Item "c:\PHP\php.ini-development" "c:\PHP\php.ini" -Force
# 启用必要扩展,比如mysqli、curl等(按需调整)
(Get-Content "c:\PHP\php.ini") -replace ';extension=mysqli', 'extension=mysqli' -replace ';extension=curl', 'extension=curl' | Set-Content "c:\PHP\php.ini"

# 配置Apache支持PHP
Add-Content "c:\Apache24\conf\httpd.conf" @"
LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC "c:/PHP"
AddHandler fcgid-script .php
FcgidWrapper "c:/PHP/php-cgi.exe" .php
DirectoryIndex index.php index.html
"@

# 添加环境变量,让系统识别Apache和PHP命令
$envPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
if (-not $envPath.Contains("C:\Apache24\bin")) {
    [Environment]::SetEnvironmentVariable("Path", "$envPath;C:\Apache24\bin;C:\PHP", "Machine")
}

# 启动Apache服务并设置开机自启
Start-Service Apache2.4
Set-Service Apache2.4 -StartupType Automatic

整合后的完整UserData示例

将上述代码插入到你原有<powershell>标签内的New-Item -Path "c:\" -Name "Apache24" -Type "directory"之后:

UserData: !Base64
  'Fn::Join':
    - |+
      <powershell>
        Install-WindowsFeature -name Web-Server -IncludeManagementTools
        Install-WindowsFeature Web-Asp-Net45
        Add-WindowsFeature Web-Http-Redirect
        Add-WindowsFeature Web-Windows-Auth
        Import-Module AWSPowerShell           
        New-Item -Path "c:\codedeploy" -ItemType "directory" -Force
        Invoke-WebRequest -URI https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/codedeploy-agent.msi -OutFile c:\codedeploy\codedeploy-agent.msi
        c:\codedeploy\codedeploy-agent.msi /quiet /l c:\codedeploy\host-agent-install-log.txt 
        New-Item -Path "c:\" -Name "Apache24" -Type "directory"

        # 新增的Apache和PHP安装配置脚本
        Invoke-WebRequest -URI "【替换为Apache Windows版最新压缩包下载地址】" -OutFile "c:\Apache24.zip"
        Expand-Archive -Path "c:\Apache24.zip" -DestinationPath "c:\" -Force
        & "C:\Apache24\bin\httpd.exe" -k install

        Invoke-WebRequest -URI "【替换为PHP Windows NTS版最新压缩包下载地址】" -OutFile "c:\PHP.zip"
        Expand-Archive -Path "c:\PHP.zip" -DestinationPath "c:\PHP" -Force
        Copy-Item "c:\PHP\php.ini-development" "c:\PHP\php.ini" -Force
        (Get-Content "c:\PHP\php.ini") -replace ';extension=mysqli', 'extension=mysqli' -replace ';extension=curl', 'extension=curl' | Set-Content "c:\PHP\php.ini"

        Add-Content "c:\Apache24\conf\httpd.conf" @"
      LoadModule fcgid_module modules/mod_fcgid.so
      FcgidInitialEnv PHPRC "c:/PHP"
      AddHandler fcgid-script .php
      FcgidWrapper "c:/PHP/php-cgi.exe" .php
      DirectoryIndex index.php index.html
      "@

        $envPath = [Environment]::GetEnvironmentVariable("Path", "Machine")
        if (-not $envPath.Contains("C:\Apache24\bin")) {
            [Environment]::SetEnvironmentVariable("Path", "$envPath;C:\Apache24\bin;C:\PHP", "Machine")
        }

        Start-Service Apache2.4
        Set-Service Apache2.4 -StartupType Automatic
      </powershell>

关键说明

  • Apache选择Windows专用构建包,确保包含mod_fcgid模块以支持PHP
  • PHP需选用非线程安全版(NTS),配合mod_fcgid实现稳定运行
  • 可根据业务需求修改php.ini中的扩展启用项,或调整Apache的站点配置
  • 确保EC2实例具备访问外部下载源的网络权限(安全组、NACL规则放行)

内容的提问来源于stack exchange,提问作者Sujal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:05:01