本指南將引導您完成在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 儲存庫,請將其複製到您的 Web 根目錄中:
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
Use strong passwords for all services (MySQL, SSH, etc.).
Configure a firewall (e.g., UFW) to restrict incoming traffic:
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
Regularly backup your website and database.
Monitor your server logs for unusual activity:
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
Use version control (Git) for all your code changes.
Implement proper error handling and logging in your PHP application.
Use prepared statements or ORM to prevent SQL injection attacks.
Keep your application dependencies up-to-date and use a dependency manager like Composer for PHP projects.
By following this guide, you should have a fully functional PHP website running on an EC2 instance with Nginx, MySQL, and Git.
Remember to adapt the instructions to your specific needs and always prioritize security in your setup.
以上是在 ECith Nginx、MySQL、PHP 和 Git 上設定 PHP 網站的詳細內容。更多資訊請關注PHP中文網其他相關文章!