本指南将引导您完成在 Amazon EC2 实例上设置 PHP 网站的过程,使用 Nginx 作为 Web 服务器,MySQL 作为数据库,PHP 用于服务器端脚本,和 Git 用于版本控制。我们将涵盖从初始设置到常见问题故障排除的所有内容。
使用 SSH 连接到您的实例:
ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns
将 /path/to/your-key.pem 替换为您的密钥文件的路径,并将 your-instance-public-dns 替换为您实例的公共 DNS 名称。
连接后,更新和升级您的系统:
sudo apt update sudo apt upgrade -y
安装Nginx网络服务器:
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
验证 Nginx 是否正在运行:
sudo systemctl status nginx
安装MySQL服务器:
sudo apt install mysql-server -y sudo systemctl start mysql sudo systemctl enable mysql
保护您的 MySQL 安装:
sudo mysql_secure_installation
按照提示设置 root 密码并删除不安全的默认设置。
我们将安装 PHP 8.1(或 Ubuntu 存储库中可用的最新稳定版本):
sudo apt install php8.1-fpm php8.1-mysql php8.1-common php8.1-cli php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip -y
验证 PHP 安装:
php -v
安装Git进行版本控制:
sudo apt install git -y
验证 Git 安装:
git --version
创建一个新的Nginx服务器块配置:
sudo nano /etc/nginx/sites-available/your_domain
添加以下配置(将your_domain替换为您的实际域名或IP地址):
server { listen 80; server_name your_domain www.your_domain; root /var/www/your_domain; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } }
启用新站点:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
测试 Nginx 配置:
sudo nginx -t
如果测试成功,则重新加载Nginx:
sudo systemctl reload nginx
创建网站根目录:
sudo mkdir -p /var/www/your_domain sudo chown -R $USER:$USER /var/www/your_domain sudo chmod -R 755 /var/www/your_domain
如果您的网站已有 Git 存储库,请将其克隆到您的网站根目录中:
cd /var/www/your_domain git clone https://github.com/your-username/your-repo.git .
将 https://github.com/your-username/your-repo.git 替换为您的实际存储库 URL。
如果您要启动一个新项目,请初始化一个新的 Git 存储库:
cd /var/www/your_domain git init
为您的网络文件设置正确的权限:
sudo chown -R www-data:www-data /var/www/your_domain sudo find /var/www/your_domain -type d -exec chmod 755 {} \; sudo find /var/www/your_domain -type f -exec chmod 644 {} \;
允许Ubuntu用户管理文件:
sudo usermod -a -G www-data ubuntu sudo chmod g s /var/www/your_domain
您可能需要注销并重新登录才能使组更改生效。
根据需要调整 PHP 设置:
sudo nano /etc/php/8.1/fpm/php.ini
要调整的常用设置:
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 memory_limit = 256M
更改后,重新启动PHP-FPM:
sudo systemctl restart php8.1-fpm
要使用 HTTPS 保护您的网站,您可以使用 Let's Encrypt:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain -d www.your_domain
按照提示设置 SSL。
如果您在 Nginx 错误日志中遇到“权限被拒绝”错误:
ls -l /var/www/your_domain
ps aux | grep nginx
sudo nano /etc/nginx/nginx.conf
确保用户设置为 www-data。
对于 PHP 相关错误:
sudo tail -f /var/log/php8.1-fpm.log
sudo systemctl status php8.1-fpm
ls /var/run/php/php8.1-fpm.sock
如果遇到Git权限问题:
sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
sudo chown -R ubuntu:ubuntu /var/www/your_domain git pull sudo chown -R www-data:www-data /var/www/your_domain
sudo apt update && sudo apt upgrade -y
对所有服务(MySQL、SSH 等)使用强密码。
配置防火墙(例如 UFW)以限制传入流量:
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
sudo apt install fail2ban -y sudo systemctl start fail2ban sudo systemctl enable fail2ban
定期备份您的网站和数据库。
监视服务器日志是否存在异常活动:
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
使用版本控制 (Git) 进行所有代码更改。
在您的 PHP 应用程序中实施正确的错误处理和日志记录。
使用准备好的语句或ORM来防止SQL注入攻击。
使您的应用程序依赖项保持最新,并使用依赖项管理器(例如 PHP 项目的 Composer)。
通过遵循本指南,您应该拥有一个在具有 Nginx、MySQL 和 Git 的 EC2 实例上运行的功能齐全的 PHP 网站。
请记住根据您的具体需求调整说明,并始终优先考虑设置中的安全性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3