Дополнительная настройка web сервера
После установки и настройки необходимо сделать тонкую настройку.
Настройка времени ожидания Nginx
Когда Nginx работает перед Apache, он передает запрос в Apache и ждет по умолчанию 60 секунд, если за это время не пришел ответ от Apache, то Nginx выдаст ошибку 502. Чтобы этого не происходило рекомендую поднять таймоуты до 120 секунд. В секцию location после proxy_pass вставить:
Перегружаем Nginx для применения настроек
К примеру, для виртуального хостинга популярного CMS движка WordPress, я ставлю 180 секунд, потому что во время обновления плагинов или самого движка WordPress Apache может очень долго не отвечать
Передача реального IP клиента в Apache
Когда Nginx работает перед Apache, то в логах Apache, в скриптах будет присутсвовать IP локального 127.0.0.1, что не несет никаких сведений о том, какой пользователь был на сайте. Перестают работать все сервисы, привязанные к IP пользователю на сайтах.
Чтобы убедиться в этом создадим файл ip.php
После этого переходим по адресу http://test.hserv.su/ip.php и видим:
Конфигурирование Nginx
Чтобы это исправить идем в секцию location конфигурации Nginx после proxy_pass добавим:
Перегружаем Nginx для применения настроек
Конфигурирование Apache
Для того, чтобы Apache начал правильно воспринимать и обрабатывать реальный IP пользователя, воспользуемся идущим в стандартном пакете Apache модулем remoteip.
Вначале настроим работу модуля remoteip. Для этого создадим файл remoteip.conf:
Теперь всё это нужно подключить модуль remoteip и перегружаем Apache:
Если все правильно увидим, свой IP адрес. Если вы настраиваете в локальной сети, то там будет ваш локальный IP как у меня на картинке:
SSL между Nginx и Apache
Некоторым скриптам необходимо знать через какую схему они работают, http, или https. Таким образом они формируют ссылки, а иногда принудительно перенаправляют клиентов куда нужно. Из-за не правильной настройки серверного ПО переадресация не может завершиться и браузер покажет нам ошибку ‘too many redirects‘.К примеру, это относится к популярному CMS движку WordPress.
Конфигурирование Nginx
Чтобы это исправить идем в секцию location конфигурации Nginx после proxy_pass добавим:
Перегружаем Nginx для применения настроек
Конфигурирование Apache
Нам необходми модуль setenvif_module, который подключен стандартной установке Apache.
Добавляем в конфигурацию виртуального хостинга перед секцией </VirtualHost>
Перегружаем Apache для применения настроек
Доступ к сайту по sftp
Если вы планируется передавать доступ к сайту другим людям, например для доступа к исходникам сайта, то на текущий момент лучше это делать по протоколу sftp.
Открываем конфиг ssh по пути /etc/ssh/sshd_config и комментируем там одну строку, добавляя далее несколько новых.
Сохраняем и перезапускаем ssh.
Настройка подключения sftp с ограничением доступа за пределами конкретной папки закончена.
Работа с сайтами разных пользователей на одном web сервере
Чтобы к файлам, загруженным через сайт, был доступ через ftp, можно запускать Apache от имени пользователя. Для этого используем модуль Apache mpm_itk. Поставим его.
Добавляем в конфигурацию виртуального хостинга перед секцией </VirtualHost>
Где yuri это имя пользователя, а www-data это группа, под которым будет запускаться Apache
Перегружаем Apache для применения настроек
Ротация логов виртуальных хостов
Насторим ротацию логов виртуального хостинга, еЕсли этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла или или заканчивается место, к примеру, на многих VDS с ssd дают обычно маленький диск.
Создадим файл конфигурации logrotate для нашего виртуального хостинга
Web сервер Apache в качестве Back-end
Установка web сервера Apache
Теперь можно приступать к установке Apache в системе Debian 11 / Ubuntu lts 20.04
После этого, если файрволл ufw включён, нужно разрешить доступ к 80 и 443 портам.
Сервис apache2 стартует сразу после установки. Можно проверить через браузер:
Настройка web сервера Apache
Начинаем настройку с портов. Поскольку у нас Apache будет в роле back-end, убираю его с 80 порта, на 8080.
Сохраняем и перегружаем службу
Проверяем поднялся ли Apache на новом порту
Создаем в директории /var/www директорию blank с пустым index.hmtl
Заворачиваем в неё все дефольтные web запросы
Я предпочитаю следующую структуру web хостинга:
~/www/site1.local
~/log/
директория для содержимого сайта
директория для логов сайта
В директории пользователя надо создать 2 директории www и log, в моём случае это пользователь yuri
Создаем виртуальный хостинг для сайта site1.local
Включаем сайт в конфигурации
После этого нужно перегрузить Apache для применения изменений.
Если возникли какие-то ошибки — смотрим лог apache error_log.
Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /home/yuri/www/test.hserv.su/ файл index.html
Дальше на своем компьютере правим файл hosts, чтобы обратиться к нашему виртуальному хосту. Добавляем туда строчку:
где 192.168.48.92 IP адрес нашего веб сервера. Это нужно сделать только в том случае, если настраиваете web сервер где-то в локальной сети без реально существующего доменного имени.
Теперь в браузере набираем адрес http://test.hserv.su:8080. Если видим картинку:
значит все правильно настроили. Если какие-то ошибки, то идем смотреть лог ошибок конкретного виртуального хоста
Установка¶
Установка пакета
Подключим репозиторий epel, в котором много полезного для CentOS 7. Установим пакет Nginx из репозитория ():
yum install epel-release yum install nginx
Запуск и автозапуск
Запустим веб-сервер и сразу добавим его в автозагрузку, чтобы он автоматически запускался при старте ОС. Для этого используем ():
systemctl start nginx systemctl enable nginx
Подсказка
Эквивалентная команда:
systemctl enable --now nginx
Проверим, что веб-сервер успешно запустился:
systemctl status nginx
В результате должно быть что-то такое:
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2019-05-02 16:10:57 UTC; 3h 6min ago ...
Вводная
LEMP — аббревиатура, обозначающая комплекс программ для развертывания полного серверного окружения. Название формируется из входящих компонентов:
- Linux — операционная система Linux;
- Nginx(читается EnginX) — веб-сервер;
- MariaDB / MySQL — СУБД;
- PHP — язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).
Данная связка серверного ПО пока мало распространена у большинства традиционных хостингов, но с каждым днем становится все более популярной.
Итак, предполагается что в качестве Linux-дистрибутива у нас установлен Ubuntu 14.04, приступаем к работе:
Setup and configure FTP
We are now building and installing Pure-FTPd directly from source instead of using APT as the official Ubuntu packages are very much out of date, and doing it this way simplifies config somewhat
We start with generating our TLS certificate
openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048 openssl req -x509 -days 36500 -nodes -newkey rsa:2048 -sha256 -keyout \ /etc/ssl/private/pure-ftpd.pem \ -out /etc/ssl/private/pure-ftpd.pem chmod 600 /etc/ssl/private/*.pem
Download, build and install Pure-FTPd — check what the latest version is at pureftpd.org and update here if appropriate:
wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.50.tar.gz -O /tmp/pure-ftpd-1.0.50.tar.gz cd /tmp; tar -xf pure-ftpd-1.0.50.tar.gz; cd pure-ftpd-1.0.50; ./configure --prefix=/usr --with-everything --with-tls --with-certfile=/etc/ssl/private/pure-ftpd.pem; make install; cd /tmp; rm -rf ./pure-*;
Set our config and setup PureDB for authentication. Here we are disallowing anonymous login, setting MinUID to 33 so that users in the www-data group can log in, enabling TLS and non-TLS connections and lastly setting our chosen passive port range:
sed -i "s/BrokenClientsCompatibility .*/BrokenClientsCompatibility yes/" /etc/pure-ftpd.conf sed -i "s/NoAnonymous .*/NoAnonymous yes/" /etc/pure-ftpd.conf sed -i "s/# PureDB /PureDB/" /etc/pure-ftpd.conf sed -i "s/MinUID .*/MinUID 33/" /etc/pure-ftpd.conf sed -i "s/# TLS /TLS /" /etc/pure-ftpd.conf sed -i "s/# PassivePortRange .*/PassivePortRange 50000 50099/" /etc/pure-ftpd.conf touch /etc/pureftpd.passwd; /usr/bin/pure-pw mkdb;
By editing the config file and setting TLS to a value of «2» you can force TLS connections. However, as we are self-signing our certificate here, you may encounter problems connecting with your FTP client and may need to forcibly ignore certificate errors.
Create the systemd service file so Pure-FTPd starts on boot
cat > /etc/systemd/system/pure-ftpd.service << EOF ## pure-ftpd binary startup for Webdock servers ## To reload systemd daemon after changes to this file: ## systemctl --system daemon-reload Description=Pure-FTPd FTP server After=network-online.target Type=forking ExecStart=/usr/sbin/pure-ftpd /etc/pure-ftpd.conf PIDFile=/var/run/pure-ftpd.pid Restart=always RestartSec=1 WantedBy=multi-user.target EOF
Enable the daemon
systemctl --system daemon-reload; systemctl enable pure-ftpd; systemctl start pure-ftpd;
Complete the configuration
systemctl restart pure-ftpd
3: Настройка NGINX для PHP-FPM
Теперь создайте server block NGINX, который будет использовать указанный выше пул FPM. Для этого отредактируйте файл конфигурации NGINX и укажите путь к файлу пула с помощью опции fastcgi_pass внутри location block для php.
server { listen 80; server_name example.journaldev.com; root /var/www/html/wordpress; access_log /var/log/nginx/example.journaldev.com-access.log; error_log /var/log/nginx/example.journaldev.com-error.log error; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php7.2-fpm-wordpress-site.sock; fastcgi_index index.php; include fastcgi.conf; } }
Убедитесь, что приведенные выше параметры конфигурации синтаксически верны, и перезапустите NGINX.
УСТАНОВКА NGINX НА UBUNTU 20.04
Установить Nginx можно двумя способами. Первый способ заключается в установки пакета из официального репозитория Ubuntu. На момент написания статьи (1 августа 2021 года) актуальной версией Nginx присутствующей в репозитории Ubuntu была версия 1.18.0. Данная версия считается устаревшей. Актуальной же версией считается 1.20.1 (по состоянию на 1 августа 2021 года).
ОФИЦИАЛЬНЫЕ РЕПОЗИТОРИИ UBUNTU
Если вы хотите установить версию Nginx из репозиториев Ubuntu необходимо выполнить следующие действия. Для начала обновляем списки пакетов при помощи команды:
Для того, чтобы установить Nginx, достаточно выполнить команду:
После этого программу можно использовать. Проверка и настройка программы будет описана в разделах ниже.
ОФИЦИАЛЬНЫЕ РЕПОЗИТОРИИ NGINX
Второй способ заключается в установке последней версии Nginx из официальных репозиториев, которые предоставляют разработчики Nginx. Если вы хотите использовать данный метод установки, для начала необходимо обновить списки пакетов при помощи команды:
Установите необходимые пакеты:
Далее у вас на выбор есть два пути – подключить репозиторий со стабильной версией nginx или подключить репозиторий с основной версией. Стабильная версия является более проверенной и работоспособной. Эту версию можно использовать, как и в тестовых средах так и на производственных. Основная версия не такая стабильная и может содержать ошибки. Данную версию не рекомендуется использовать в производственных средах.
Для подключения репозитория со стабильной версией nginx, выполните следующую команду:
Для подключения репозитория с основной версией nginx, выполните следующую команду:
Следующие шаги необходимо выполнять вне зависимости от выбранного репозитория. Импортируйте официальный ключ, используемый пакетным менеджером для проверки подлинности пакетов:
Проверьте, верный ли ключ был загружен:
Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:
Переместите ключ в каталог доверенных ключей apt:
Чтобы установить nginx, выполните следующие команды:
Версия Nginx от разработчиков немного отличается от версии из официальных репозиториев. Все дополнительные конфигурационные файлы здесь находятся в папке /etc/nginx/conf.d. Если вы хотите использовать папки sites-available и sites-enabled, то необходимо их создать:
Затем добавьте следующую строчку в конец секции http файла /etc/nginx.conf для того чтобы из папки /etc/nginx/sites-enabled загружалась конфигурация сайтов:
Затем перезапустите Nginx:
ЗАПУСК NGINX
После установки пакета, проверяем что Nginx успешно запустился при помощи команды:
Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:
Так же обратите внимание, что вы не можете запускать Apache и Nginx на одном порту. В таком случае вы получите ошибку nginx address already in use 80. Для корректной работы Nginx, необходимо будет отключить веб-сервер Apache (если он у вас используется) или изменить его порт с 80 (который используется по умолчанию) на другой свободный порт
НАСТРОЙКА БРАНДМАУЭРА
По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:
ПРОВЕРКА РАБОТЫ NGINX
После того, как Nginx будет запущен, он будет доступен по адресу сервера, на который он устанавливался. Вы можете проверить, всё ли работает, просто перейдя по адресу сервера, введя его в браузере. Для примера Nginx был установлен на localhost:
Если вы увидите приветственное сообщение как на скриншоте выше это означает что Nginx успешно установлен и запущен.
WAMP
WampServer — среда веб-разработки для Windows. Это позволяет вам создавать веб-приложения с Apache2, PHP и базой данных MySQL. Ниже приведены подробные инструкции по установке Phalcon на WampServer для Windows. Настоятельно рекомендуется использовать последнюю версию WampServer.
Скачать Phalcon
WAMP имеет 32- и 64-разрядные версии. В разделе загрузки вы можете загрузить библиотеку Phalcon, которая подходит для вашей установки WAMPP.
После скачивания библиотеки Phalcon у вас будет zip-файл, примерно такой как показано ниже:
Распакуйте архив и получите файл библиотеки Phalcon DLL:
Скопируйте файл в папку расширений PHP. Если WAMP установлен в папке , расширение должно находиться в (при условии, что в вашей установке WAMP установлен PHP 5.5.12).
Отредактируйте файл , он находится по адресу . Для редактирования можно использовать Блокнот или любую подобную программу. We recommend Notepad++ to avoid issues with line endings. Добавьте в конец файла:
extension=php_phalcon.dll
и сохраните его.
Перезапустите веб-сервер Apache. Сделайте единственный щелчок по значку WampServer на панели задач. Выберите Restart All Services из всплывающего меню. Убедитесь, что значок в трее снова станет зеленым.
Откройте браузер, чтобы перейти https://localhost. Появится страница приветствия WAMP. Проверьте раздел , чтобы убедиться, что phalcon был загружен.
Поздравляем! Теперь вы летите с Phalcon.
Общая настройка NGINX
Настройка NGINX состоит из нескольких блоков. Если Вы используете последние версии NGINX, то для получения актуальной информации мы рекомендуем Вам использовать официальные справочные данные, так как в зависимости от версий настройки могут отличаться.
Модули, из которых состоит NGINX, можно настроить при помощи директив, которые, в свою очередь, подразделяются на простые и блочные. Блочная директива отличается от простой тем, что в ней содержатся дополнительные инструкции. Контекст – это блочная директива, внутри которой можно задавать другие директивы. Что касается блоков, то для настройки NGINX необходимо остановиться на следующих разновидностях: блок server отвечает за конфигурацию для виртуального сервера, в блоке http (в котором находится блок server) прописываются директивы HTTP-сервера, а блоки location определяют конфигурацию в зависимости от URI-запроса.
Теперь перейдем к самому процессу настройки NGINX.
Для начала необходимо настроить файл nginx.conf:
$ sudo nano /etc/nginx/nginx.conf
В этом файле Вы можете посмотреть все основные параметры. Рассмотрим, что обозначает каждая из директив:
- User – пользователь и группа, права которых будут использоваться для запуска рабочего процесса;
- worker_processes – число рабочих процессов (воркеров). Рекомендуется поставить значение “auto”, т.к. число будет равно числу процессорных ядер;
- error_log – конфигурирует запись в лог;
- pid — определяет, в каком файле будет храниться номер основного процесса;
блок events:
- worker_connections – определяет максимальное количество соединений, которые одновременно может открыть рабочий процесс;
- use — метод, который будет использоваться для обработки соединений;
- multi_accept — определяет, какое количество соединений будет принимать рабочий процесс за один раз (on – все новые соединения; off – только одно новое соединение);
блок http:
- include – включение файла или файлов, которые подходят под заданную маску;
- default_type — тип данных по умолчанию;
- server_tokens – позволяет включить (on) или отключить (off) вывод версии NGINX в заголовках ответа или ошибках;
- sendfile – позволяет включить (on) или отключить (off) метод отправки данных sendfile();
- sendfile_max_chunk — определяет объем данных, который может передаваться за один вызов sendfile. Если установить на ноль, то одно быстрое соединение может полностью захватить рабочий процесс;
- tcp_nopush – при включении позволяет передавать заголовок ответа и начало файла одним пакетом, а также передавать файл целым пакетом;
- reset_timedout_connection — позволяет включить (on) или отключить (off) сброс соединений по таймауту;
- client_header_timeout – определяет время, за которое клиент должен успеть передать полностью заголовок;
- client_body_timeout – определяет таймаут при чтении тела запроса клиента;
- send_timeout – задается время, по истечении которого соединение закрывается, если клиент ничего не принимает;
- client_header_buffer_size – определяет буфер для чтения заголовка запроса клиента (по умолчанию равняется 1K);
- client_body_buffer_size – определяет буфер для чтения тела запроса клиента;
- client_max_body_size – определяет максимально допустимый размер тела запроса клиента;
- access_log — позволяет включить (on) или отключить (off) лог доступа;
- include – подключение дополнительных конфигураций.
Установка MySQL
Сейчас все большее распространение получает форк MySQL — MariaDB. Она имеет полную совместимость с MySQL. В последнее время, я предпочитаю использовать именно ее.
Устанавливаем mariadb в Debian 11 или Ubuntu 20.04
Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.
Откроется серия диалогов, где нужно внести некоторые изменения в параметры безопасности установки MariaDB. Меняем пароль пользователя root для текущей базы данных, потом удаляем анонимных пользователей, отключаем возможность подключаться root удаленно, удаляем тестового пользователя и базу. все предложения мастера.
Файлы настроек mysql/mariadb в Debian лежат в директории /etc/mysql/. Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.
Установка phpmyadmin
Для того, чтобы установить phpmyadmin на наш web сервер, достаточно просто распаковать в директорию с виртуальным хостом исходники панели. Создаем структуру папок.
Идем на сайт https://www.phpmyadmin.net и копируем ссылку на последнюю версию панели. Затем загружаем ее через консоль
Распаковываем исходники в директорию виртуального хоста.
Настройка phpmyadmin
Phpmyadmin готов к работе сразу после установки, дополнительные настройки не обазательны. Закрываем доступ к панели средствами Web сервера. Для использования панели необходимо будет не только знать имя учетной записи mysql, но и пользователя и пароль для доступа непосредственно к панели.
Будем использовать стандартное средство для ограничения доступа к каталогу с помощью .htaccees. Создадим такой файл в папке со скриптами phpmyadmin:
Теперь создадим файл с авторизационными данными:
Где user — имя пользователя, а password пароль.
Чтобы авторизация заработала, необходимо в файле конфигурации виртуального хостинга в разделе Directory добавить параметр AllowOverride перед </VirtualHost>
Перезапускаем Apache.
Проверяем настройку. При обращении по адресу веб панели, должно выскочить окошко с авторизацией:
Определение¶
Понятие веб-сервер может относиться как к аппаратной начинке, так и к программному обеспечению. Или даже к обеим частям, работающим совместно.
- С точки зрения «железа», веб-сервер — это компьютер, который хранит файлы сайта (HTML-документы, CSS-стили, JavaScript-файлы, картинки и другие) и доставляет их на устройство конечного пользователя (веб-браузер и т.д.). Он подключен к сети Интернет и может быть доступен через доменное имя, подобное .
- С точки зрения ПО, веб-сервер включает в себя несколько компонентов, которые контролируют доступ веб-пользователей к размещенным на сервере файлам, как минимум — это HTTP-сервер. HTTP-сервер — это часть ПО, которая понимает URL’ы (веб-адреса) и HTTP (протокол, который ваш браузер использует для просмотра веб-страниц).
На самом базовом уровне, когда браузеру нужен файл, размещенный на веб-сервере, браузер запрашивает его через HTTP-протокол. Когда запрос достигает нужного веб-сервера («железо»), сервер HTTP (ПО) принимает запрос, находит запрашиваемый документ (если нет, то сообщает об ошибке ) и отправляет обратно, также через HTTP.
Установка и настройка FTP-сервера
Мы настроим ProFTPd, так как он позволит использовать виртуальных пользователей с uid пользователя www-data.
Для его установки вводим следующую команду:
apt install proftpd
Смотрим uid пользователя www-data:
id www-data
* в Ubuntu это, как правило, 33.
Создаем виртуального пользователя:
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpwww —uid=33 —gid=33 —home=/var/www —shell=/usr/sbin/nologin
* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (www-data); /var/www — домашний каталог пользователя; /usr/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Открываем основной конфигурационный файл:
vi /etc/proftpd/proftpd.conf
Снимаем комментарий или редактируем опцию:
DefaultRoot ~
* данная опция говорит о том, что корневой директорией для пользователя будет домашняя директория. Это нужно, чтобы FTP-пользователи не могли выйти за пределы дозволенного и видеть на сервере сайты друг друга.
Создаем дополнительный конфигурационный файл для proftpd:
vi /etc/proftpd/conf.d/custom.conf
Со следующим содержимым:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
* где 60000 — 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd
systemctl restart proftpd
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
При необходимости, можно настроить шифрование и хранение пользователей в базе данных. Подробнее в инструкции Установка и настройка ProFTPd на Ubuntu Server.
Шаг 11 — Обслуживание статических файлов с помощью Nginx
Когда Nginx перенаправляет запросы доменов Apache через прокси-сервер, каждый запрос файла этого домена отправляется в Apache. Nginx обслуживает статические файлы, такие как изображения, JavaScript и таблицы стилей, быстрее Apache. Поэтому мы настроим файл виртуального хоста Nginx для прямого обслуживания статических файлов и перенаправления запросов PHP в Apache.
Откроем для редактирования /etc/nginx/sites-available/apache:
sudo nano /etc/nginx/sites-available/apache
Пропишем дополнительные location для поиска статики и слегка поправим существующий:
1 вариант — без использование SSL и TLS — кому только он может понадобиться сегодня? ведь без https сайты поисковики недолюбливают
server { listen 80; server_name test1.ru www.test1.ru; root /var/www/test1.ru; index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php; }
location ~ \.php$ { proxy_pass http://your_server_ip:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location ~ /\.ht { deny all; }}
server { listen 80; server_name test2.ru www.test2.ru; root /var/www/test2.ru; index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php; }
location ~ \.php$ { proxy_pass http://your_ip_address:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location ~ /\.ht { deny all; }
}
2 вариант — для SSL и TLS — этот используем в большинстве современных сайтов
server { listen 80; server_name test1.ru www.test1.ru; root /var/www/test1.ru; index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php; }
location ~ \.php$ { proxy_pass http://your_server_ip:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location ~ /\.ht { deny all; }
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/test1.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test1.ru/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server { listen 80; server_name test2.ru www.test2.ru; root /var/www/test2.ru; index index.php index.htm index.html;
location / { try_files $uri $uri/ /index.php; }
location ~ \.php$ { proxy_pass http://your_ip_address:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location ~ /\.ht { deny all; }
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/test2.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/test2.ru/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;}
Обратите внимание:
- Директива try_files указывает Nginx искать файлы в корне документа document root и выводить их напрямую. Если файл имеет расширение .php, запрос перенаправляется в Apache. Даже если файл отсутствует в document root, запрос перенаправляется в Apache, чтобы функции приложения (например, постоянные ссылки) работали без проблем.
- Директива location ~ /\.ht очень важна, поскольку она не дает Nginx выводить содержимое файлов конфигурации Apache с важными данными, таких как .htaccess и .htpasswd.
Сохраняемся и тестируем:
sudo nginx -t
Перезапуск:
sudo service nginx reload
Чтобы убедиться, что все работает смотрим файлы журнала Apache в каталоге /var/log/apache2 и запросы GET для файлов info.php сайтов наших доменов. Использовать можно команду tail для просмотра последних нескольких строк файла и параметр -f для просмотра изменений файла:
sudo tail -f /var/log/apache2/other_vhosts_access.log
Вроде бы и все настроили, но нет…я загрузил движок своего сайта на хостинг и он отказывался работать, так как в нем были файлы htaccess и в нем была директива mod_rewrite. После его установки, я установил сервер базы данных mysql и залил базу и все заработало.
Более новые статьи:
- Команда ps aux — 17/11/2022 15:59
- Как увеличить время соединения с сервером по ssh putty — 14/08/2022 08:31
- Настройка UFW — Uncomplicated FireWall — 06/08/2022 11:10
Настройка nginx + PHP + MySQL
nginx не имеет встроенной поддержки обработки PHP, поэтому потребуется менеджер процессов fastCGI, который умеет интерпретировать PHP, и внести изменения в конфигурационный файл.
Для этого необходимо выполнить следующее:
Устанавливаем php-fpm и модуль для взаимодействия PHP с MySQL:
$ sudo apt-get install php-fpm php-mysql
Изменяем индексный файл по умолчанию на index.php:
server { ... index index.php
Добавляем location для обработки скриптов php средствами fastCGI:
server { ... location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } ...
Запрещаем доступ к .htaccess, так как nginx не обрабатывает эти файлы:
location ~ /\.ht { deny all; }
Установка Nginx:
Автор считает, что эти материалы могут вам помочь:
/var/run/php5-fpm.sock уже должен присутствовать на сервере? в ubuntu 16.04 не нашел такого файла в /var/run
Эмулятор Андроид, установка и настройка в Windows
Установка MySQL на Linux: подробная инструкция
Настройка айфона, нужна инструкция
1. Установка репозитария Nginx: в стандартных дистрибутивах Linux по умолчанию нет дистрибутива Nginx, поэтому добавим его в систему.
Далее нажмите i для перехода в режим редактирования редактора vi и вставьте:
Далее нажмите «:wq» и Enter для сохранения и выхода. Все, теперь Nginx доступен для автоматической установки через менеджер пакетов yum. Если вы используете другой дистрибутив Linux — перейдите на для получения инструкций именно для вашей системы.
2. Установка Nginx из репозитария: теперь просто выполните команду установки.
Установка СУБД
В данной статье мы установим MariaDB. Установка выполняется следующей командой:
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb
Зададим пароль для учетной записи mysql-root:
mysqladmin -u root password
Входим в SQL-оболочку:
mysql -uroot -p
Задаем пароль для пользователя root@localhost:
> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);
> flush privileges;
* где New_Password — пароль, который мы хотим установить для учетной записи root.
Выходим из sql-консоли:
> quit
PHP + MariaDB
Для возможности подключаться к базе данных скриптами PHP, необходимо установить следующие модули:
apt install php-mysql php-mysqli
После перезагружаем php-fpm:
systemctl restart php${PHP_VER}-fpm
* несмотря на то, что мы установили mariadb, в заголовке мы видим mysql. Так и должно быть.