Это руководство проведет вас через процесс настройки веб-сайта PHP на экземпляре Amazon EC2 с использованием Nginx в качестве веб-сервера, 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-инъекций.
Обновляйте зависимости вашего приложения и используйте менеджер зависимостей, например Composer, для проектов PHP.
Следуя этому руководству, у вас должен быть полнофункциональный веб-сайт PHP, работающий на экземпляре EC2 с Nginx, MySQL и Git.
Не забудьте адаптировать инструкции к вашим конкретным потребностям и всегда уделять приоритетное внимание безопасности при настройке.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3