Установка веб-серверов Nginx и Apache.
Итоговая архитектура для разработки предполагается такая:
Internet
↓
┌─────────────────────┐
│ Nginx │ ← порт 8081 (вход)
└─────────────────────┘
↓ ↓
WordPress .NET apps (опционально)
(Apache) (Kestrel)
↓
MariaDB
PostgreSQL
🥇 Роли компонентов
🌐 Nginx (front door)
- SSL (HTTPS)
- маршрутизация
- защита
- статика
🟦 Apache (только WordPress)
Apache HTTP Server
- PHP обработка
- WordPress
- .htaccess
🚀 ШАГ 1 — установка пакетов
В Ubuntu:
sudo apt update
sudo apt install -y nginx
sudo apt install -y nginx
sudo apt install -y apache2
sudo apt install -y mariadb-server
sudo apt install -y postgresql
⚙️ ШАГ 2 — порты (ВАЖНО)
Apache уводим с 80:
sudo nano /etc/apache2/ports.conf
Примерное содержимое:
Listen 8082
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
И в site config:
sudo nano /etc/apache2/sites-available/000-default.conf
Примерное содержимое с учетом проекта на wordpress:
<VirtualHost *:8082>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /portfolio /mnt/d/Soft/Freelance/Wordpress/portfolio/site
<Directory /mnt/d/Soft/Freelance/Wordpress/portfolio/site>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Устанавливаем
sudo apt install -y php php-mysql libapache2-mod-php
Эта установка запустит триггеры, один из которых запустит Apache, теперь он будет на правильном порту, если запуска Apache не произойдет, перезапустим его вручную:
sudo systemctl restart apache2
🌐 ШАГ 3 — WordPress (Apache backend)
Документа root:
/var/www/html
Но выше в конфиге был определен алиас "portfolio", это папка, которая подмонтирована из windows и в ней установлен wordpress.
ШАГ 4 — включить mod_rewrite (нужно для WordPress)
sudo a2enmod rewrite
ШАГ 5 — права доступа (очень важно в WSL)
Иногда Apache не может читать Windows-диск:
sudo chmod -R 755 /mnt/d/Soft/Freelance/Wordpress/portfolio/site
База:
sudo mysql
CREATE USER 'dev'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%';
FLUSH PRIVILEGES;
Пользователь может иметь доступ к базе отвсюду.
Создайте базу данных и восстановите в нее дамп из вашего проекта на Wordpress.
🟨 ШАГ 6 — MariaDB
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl start mariadb
Проброс порта 3306 наружу (в windows)
Пробрасываем на порт 3307, таким образом в windows может быть экземпляр базы с портом по умолчанию, а к базе внутри WSL можно будет иметь доступ из таких приложений как DBeaver или MySQL Workbench.
При старте WSL он запускается в собственной сети, IP-адрес может меняться и лучше сделать стартовый скрипт, который будет это учитывать и пробрасывать порт наружу.
🟪 ШАГ 7 — PostgreSQL
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl start postgresql
🌐 ШАГ 8 — Nginx (главный вход)
Конфиг:
sudo nano /etc/nginx/sites-available/default
📌 Конфигурация
Примерное содержимое файла:
server {
listen 8081 default_server;
listen [::]:8081 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Перезапуск Nginx:
sudo systemctl restart nginx