Skip to main content

Установка веб-серверов 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 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

База:

sudo mysql

CREATE DATABASE wordpress;
CREATE USER 'wp'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;

🟨 ШАГ 4 — MariaDB

sudo systemctl enable mariadb
sudo systemctl start mariadb

🟪 ШАГ 5 — PostgreSQL

sudo systemctl enable postgresql
sudo systemctl start postgresql

🌐 ШАГ 6 — 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