如何在AWS EC2上部署可调用Python后端的PHP脚本(Windows环境操作问询)
前置准备:创建符合要求的EC2实例
- 登录AWS控制台进入EC2面板,选择启动实例
- 操作系统推荐选择Ubuntu Server,对新手更友好,环境兼容性强
- 实例类型选择符合免费 tier 要求的
t2.micro即可满足测试需求 - 密钥对创建后务必保存好
.pem格式的私钥文件,Windows本地如果用PuTTY连接需要提前将.pem转换为.ppk格式 - 安全组配置放开22端口(SSH远程连接)、80端口(HTTP访问),测试阶段来源可临时设为
0.0.0.0/0,生产环境再收紧到指定IP - 存储默认30G足够普通测试使用,确认配置后启动实例即可
本地Windows连接EC2实例
- 打开Windows Terminal或者PuTTY,用SSH命令连接,Ubuntu实例默认用户名是
ubuntu,命令为:ssh -i "你本地保存的密钥文件路径.pem" ubuntu@你的EC2实例公网IP - 首次连接提示确认指纹时输入
yes即可完成连接
安装运行环境(Web服务+PHP+Python)
- 先更新系统包索引
sudo apt update && sudo apt upgrade -y - 安装Apache2作为Web服务器
sudo apt install apache2 -y - 安装PHP及适配Apache的扩展
sudo apt install php libapache2-mod-php php-cli -y - 确认Python环境,Ubuntu默认已预装Python3,执行以下命令验证版本,无返回则手动安装
验证命令:python3 --version
手动安装命令:sudo apt install python3 python3-pip -y - 测试基础环境是否正常:新建PHP信息文件
执行命令:sudo nano /var/www/html/info.php
文件内写入内容:<?php phpinfo(); ?>
保存退出后,浏览器访问http://你的EC2公网IP/info.php,能正常显示PHP信息页即为配置成功
配置PHP调用Python的权限
- 先修改PHP配置文件放开系统命令执行限制,PHP版本以8.1为例,路径对应调整即可
执行命令:sudo nano /etc/php/8.1/apache2/php.ini
找到disable_functions配置项,删掉列表里的exec、shell_exec、system你需要用到的执行函数,保存退出 - 重启Apache让配置生效:
sudo systemctl restart apache2 - 给Web运行目录授权,Apache默认运行用户为
www-data,执行命令:sudo chown -R www-data:www-data /var/www/html/
测试PHP调用Python功能
- 新建测试用Python脚本:
sudo nano /var/www/html/test.py
写入测试内容:
保存退出后给脚本加执行权限:print("Hello from Python!")sudo chmod +x /var/www/html/test.py - 新建调用Python的PHP脚本:
sudo nano /var/www/html/run.php
写入测试内容,注意所有路径用绝对路径,避免环境变量问题:<?php // 先执行`which python3`拿到你实例里的Python3绝对路径,Ubuntu默认是/usr/bin/python3 $pythonPath = '/usr/bin/python3'; $scriptPath = '/var/www/html/test.py'; // 2>&1会把错误信息也合并到输出里,方便排查问题 $output = shell_exec("$pythonPath $scriptPath 2>&1"); echo "Python脚本执行结果:<br>"; echo $output; ?> - 浏览器访问
http://你的EC2公网IP/run.php,正常输出Hello from Python!即为配置完成
补充说明
- 安全提示:生产环境不要随意放开命令执行函数,严格校验所有用户输入避免命令注入漏洞,Web目录权限不要设置为777,遵循最小权限原则
- 如果需要Python脚本在后端异步执行,不想让PHP等待返回,可以在命令末尾加后台运行标记:
shell_exec("$pythonPath $scriptPath > /dev/null 2>&1 &")
内容的提问来源于stack exchange,提问作者newcoder
相关产品推荐
相关产品推荐

