6 ответов
Решение
Стандартная установка Apache Debian будет иметь следующий фрагмент конфигурации:
Слушай 80 # Виртуальные хосты на основе имени SSL еще не поддерживаются, поэтому нет # NameVirtualHost здесь Слушай 443
Это говорит apache прослушивать порт 80 и прослушивать порт 443, если настроен mod_ssl. В вашем случае вы бы хотели:
Вам нужно убедиться, что вы запускаете перезапуск, а не операцию перезагрузки на apache, чтобы он обращал внимание на новые директивы Listen. Самое безопасное, что нужно сделать — это остановить Apache, убедиться, что он мертв и запустить его снова
Если эта конфигурация не работает, проверьте файлы журнала на наличие сообщений об ошибках. Вы можете использовать «netstat -lep —tcp», чтобы увидеть, прослушивает ли что-нибудь порт 8080. Наконец, если все остальное не работает, попробуйте запустить apache под strace, чтобы увидеть, пытается ли он подключиться к этому порту и не работает, но не регистрирует проблему.
63
2009-06-18 15:11
Эти ответы великолепны, но они исключают возможность того, что Оуэн уже сделал это («Я добавил «) может означать именно то, на что это похоже (то есть то, что предложил Дэвид).
Если вы уже сделали это и все еще находите, что он не работает, убедитесь, что вы правильно настроили свои директивы для каждого субдомена, который у вас может быть, в том числе и по умолчанию (если он был настроен вручную для прослушивания:80 сразу после имени).
У вас, вероятно, есть такая директива:
Вы должны изменить это на или же ,
7
2009-06-18 15:19
Шаг 1
httpd (apache) для прослушивания порта 80 и прослушивания порта 443, если настроен mod_ssl.
Шаг 2
Шаг 3
(Не все процессы могут быть идентифицированы, информация о не принадлежащих процессах не будет показана, вам нужно быть пользователем root, чтобы увидеть все это.)
5
2009-06-18 16:38
Предполагая запуск Linux как root, как вы можете видеть, слушает ли apache 8080 или нет. Это поможет вам определить, связана ли проблема с тем, что apache не слушает или существуют внешние факторы (например, брандмауэр, selinux и т. Д.), Которые приводят к истечению времени ожидания соединения.
2009-06-18 16:24
Вам может понадобиться настроить сайт на порт 8080, чтобы это работало. Прочитайте документацию по Apache Virtual Hosts. Каждый «сайт» может быть настроен на прием соединений через определенные порты (и IP-адреса и т. Д.). В вашем http.conf есть виртуальный хост, который настроен только для порта 80?
Также вы можете подтвердить, что сервер прослушивает 8080, используя и ищет запись в этом порту.
2009-06-18 14:38
Вы также можете проверить, включен ли SELinux. Конфигурация SELinux по умолчанию может не позволять запускать Apache на нестандартных портах. Вот сайт, который показывает вам, используете ли вы SELinux и как его отключить, если вы не хотите или не используете его возможности. http://www.crypt.gen.nz/selinux/disable_selinux.html
2009-06-18 15:24
Настройка ssl сертификата Lets Encrypt в apache
Теперь настроим работу web сервера apache с ssl сертификатом. Хотя если быть точным, то tls сертификатом. Устанавливаем пакет certbot для получения бесплатного ssl сертификата от let’s encrypt. Для этого нам сначала надо подключить репозиторий epel.
# dnf install epel-release # dnf install certbot
После установки пакетов certbot, если его запустить, напишет ошибку, что не может сам настроить apache.
Настроим все сами. Для начала создадим самоподписанный дефолтный сертификат, чтобы apache не ругался на отсутствие файла и смог запуститься.
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/ssl/certs/localhost.crt
Все параметры оставляйте дефолтные, не принципиально. Мы этот сертификат использовать не будет. Перезапустите apache.
# apachectl restart
Теперь выпустим сертификат для нашего домена. Имейте ввиду, чтобы получить сертификат у вас должно быть действующее доменное имя, ссылающееся на web сервер, который настраиваете. Let’s Encrypt будет по доменному имени обращаться к серверу, на котором настраиваете сертификат, чтобы проверить домен. В тестовой лаборатории с вымышленным доменным именем получить настоящий ssl сертификат не получится.
# certbot certonly
В качестве способа аутентификации выбирайте
1: Apache Web Server plugin (apache)
Дальше заполняйте в соответствии с вашими названиями. После получения сертификата, укажем его в конфигурации виртуального хоста. В моем случае в файле z.serveradmin.ru.conf. Добавляем туда параметры ssl.
<VirtualHost *:80 *:443> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru DocumentRoot /web/sites/z.serveradmin.ru/www ErrorLog /web/sites/z.serveradmin.ru/log/error.log CustomLog /web/sites/z.serveradmin.ru/log/access.log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem <Directory /web/sites/z.serveradmin.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M </VirtualHost>
Перезапускайте apache и проверяйте работу сайта по https, зайдя по соответствующему протоколу.
По аналогии делаете с остальными виртуальными хостами, для которых используете бесплатные сертификаты let’s encrypt. Осталось дело за малым — настроить автоматический выпуск новых ssl сертификатов, взамен просроченным. Для этого добавляем в /etc/crontab следующую строку:
# Cert Renewal 30 4 * * * root /usr/bin/certbot renew --post-hook "/usr/sbin/apachectl restart" >> /var/log/le-renew.log
Переадресация с http на https в apache
В настроенном ранее примере https отлично работает, но неудобно, что нет автоматической переадресации с http на https. Чтобы использовать безопасную версию сайта, необходимо вручную в браузере набирать https. Хотя все современные браузеры уже сами умеют проверять версии сайта и если есть защищенная, то они автоматически сами ее выбирают.
Тем не менее, лучше все же добавить редирект с http на https. Его можно сделать двумя различными способами:
- Через файл .htaccess
- С помощью настройки виртуального хоста.
Мне нравится больше второй вариант, поэтому приводим конфиг виртуального хоста к следующему виду.
<VirtualHost *:80> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru Redirect permanent / https://z.serveradmin.ru </VirtualHost> <VirtualHost *:443> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru DocumentRoot /web/sites/z.serveradmin.ru/www ErrorLog /web/sites/z.serveradmin.ru/log/error.log CustomLog /web/sites/z.serveradmin.ru/log/access.log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem <Directory /web/sites/z.serveradmin.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M </VirtualHost>
Перечитывайте конфиг httpd и проверяйте. Должно работать автоматическое перенаправление на https версию.
Перед установкой
Перед тем, как мы начнём, убедитесь, что у вас есть всё необходимое.
Прежде всего, мы будем исходить из того, что у вас есть не-рутовый (non-root) пользователь с привилегиями sudo. Настроить такую учётную запись пользователя можно следуя шагам 1-4 в статье о первичной настройке сервера на Ubuntu 16.04.
Мы также будем считать, что вы завершили настройку стека LAMP (Linux, Apache, MySQL и PHP) на вашем сервере с Ubuntu 16.04. Если вы ещё не сделали этого, вы можете ознакомиться с этим процессом в статье об установке стека LAMP на Ubuntu 16.04.
И, наконец, необходимо иметь в виду некоторые вопросы безопасности при использовании phpMyAdmin, поскольку он:
- Напрямую взаимодействует с MySQL.
- Выполняет аутентификацию использую логин и пароль MySQL.
- Выполняет и возвращает результаты произвольных запросов SQL.
По этим причинам, а также потому, что phpMyAdmin является одним из наиболее распространённых и атакуемых PHP приложений, вам не стоит запускать phpMyAdmin на удалённых машинах с простым соединением HTTP. Если у вас ещё нет домена с настроенным SSL/TLS сертификатом, рекомендуем ознакомиться со статьёй Делаем Apache безопаснее с помощью Let’ Encrypt на Ubuntu 16.04.
После выполнения описанных выше мероприятий, вы можете начать следовать шагам, указанным в этой статье.
Шаг 2 — Делаем phpMyAdmin безопаснее
Установка phpMyAdmin осуществляется достаточно просто. Тем не менее, мы ещё не закончили. Из-за того, что phpMyAdmin используется большим количеством пользователей, он представляет собой популярную цель для злоумышленников. Нам необходимо предпринять некоторые шаги для предотвращения неавторизованного доступа.
Одним из способов добиться этого является авторизация пользователя перед входом в само приложение. Мы можем решить эту задачу использованием возможностей входящего в Apache файла для авторизации и аутентификации пользователей.
Настройка Apache для разрешения использования .htaccess
Сначала включим возможность использования файла в нашем файле конфигурации Apache.
Мы будем редактировать файл в нашей конфигурационной директории Apache:
Нам необходимо добавить директиву в секцию конфигурационного файла:
/etc/apache2/conf-available/phpmyadmin.conf
После того, как вы добавили эту строку, сохраните и закройте файл.
Для применения изменений перезапустите Apache:
Создание файла .htaccess
Теперь, когда мы разрешили использовать для нашего приложения, нам необходимо создать такой файл.
Файл необходимо создать в директории приложения. Мы можем создать необходимый файл и открыть его для редактирования следующей командой:
Теперь введём следующую информацию:
/usr/share/phpmyadmin/.htaccess
Введённые нами строки означают следующее:
- : Эта строка задаёт тип авторизации. Указанный тип () означает, что авторизация будет осуществляться на основе пароля и файла пароля.
- : Эта строка задаёт текст приветствия в диалоге авторизации. Используйте общие слова и фразы в этой строке, чтобы злоумышленникам было сложнее определить, что за система скрывается за диалогом авторизации.
- : Эта строка задаёт адрес файла пароля, который используется для авторизации. Файл должен находиться в недоступной для внешнего мира директории. Чуть далее мы создадим этот файл.
- : Эта строка означает, что только аутентифицированные пользователи могут осуществлять доступ к защищаемой системе.
После ввода указанных строк, сохраните и закройте файл.
Создание файла пароля .htpasswd для аутентификации
Теперь, когда мы задали путь для нашего файла пароля в директиве в нашем файле , нам необходимо создать этот файл.
Для того, чтобы это сделать, нам понадобится установить дополнительный пакет из стандартных репозиториев:
Теперь нам доступна утилита .
Указанный нами ранее путь выглядел следующим образом: . Создадим этот файл и добавим в него первого пользователя следующей командой:
Вам будет предложено выбрать и подтвердить пароль для созданного пользователя. После этого файл будет создан и в него будет добавлен хэш указанного вами пароля.
Для добавления нового пользователя выполните следующую команду без флага :
Теперь, когда вы настроили доступ к поддиректории phpMyAdmin, при попытке входа в phpMyAdmin вам будет предложено ввести логин и пароль пользователя:
После ввода логина и пароля вы будете перенаправлены на страницу аутентификации phpMyAdmin. Таким образом, мы создали дополнительный слой защиты для вашего phpMyAdmin.
Предварительные требования
Для выполнения этого руководства вам потребуется следующее:
- Сервер Ubuntu 20.04 Этот сервер должен иметь пользователя без прав root с правами администратора, а также брандмауэр, настроенный с помощью . Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера Ubuntu 20.04.
- Стек LAMP (Linux, Apache, MySQL и PHP), установленный на вашем сервере Ubuntu 20.04. Если вы еще не сделали этого, вы можете воспользоваться данным руководством по установке стека LAMP на Ubuntu 20.04.
Наконец, существует ряд важных соображений безопасности при использовании таких программных средств, как phpMyAdmin, поскольку phpMyAdmin:
- напрямую связывается с установленной у вас версией MySQL;
- управляет аутентификацией, используя учетные данные MySQL;
- исполняет и возвращает результаты для произвольных SQL запросов.
По этим причинам, и поскольку это широко применяемое PHP приложение, которое часто становится мишенью для атак, вы ни при каких условиях не должны запускать phpMyAdmin на удаленных системах, используя обычное HTTP-соединение.
Если у вас нет существующего домена с настроенным SSL/TLS сертификатом, вы можете воспользоваться следующим руководством по обеспечению безопасности Apache с помощью Let’s Encrypt в Ubuntu 20.04. Для этого вам потребуется зарегистрировать доменное имя, создать DNS запись для вашего сервера и .
Настройка Apache (необязательно)
Теперь, когда у вас есть Apache, обслуживающий веб-страницы на вашем Ubuntu 20.04, могут потребоваться дополнительные настройки конфигурации.
Apache по умолчанию будет перечислять содержимое ваших каталогов без индексов (index.html, index.РНР).Это угроза безопасности, поскольку она позволяет хакерам просматривать ваш веб-сервер в поисках сценариев.
Вы также обнаружите, что.htaccessпо умолчанию в Apache будет игнорироваться.Если понадобится .htaccess, вы можете включить его, изменив файл конфигурации Apache.
Откройте файл конфигурации:
sudo nano /etc/apache2/apache2.conf
Нажмите CTRL+Wи найдите<Directory /var/www/>.
Блок должен выглядеть примерно так:
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Удалите Indexes, чтобы остановить список каталогов Apache, и изменитеAllowOverride None на AllowOverride All, чтобы включить .htaccess.Теперь это должно выглядеть так:
<Directory /var/www/> Options FollowSymLinks AllowOverride All Require all granted </Directory>
Сохраняем и выходим (CTRL+X, Y, ENTER).
Далее перезапускаем Apache.
sudo systemctl restart apache2
Включить mod_rewrite
Если вы хотите настроить некоторые правила .htaccess, вам, скорее всего, придется включитьmod_rewrite.
sudo a2enmod rewrite
Далее нужно перезапустить Apache.
sudo systemctl restart apache2
На этом полная установка и настройка стека LAMP завершена.
В скором времени ждите материал по установке phpMyAdmin. Всех с наступающим!
Видео
Предалагаю посмотреть видео всего процесса установки и настройки phpmyadmin на примере веб сервера apache.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .
Загружаем нужную версию
Переходим на сайт разработчика phpMyAdmin и копируем ссылку на нужную нам версию — в данной инструкции мы обновляем приложение до последней версии:
* на момент обновления инструкции, последняя версия была 4.9.0.1. Для рабочих сред версии alpha лучше не устанавливать.
В консоли сервера, используя скопированную ссылку, скачиваем архив:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
* если система вернет ошибку, проверьте, что установлен пакет wget.
* мы можем также скачать архив на любой компьютер с Windows и перенести его на сервер Linux с помощью WinSCP.
Распаковываем скачанный архив:
unzip phpMyAdmin-*-all-languages.zip
* если система вернет ошибку «unzip: command not found» устанавливаем данное приложение командами apt-get install unzip или yum install unzip.
6 ответов
Лучший ответ
Это очень раздражало.
Похоже, это ошибка phpMyAdmin.
Очистите куки вашего браузера, происходит то, что phpMyAdmin «кэшировал» тот факт, что вы не (или, возможно, не имели в какой-то момент) доступа к базе данных.
Невозможно сбросить его, кроме удаления файлов cookie для phpMyAdmin в окне браузера (для получения нового «идентификатора сеанса») или удаления файлов сеанса на веб-сервере phpMyAdmin.
18
Andrew
15 Авг 2011 в 12:33
Если на вашем компьютере включен IPv6, localhost будет преобразовывать в , а не в . Это может вызвать проблемы.
Попробуйте подключиться к 127.0.0.1, а не к localhost. Это должно заставить mysql аутентифицироваться по IPv4-адресу, поэтому убедитесь, что там есть 127.0.0.1.
В качестве альтернативы, если у вас есть права администратора, вы можете снова отобразить localhost на 127.0.0.1 в .
3
cHao
22 Янв 2011 в 21:05
Ответы cHao и Andrew решили для меня проблему. Я сбрасываю все разрешения в MySQL db, user table, на yes. Затем все базы данных снова появились в phpMyAdmin, но у меня не было там права на создание базы данных. Удалил файл cookie phpMyAdmin и даже обновил phpMyAdmin безуспешно. Затем я зашел в каталог tmp / php и удалил файл сеанса, который я нашел там (с именем sess + random ascii), и успех!
2
Francisco C
31 Июл 2017 в 22:25
Оказывается, это какая-то проблема, специфичная для Google Chrome, поскольку теперь он работает в IE. Попробую запустить CCleaner.
Спасибо всем.
1
Peter
22 Янв 2011 в 21:10
Я столкнулся с той же проблемой (потерял доступ к своим локальным базам данных). Проблема, похоже, связана с браузерами, работающими под управлением Gecko или аналогичными (например, KHTML … Я использую Opera). После удаления файла cookie phpMyAdmin, как было предложено, у меня все еще не было никаких привилегий . Итак, я зашел в localhost / xampp, затем щелкнул «Безопасность». На этой странице есть ссылка (h-t-t-p: //localhost/security/xamppsecurity.php), по которой я попал на страницу, озаглавленную Консоль безопасности MySQL и защита каталога XAMPP )
Я оставил поле текущий пароль пустым и ввел новый пароль; Я думаю, что выбрал cookie в качестве метода аутентификации PhpMyAdmin (на самом деле он говорит, что PhpMyAdmin аутентификация , но эй …). После того, как я отправил изменение пароля и снова попытался получить доступ к phpMyAdmin, я вернул все свои базы данных и снова могу создавать другие; сообщение Нет привилегий исчезло!
Внизу все еще есть сообщение
Но это другая река в другой раз.
Ess’iele
4 Май 2015 в 20:07
За последние несколько лет я застрял в этом несколько раз … Самый простой метод, который я нашел, был сегодня, когда настраивал RPi.
Из терминала запустите: и настройте в соответствии с вашей реализацией.
Затем настройте доступ пользователей с помощью: , это позволит вам установить суперпользователя / пользователя root.
Просто следуйте подсказкам.
Cory C
9 Июл 2018 в 03:49
Предварительные требования
Прежде чем приступить к изучению данного руководства, вам нужно выполнить несколько базовых действий.
Во-первых, мы полагаем, что ваш сервер имеет пользователя user без root прав с привилегиями , а также брандмауэр с , как указано в руководстве по начальной настройке сервера для Ubuntu 18.04.
Мы также предполагаем, что вы выполнили установку LAMP (Linux, Apache, MySQL и PHP) на вашем сервере с Ubuntu 18.04. Если вы еще не сделали этого, вы можете воспользоваться данным руководством по установке стека LAMP на Ubuntu 18.04.
Наконец, существует ряд важных соображений безопасности при использовании таких программных средств, как phpMyAdmin, поскольку phpMyAdmin:
- напрямую связывается с установленной у вас версией MySQL;
- управляет аутентификацией, используя учетные данные MySQL;
- исполняет и возвращает результаты для произвольных SQL запросов.
По этим причинам, и поскольку это широко применяемое PHP приложение, которое часто становится мишенью для атак, вы ни при каких условиях не должны запускать phpMyAdmin на удаленных системах, используя обычное HTTP-соединение. Если у вас нет существующего домена с настроенным SSL/TLS сертификатом, вы можете воспользоваться следующим руководством по обеспечению безопасности Apache с помощью Let’s Encrypt в Ubuntu 18.04. Для этого вам потребуется зарегистрировать доменное имя, создать DNS запись для вашего сервера и .
После завершения этих шагов вы будете готовы начать работу с данным руководством.
Настройка
Для применения изменений в настройках необходимо перезапустить демон Apache:
sudo service apache2 restart
/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf `-- sites-enabled `-- *.conf
Настройки модулей расположены в директории /etc/apache2/mods-available. Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды или . Пример подключения модуля:
sudo a2enmod <mod-name>
Свои настройки следует сохранять в файлы, расположенные в директории /etc/apache2/conf-available. Для подключения или отключения своих настроек следует использовать соответствующие команды или . Пример подключения файла со своими настройками:
sudo a2enconf <config-name>
Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории /etc/apache2/sites-available. Для подключения виртуальных хостов следует использовать соответствующие команды или . Пример подключения виртуального хоста:
sudo a2ensite <site-name>
Кодировка по умолчанию
Для указания кодировки по умолчанию следует использовать директиву в файле /etc/apache2/conf-available/charset.conf (или раскомментировать соответствующую строку):
AddDefaultCharset UTF-8
Виртуальные хосты
Файлы настроек виртуальных хостов хранятся в /etc/apache2/sites-available/*.conf. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf. Вы можете использовать этот виртуальный хост в качестве примера.
Пример настройки виртуального хоста:
<VirtualHost *:80> #Имя хоста ServerName host1.server1 #Корневая папка хоста DocumentRoot /var/www/host1.server1 <Directory /var/www/host1.server1> #Разрешение на перезапись всех директив при помощи .htaccess AllowOverride All </Directory> </VirtualHost>
Назовите файл настройки именем вашего хоста host1.server1.conf и сохраните.
После создания файла настроек допишите в /etc/hosts имя вашего хоста:
127.0.0.1 host1.server1
Для включения созданного виртуального хоста используется утилита :
sudo a2ensite host1.server1
Отключается хост аналогично утилитой :
sudo a2dissite host1.server1
mod_userdir
Модуль позволяет использовать директории, находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории ~/public_html
mkdir ~public_html
Чтобы включить , выполните:
sudo a2enmod userdir
и добавьте необходимого пользователя в группу www-data:
sudo adduser $USER www-data
после чего перезагрузите Apache:
sudo service apache2 restart
Страницы будут доступны по адресу http://localhost/~username, где username — имя пользователя.
CGI
Если Вы хотите запускать на сервере cgi-скрипты, подключите модуль командой
sudo a2enmod cgi
По умолчанию cgi-скрипты размещаются в директории /usr/lib/cgi-bin, но вы можете разместить их где угодно,
указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле
/etc/apache2/conf-enabled/serve-cgi-bin.conf.
Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста