Архив метки: nginx

Как настроить PhpMyAdmin на NGINX и PHP 7.4

Не всегда удобно пользоваться консолью MySQL для редактирования и создания баз данных. Поэтому многие устанавливают phpMyAdmin, но не знают как настроить PhpMyAdmin на NGINX в связке с PHP




Для опытных пользователей в данном посте не будет ничего нового, а вот для новичков будет шпаргалкой на пути к созданию своего сайта и управления им.






Установка phpMyAdmin + Nginx в Ubuntu 18.04




Предположительно
у вас уже установлен MySQL сервер но еще не установлен phpMyAdmin.
Приступим к установке через терминал, putty и.т.д




sudo apt install phpmyadmin




В процессе установки будет предложено выбрать веб сервер на котором будет работать phpmyadmin. Так как устанавливать мы будем NGINX, то естественно мы просто нажмем enter и продолжим дальше. Далее будет предложено создать базу данных, и создать пароль для нее — выполните требуемое. 




Так как phpmyadmin распаковался и находится по пути /usr/share/phpmyadmin , а ваш сайт допусти лежит в директории /home/www/my.site.ru, то нам всего навсего нужно будет создать символьную ссылку таким образом:




ln -s /usr/share/phpmyadmin /home/www/my.site.ru




после
чего в директории сайта появится ссылка на менеджер управления базами
данных. И чтобы зайти в phpmyadmin нам нужно перейти по адресу:




http://my.site.ru/phpmyadmin/




Если вы не установили php 7.4 или другую версию php то phpmyadmin работать не будет




Установка php 7.4, php7.4-fpm и других расширений php




Вводим в терминале команду, которая установит все необходимые расширения для работы php движков:




sudo apt install php7.4 php7.4-fpm php7.4-mbstring php-pear php7.4-mcrypt php7.4-mysql php7.4-gd php7.4-zip php7.4-curl




После установки отредактируем php.ini




sudo nano /etc/php/7.4/fpm/php.ini




включаем поиск по файлу комбинацией клавиш ctrl+w. Вводим строку:




;cgi.fix_pathinfo = 1




раскомментируем и изменим 1 на 0. Чтобы выглядело вот так:




cgi.fix_pathinfo = 0




Данное действие рекомендовано для увеличения безопасности.




И так у нас все готово: расширение php для работы с mySQL установлены, установлен php-fpm для работы c nginx.




перейдем к следующему этапу настройки.




Настройка nginx для работы с phpmyadmin




Создаем конфигурационный файл




sudo nano /etc/nginx/conf.d/my.site.conf




Вставим в него




server { 
listen 80;    
server_name my.site.ru;    
root /home/www/my.site.ru;    
charset utf-8;    
index index.php index.html;    
client_max_body_size 100m;    
fastcgi_read_timeout 160s; 

location / {    
try_files $uri $uri/ /index.php?$args;    
} 

location ~ .php$ {    
try_files $uri =404;    
fastcgi_index index.php;    
fastcgi_pass unix:/run/php/php7.4-fpm.sock;    
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    
include fastcgi_params;    
} 
}




В данном случае вам будет доступен сайт если у вас он есть и phpmyadmin по адресу my.site.ru/phpmyadmin/ .




Если вы хотите чтобы менеджер баз данных был на другом домене, например mysql.my.site.ru, создайте в редакторе зон DNS вашего хостинга специальный поддомен и отредактируйте файл nginx так:




sudo nano /etc/nginx/conf.d/mysql.my.site.conf




server { 
listen 80;    
server_name mysql.my.site.ru;    
root /home/www/my.site.ru/phpmyadmin;    
charset utf-8;    
index index.php index.html;    
client_max_body_size 100m;    
fastcgi_read_timeout 160s; 

location / {    
try_files $uri $uri/ /index.php?$args;    
} 

location ~ .php$ {    
try_files $uri =404;    
fastcgi_index index.php;    
fastcgi_pass unix:/run/php/php7.4-fpm.sock;    
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params;    
} 
}




Перезагружаем nginx и php fpm




sudo service php7.4-fpm restart




sudo service nginx restart




Теперь можно проверить все ли работает. На этом всё.



[endtxt]




RSS



Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.


2019-03-11T11:07:40
Nginx

Установка сервера LEMP (Nginx, MariaDB, PHP)

Стек LEMP включает пакеты Nginx (Engine X), MySQL/MariaDB и PHP/Python, установленные в системе Linux и настроенные для совместной работы в качестве системы хостинга веб-сайтов, приложений или выполнения других функций. В данном руководстве мы рассмотрим установку стека LEMP на примере Ubuntu 18.04.

Для запуска рассмотренных команд потребуется доступ к серверу по SSH и root-привилегии (или использование команды sudo).

Установка веб-сервера Nginx

Обновите программные пакеты и установите Nginx при помощи менеджера пакетов apt-get. Nginx — быстрый, производительный и простой в настройке веб-сервер с открытым исходным кодом, поддерживающий функции балансировки нагрузки и обратного прокси.

$ sudo apt-get update

$ sudo apt-get install nginx

После установки служба ngnix должна автоматически запуститься. Также должен включиться ее запуск при загрузке. Проверить состояние службы можно следующей командой:

$ sudo systemctl status nginx

При необходимости вручную запустить службу и активировать ее автоматический запуск при загрузке нужно выполнить следующие команды:

$ sudo systemctl start nginx

$ sudo systemctl enable nginx

Если в вашей системе есть брандмауэр, нужно открыть порты 80 (HTTP) и 443 (HTTPS), чтобы разрешить клиентам запросы на веб-сервер, а затем перезагрузить брандмауэр, например:

$ sudo ufw allow 80/tcp

$ sudo ufw allow 443/tcp

$ sudo ufw reload

Для проверки правильности работы ngnix нужно ввести в строке браузера имя или адрес вашего веб-сервера:

http://доменое_имя/

Или

http://IP-адрес_сервера/

Если установка была выполнена правильно, вы увидите тестовую страницу Nginx:

Установка MariaDB

Для установки системы управления базами данных MariaDB (разрабатываемая сообществом ветвь MySQL) выполните команду:

$ sudo apt-get install mariadb-server mariadb-client

Служба должна автоматически запуститься после установки. Это можно проверить следующей командой (если она не запущена, нужно аналогично предыдущему разделу запустить ее и активировать автоматический запуск при загрузке):

$ sudo systemctl status mysql

Теперь нужно обеспечить минимальную безопасность базы данных при помощи специального скрипта (входит в комплект установки):

$ sudo mysql_secure_installation

Дайте ответ y (yes, да) на следующие вопросы, а также задайте пароль для пользователя root:

Set root password? [Y/n]: y

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Установка PHP

PHP — популярный скриптовый язык, используемый для создания динамического содержимого веб-сайтов. Все необходимые для веб-разработки модули PHP можно установить следующей командой (версия по умолчанию для репозиториев Ubuntu — PHP 7.2)

$ sudo apt-get install php php-fpm php-common php-mysql php-gd php-cli

После установки PHP служба PHP7.2-FPM (реализация FastCGI сервера) также должна запуститься автоматически. Это можно проверить следующей командой:

$ sudo systemctl status php7.2-fpm

Теперь нужно настроить PHP-FPM для правильного представления PHP-приложений или сайтов. Параметры конфигурации находятся в файле /etc/php/7.2/fpm/php.ini. Откройте его любым текстовым редактором:

$ sudo vim /etc/php/7.2/fpm/php.ini

Найдите строку ;cgi.fix_pathinfo=1 и замените ее на cgi.fix_pathinfo=0, чтобы при работе PHP рассматривал только указанный в явном виде путь и прекращал обработку, если файл не найден.

Затем в разделе серверного блока по умолчанию файла конфигурации сервера Nginx (/etc/nginx/sites-available/default) настройте обработку PHP-скриптов при помощи PHP-FPM:

$ sudo vim /etc/nginx/sites-available/default

Чтобы передавать PHP-скрипты серверу FastCGI, раскомментируйте следующий раздел:

location ~ .php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

}

После внесения изменений перезапустите службы nginx и php7.2-fpm, чтобы они вступили в силу:

$ sudo systemctl restart php7.2-fpm

$ sudo systemctl restart nginx

Теперь можно проверить правильность настройки PHP, создав в корне документов вашего сервера простую страничку info.php. Для этого требуется всего одна команда:

echo "<?php phpinfo(); ?>" > /var/www/html/info.php

Затем откройте веб-бразуер и введите любой из следующих адресов, чтобы увидеть информационную страницу PHP.

http://доменное_имя/info.php

или

http://IP-адрес_сервера/info.php

Заключение

Мы рассмотрели установку стека LEMP. Данный набор является платформой, на которую могут устанавливаться веб-сайты и веб-приложения. Для более подробной информации обратитесь к соответствующим man-страницам.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-03-06T16:55:13
Nginx

Установка SSL сертификата на nginx

В зависимости от того, какие данные предоставил центр сертификации клиенту, установку можно разбить на несколько пунктов:

  1. У вас есть приватный ключ, а также цепочка сертификатов (сам SSL сертификат + промежуточный + корневой сертификаты). Обычно это 2 файла с расширениями key (приватный ключ) и crt (цепочка сертификатов)
  2. У вас есть приватный ключ, сам SSL сертификат, а также цепочка сертификатов (промежуточный+корневой). Обычно это файлы с расширениями key (приватный ключ) и 2 файла с расширением crt (сертификат и цепочка сертификатов соответственно)
  3. У вас есть приватный ключ, сам SSL сертификат, а также промежуточный и корневой сертификат т.е. 4 элемента по отдельности. Обычно это файлы с расширениями key и 3 файла с расширением crt.
  4. У вас есть сертификат в другом формате, например pfx

Помимо этого может быть файл с запросом на сертификат, обычно в формате csr
Приступим к разбору каждого пункта

 У вас есть приватный ключ, а также цепочка сертификатов

Подготовка к установке

Наилучший вариант т.к. потребуется только указать эти данные в конфигурации nginx и перезапустить его.

Установка сертификата

Будем считать, что приватный ключ имеет имя private.key, а цепочка сертификатов CAbundle.crt

Создадим директорию ssl в nginx:

[root@server ~]# mkdir /etc/nginx/ssl

Далее скопируйте файл приватного ключа и цепочку сертификатов в директорию /etc/nginx/ssl/

[root@server ~]# mv private.key CAbundle.crt /etc/nginx/ssl

После этого откройте файл конфигурации виртуального хоста nginx в редакторе и измените значения строк ssl_certificate и ssl_certificate_key

Например (вариант при использовании LetsEncrypt:

Было:

ssl_certificate /etc/letsencrypt/live/site.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.ru/privkey.pem;

Стало:

ssl_certificate /etc/nginx/ssl/private.key;
ssl_certificate_key /etc/nginx/ssl/CAbundle.crt;

Не забудьте про точку с запятой (;) в конце каждой из строк
Сохраните файл и перезагрузите nginx

[root@server ~]# systemctl restart nginx

 У вас есть приватный ключ, сам SSL сертификат, а также цепочка сертификатов

Данный вариант отличается от первого только тем, что нужно добавить цепочку сертификатов в сам SSL сертификат.

Будем считать, что SSL сертификат имеет имя site_ru.crt, а цепочка сертификатов CA.crt

В таком случае объединение файлов можно выполнить так:

Перейдем в директорию, где расположены данные файлы (например /root/site_certs/)

[root@server ~]# cd /root/site_certs/

Объединим файлы

[root@server certs]# cat CA.crt >> site_ru.crt

Далее выполните действия по установке сертификата: Установка SSL сертификата на nginx

У вас есть приватный ключ, сам SSL сертификат, а также промежуточный и корневой сертификат

Данный вариант отличается от первого только тем, что нужно объединить все сертификаты (SSL сертификат, промежуточный и корневой) в одну цепочку.

Будем считать, что SSL сертификат имеет имя site_ru.crt, корневой сертификат CAroot.crt, промежуточный сертификат CAintermediate.crt

В таком случае объединение файлов можно выполнить так:

Перейдем в директорию, где расположены данные файлы (например /root/site_certs/)

[root@server ~]# cd /root/site_certs/

Объединим файлы

[root@server certs]# cat CAroot.crt CAintermediate.crt >> site_ru.crt

Далее выполните действия по установке сертификата: Установка SSL сертификата на nginx

У вас есть сертификат в другом формате, например pfx

Данный вариант отличается от первого только тем, что цепочка сертификатов и приватный ключ уже содержатся в pfx сертификате и осталось только конвертировать его.

Будем считать, что SSL сертификат имеет имя cert.pfx

В таком случае получить необходимые файлы можно выполнить так:

Перейдем в директорию, где расположен данный файл (например /root/site_certs/)

[root@server ~]# cd /root/site_certs/

Получим цепочку сертификатов

[root@server certs]# openssl pkcs12 -in cert.pfx -clcerts -nokeys -out public.crt

Получим приватный ключ

[root@server certs]# openssl pkcs12 -in cert.pfx -nocerts -nodes -out private.key

Далее выполните действия по установке сертификата

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2018-12-28T09:44:42
Nginx

VestaCP установка и настройка

Введение

VestaCP – это бесплатная панель  управления  сайтами, идеально подходит для установки на VDS сервер для личного использования и не большого хостинга. Существует несколько вариантов сборки VestaCP

  1. Nginx, apache,php
  2. Apache,php
  3. Nginx,php,php-fpm

Кроме веб сервисов в VestaCP входят пакеты ftp, DNS, MAIL, firewall. А также базы данных Mariadb или PostgresSQL.

 Установка VestaCP

Для установки перейдите на сайт https://vestacp.com/install/. На этой странице выбираем нужную нам конфигурацию. Рассмотрим пример установки nginx+php-fpm на сервер Centos 7.

После нажатия кнопки «Generate Install Command», мы получим код для установки панели

Далее, в соответствии с инструкцией подключаемся по ssh к нашему серверу. Вводим команду

curl -O http://vestacp.com/pub/vst-install.sh

Запускаем скрипт установки.

bash vst-install.sh --nginx yes --phpfpm yes --apache no --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota no --exim yes --dovecot yes --spamassassin yes --clamav yes --softaculous yes --mysql yes --postgresql no --hostname test.webserver.ru --email admin@vestacptest.ru --password qeqes9sdf

Вы должны запускать свой скрипт установки, со своими параметрами.

Проверяем еще раз выбранные компоненты для установки, если все верно вводим “y”

После чего вся установка пройдет в автоматическом режиме. Когда установка закончится вы увидите ссылку и данные для входа в web интерфейс VestaCP

Набираем в строке поиска указанную ссылку, и после ввода логина с паролем попадаем в WEB интерфейс VestaCP.

Что бы сменить язык на русский, кликните по ссылке admin и выберите в поле Language: ru

Также здесь можно задать остальные настройки пользователя.

Добавление домена

Для добавления домена, переходим в меню WEB  и нажимаем кнопку “+” add web domain

На следующей странице вводим название нашего домена

При необходимости нажимаем на ссылку “advanced options” и указываем дополнительные настройки, например если мы хоти подключить ssl для работы https, поставьте галочку SSL Support

Для дальнейшего редактирования созданного домена, перейдите снова на вкладку WEB и нажмите кнопку edit в созданном  домене. Особый интерес здесь представляет меню WEB Template. Это шаблоны конфигураций nginx. Все шаблоны находятся в папке /usr/local/vesta/data/templates/web/nginx/php-fpm. Их вы можете выбрать через выпадающее меню

Как видим есть множество шаблонов настроек nginx для различных cms и фреймворков. Например для работы wordpress c использованием ЧПУ, необходимо выбрать шаблон wordpress2_rewrite.

Также здесь вы можете добавить дополнительный ftp аккаунт к домену, подключить web статистику, ssl сертификат.

Настройка ДНС записей

Для настройки ДНС записей в VestaCP перейдите в меню DNS.  Выберите нужный домен, здесь вы можете отредактировать как основную A запись домена

Так и служебные DNS записи

 

Настройка почты в VestaCP

Для настройки почтовых ящиков, перейдите в меню Mail, выберите нужный домен, и нажмите кнопку  “add account”. На открывшейся странице заполните необходимые поля, после чего нажмите кнопку “Add”

Заключение

Как видим, в установке и настройки панели VestaCP нет ничего сложного, установить и настроить можно буквально за 15 минут, даже не имея большого опыта в администрировании Linux, а в результате мы получим мощный и полнофункциональный инструмент управления сайтами не уступающий платным аналогам.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2018-11-21T15:17:09
Nginx

Сниппет NGINX для ЧПУ в WordPress

Ниже приведен пример готовой конфигурации NGINX, позволяющей CMS WordPress корректно отображать ЧПУ (человеко-понятные урлы). В раздел location / конфигурационного файла сайта на WP (/etc/nginx/sites-available/sitename.ru) добавьте следующие строки:
Читать

Elgg: mod-rewrite для NGINX

Сегодня развернул Elgg на веб-сервере NGINX, и первая проблема с которой столкнулся — это небходимость замены mod-rewrite директив, которые содержатся в файле .htaccess, на соответсвующие правила для NGINX (rewrite-rules).

И первый вопрос, который у меня возник: куда нужно писать эти правила?
Rewrite-rules для Nginx указываются внутри секции server в файле настройки виртуального хоста, например /etc/nginx/sites-available/default.

Следующий вопрос был: что же туда писать?
Если подумать логически, то задача не совсем сложная, необходимо всего лишь конвертировать директивы из htaccess в соответвующие правила для nginx. Спасибо Томасу Делингу, который уже провел иследования в этом вопросе и успешно конвертировал директивы файла htaccess для Elgg 1.8.2. Все что мне осталось, это скопировать набор правил и обновить файл настройки виртуального хостинга, в результате он выглядел приблизительно так:

server {
listen 80;
server_name elgg.domain.com;
root /var/www-nginx/elgg/htdocs/;

error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

index index.php index.html;
fastcgi_index index.php;

client_max_body_size 8M;
client_body_buffer_size 256K;

rewrite ^/pg/([A-Za-z0-9_-]+)$ /engine/handlers/page_handler.php?handler=$1&$args;
rewrite ^/pg/([A-Za-z0-9_-]+)/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args;
rewrite ^/tag/(.+)/?$ /engine/handlers/page_handler.php?handler=search&page=$1;
rewrite ^/action/([A-Za-z0-9_-/]+)$ /engine/handlers/action_handler.php?action=$1&$args;
rewrite ^/cache/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args;
rewrite ^/services/api/([A-Za-z0-9_-]+)/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args;
rewrite ^/export/([A-Za-z]+)/([0-9]+)/?$ /engine/handlers/export_handler.php?view=$1&guid=$2;
rewrite ^/export/([A-Za-z]+)/([0-9]+)/([A-Za-z]+)/([A-Za-z0-9_]+)/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4;
rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php;
rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php;
rewrite ^/rewrite.php$ /install.php;
if (!-d $request_filename){
set $rule_11 1$rule_11;
}
if (!-f $request_filename){
set $rule_11 2$rule_11;
}
if ($rule_11 = "21"){
rewrite ^/([A-Za-z0-9_-]+)$ /engine/handlers/page_handler.php?handler=$1;
}
if (!-d $request_filename){
set $rule_12 1$rule_12;
}
if (!-f $request_filename){
set $rule_12 2$rule_12;
}
if ($rule_12 = "21"){
rewrite ^/([A-Za-z0-9_-]+)/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2;
}

location ~ .php$ {
include fastcgi_params;

# Assuming php-fastcgi running on localhost port 9000
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}

# Do not put CSS there or it will break simplecache
location ~* .(bmp|js|gif|ico|jpg|jpeg|png)$ {
expires max;
# log_not_found off;
}
}

Автор: Sergiy Kamolov
Дата публикации: 2012-08-06T13:42:00.001+03:00