«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Настройка веб-сайта PHP на ECith Nginx, MySQL, PHP и Git

Настройка веб-сайта PHP на ECith Nginx, MySQL, PHP и Git

Опубликовано 25 августа 2024 г.
Просматривать:379

Setting Up a PHP Website on ECith Nginx, MySQL, PHP, and Git

Это руководство проведет вас через процесс настройки веб-сайта PHP на экземпляре Amazon EC2 с использованием Nginx в качестве веб-сервера, MySQL в качестве базы данных, PHP для сценариев на стороне сервера, и Git для контроля версий. Мы рассмотрим все: от первоначальной настройки до устранения распространенных проблем.

Оглавление

  1. Запуск экземпляра EC2
  2. Подключитесь к своему экземпляру EC2
  3. Обновление и обновление системы
  4. Установить Nginx
  5. Установить MySQL
  6. Установить PHP
  7. Установить Git
  8. Настроить Nginx
  9. Настройте каталог своего веб-сайта
  10. Клонируйте свой репозиторий
  11. Установите правильные разрешения
  12. Настроить PHP
  13. Настройка SSL (необязательно, но рекомендуется)
  14. Устранение распространенных проблем
  15. Лучшие практики и соображения безопасности

1. Запустите экземпляр EC2.

  1. Войдите в консоль управления AWS.
  2. Перейдите в EC2 и нажмите «Запустить экземпляр».
  3. Выберите AMI сервера Ubuntu (например, Ubuntu Server 22.04 LTS).
  4. Выберите тип инстанса (t2.micro имеет право на бесплатный уровень).
  5. Настройте детали экземпляра, добавьте хранилище и теги по мере необходимости.
  6. Настройте группу безопасности, чтобы разрешить трафик SSH (порт 22), HTTP (порт 80) и HTTPS (порт 443).
  7. Просмотрите и запустите экземпляр, выбрав или создав пару ключей.

2. Подключитесь к своему экземпляру EC2.

Используйте SSH для подключения к вашему экземпляру:

ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns

Замените /path/to/your-key.pem на путь к файлу вашего ключа, а your-instance-public-dns — на общедоступное DNS-имя вашего экземпляра.

3. Обновите и обновите систему.

После подключения обновите и обновите свою систему:

sudo apt update
sudo apt upgrade -y

4. Установите Nginx

Установить веб-сервер Nginx:

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

Убедитесь, что Nginx работает:

sudo systemctl status nginx

5. Установите MySQL

Установить сервер MySQL:

sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql

Защитите установку MySQL:

sudo mysql_secure_installation

Следуйте инструкциям, чтобы установить пароль root и удалить небезопасные настройки по умолчанию.

6. Установите PHP

Мы установим 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

7. Установите Git

Установите Git для контроля версий:

sudo apt install git -y

Проверьте установку Git:

git --version

8. Настройте Nginx

Создайте новую конфигурацию блока сервера 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

9. Настройте каталог своего веб-сайта

Создайте корневой веб-каталог:

sudo mkdir -p /var/www/your_domain
sudo chown -R $USER:$USER /var/www/your_domain
sudo chmod -R 755 /var/www/your_domain

10. Клонируйте свой репозиторий

Если у вас есть существующий репозиторий 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

11. Установите правильные разрешения

Установите правильные разрешения для ваших веб-файлов:

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

Возможно, вам придется выйти из системы и снова войти в нее, чтобы изменения в группе вступили в силу.

12. Настройте PHP

При необходимости измените настройки 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

13. Настройте SSL (необязательно, но рекомендуется)

Чтобы защитить свой сайт с помощью HTTPS, вы можете использовать Let's Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain

Следуйте инструкциям для настройки SSL.

14. Устранение распространенных проблем

Ошибки отказа в разрешении

Если вы столкнулись с ошибками «Отказано в доступе» в журналах ошибок Nginx:

  1. Проверьте владельца файла:
   ls -l /var/www/your_domain
  1. Убедитесь, что Nginx работает от имени правильного пользователя:
   ps aux | grep nginx
  1. Проверьте конфигурацию Nginx:
   sudo nano /etc/nginx/nginx.conf

Убедитесь, что для пользователя выбран www-data.

Ошибки PHP

Для ошибок, связанных с PHP:

  1. Проверьте логи PHP-FPM:
   sudo tail -f /var/log/php8.1-fpm.log
  1. Убедитесь, что PHP-FPM запущен:
   sudo systemctl status php8.1-fpm
  1. Проверьте существование файла сокета PHP-FPM:
   ls /var/run/php/php8.1-fpm.sock

Проблемы с Git

Если у вас возникли проблемы с разрешениями Git:

  1. Убедитесь, что каталог .git принадлежит вашему пользователю:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
  1. Используйте sudo для операций Git или временно смените владельца:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain
   git pull
   sudo chown -R www-data:www-data /var/www/your_domain

15. Лучшие практики и соображения безопасности

  1. Регулярно обновляйте свою систему и программное обеспечение:
   sudo apt update && sudo apt upgrade -y
  1. Используйте надежные пароли для всех сервисов (MySQL, SSH и т. д.).

  2. Настройте брандмауэр (например, UFW) для ограничения входящего трафика:

   sudo ufw allow OpenSSH
   sudo ufw allow 'Nginx Full'
   sudo ufw enable
  1. Реализуйте Fail2ban для защиты от атак методом перебора:
   sudo apt install fail2ban -y
   sudo systemctl start fail2ban
   sudo systemctl enable fail2ban
  1. Регулярно создавайте резервные копии вашего веб-сайта и базы данных.

  2. Отслеживайте журналы вашего сервера на предмет необычной активности:

   sudo tail -f /var/log/nginx/access.log
   sudo tail -f /var/log/nginx/error.log
  1. Используйте систему контроля версий (Git) для всех изменений кода.

  2. Внедрите правильную обработку ошибок и журналирование в своем PHP-приложении.

  3. Используйте подготовленные операторы или ORM для предотвращения атак с использованием SQL-инъекций.

  4. Обновляйте зависимости вашего приложения и используйте менеджер зависимостей, например Composer, для проектов PHP.

Следуя этому руководству, у вас должен быть полнофункциональный веб-сайт PHP, работающий на экземпляре EC2 с Nginx, MySQL и Git.
Не забудьте адаптировать инструкции к вашим конкретным потребностям и всегда уделять приоритетное внимание безопасности при настройке.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/manojspace/setting-up-a-php-website-on-ec2-with-nginx-mysql-php-and-git-3471?1 При наличии каких-либо нарушений , пожалуйста, свяжитесь с Study_golang @163.comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3