Установка PHP 5.6 с оптимизацией opcache
Устанавливаем PHP 5.6 c opcache и модулем для работы с mysqlnd
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum install -y php56w php56w-opcache php56w-mysqlnd
Для проверки работы Apache и php временно открываем порт 8080 для внешних подключений (после перезагрузки он будет снова закрыт). В Centos 7 вместо привычной всем IPtables установлена более современная служба файрвола Firewalld.
firewall-cmd --add-port=8080/tcp
В папке /var/www/html создаем файл phpinfo.php со следующим содержимым.
<?php phpinfo(); ?>
Заходим на сервер из любого браузера по нашему IP адресу с указанием порта 8080 — http://IP-сервера:8080/phpinfo.php . Мы должны увидеть информацию о php, apache и установленных модулях.
Настройка phpmyadmin
Пхпадмин готов к работе сразу после установки, дополнительные настройки не обазательны. Приведу полезный пример при использовании — ограничение доступа к phpmyadmin средствами веб-сервера. Для использования панели необходимо будет не только знать имя учетной записи mysql, но и пользователя и пароль для доступа непосредственно к панели.
Рассмотрим сначала пример с веб сервером apache. Будем использовать стандартное средство для ограничения доступа к каталогу с помощью .htaccees. Создадим такой файл в папке со скриптами phpmyadmin:
# mcedit /usr/share/phpMyAdmin/.htaccess
AuthName "Enter Password" AuthType Basic Require valid-user AuthUserFile "/usr/share/phpMyAdmin/.htpasswd"
Теперь создадим файл с авторизационными данными:
# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user password
user | имя пользователя |
password | пароль |
Чтобы авторизация заработала, необходимо в файле /etc/httpd/conf.d/phpMyAdmin.conf в разделе Directory добавить параметр AllowOverride, чтобы получилось вот так:
<Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 Require all granted AllowOverride All </Directory>
Перезапускаем апач и проверяем настройку. При обращении по адресу веб панели, должно выскочить окошко с авторизацией:
Проделаем то же самое на nginx. Так же создаем файл с паролем .htaccess:
# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user password
Если у вас на сервере не установлен httpd, то скорее всего вы увидите ошибку:
-bash: htpasswd: command not found
Необходимой утилиты нет в системе. Установим htpasswd на centos:
# yum install -y httpd-tools
Снова создаем файл с паролем:
# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user1 password Adding password for user user1
Отредактируем конфигурационный файл nginx, добавив в секцию server {} новый location:
location /phpmyadmin/ { auth_basic "Enter password"; auth_basic_user_file /usr/share/phpMyAdmin/.htpasswd; }
Сохраняете конфиг, перезапускаете nginx и проверяете доступ к странице. Должно выскочить такое же, как и с apache, окно авторизации.
Рассмотрим еще несколько полезных настроек phpmyadmin. После входа в панель, в разделе Настройки вы увидите сообщение:
Ваши настройки будут сохранены только для текущей сессии. Для постоянного хранения требуется подключение модуля хранения настроек phpMyAdmin.
Подключим необходимый модуль для сохранения настроек. Модуль это громко сказано, нам всего лишь необходимо создать отдельную базу данных для хранения настроек и активации некоторых расширенных возможностей. Файл для создания базы данных хранится в директории phpmyadmin по адресу /usr/share/phpMyAdmin/sql/create_tables.sql. Копируем содержимое этого файла и выполняем его тут же, в phpmyadmin в разделе SQL:
Теперь можно идти в настройки и изменять их. Я обычно отключаю проверку новой версии. Они выходят достаточно часто, обновлять мне все равно их лень, поэтому информация о новых версиях мне не нужна. Так же отключаю логотип, можно загрузить свой. Сами полистайте настройки, посмотрите, что вам интересно. Все пункты неплохо задокументированы, можно почитать за что отвечают. Иногда бывает полезно вывести отдельный столбец в списке таблиц с информацией по дате создания и обновления. Это настраивается в разеделе Настройки -> Основная панель -> Структура базы данных.
Если вы хотите подключиться к удаленному mysql серверу с помощью phpmyadmin, воспользуйтесь скриптом настройки подключения по адресу http://ip-адрес-сервера/phpmyadmin/setup/.
Introduction
phpMyAdmin is a free and open-source software written in PHP programming language to provide you the ability to take control of your MySQL database over the internet. phpMyAdmin supports a wide range of operations on MySQL and MariaDB using a very simple and elegant user interface while you still have the ability to directly execute any SQL statement. here are some of the main benefits of phpMyAdmin:
- Import data from CSV and SQL
- Administrating multiple servers
- Creating PDF graphics of the database layout
- Searching globally in a database or a subset of it
- working with different operating systems
We are assuming that you have root permission, otherwise, you may start commands with “sudo”.
Один PhpMyAdmin для разных серверов
Обна из удобных возможностей программы это возможность имея одну версию подключатся к базам данных работающих на разных серверах.
В конфигурации выше был указан следующий код который отвечает за возможность подключатся к удаленым базам данных:
/* Server: wp */ $i++; $cfg = 'wp'; - отображение в меню выбора $cfg = '10.10.0.3'; - ip сервера с убаленой db $cfg = ''; $cfg = ''; $cfg = 'cookie'; $cfg = ''; $cfg = '';
Для реализации этой возможности необходимо сделать еще две вещи:
- Добавить параметр bind-address=0.0.0.0 в конфигурационном файле самого сервера баз MariaDB разрешающий подключатся с любого адреса (или укажите конкретный IP) в разделе ;
- Сделать необходимые права для пользователя баз данных.
О том как выполнить данные требования почитайте в статье .
Step 5: Restrict Unauthorized Access to phpMyAdmin (Optional)
You should now have a working phpMyAdmin utility. This section will help you prevent unauthorized access to sensitive databases.
Allow phpMyAdmin Only From a Specific IP Address
1. Open the phpmyadmin.conf file in a text editor (we will be using nano):
2. Find the following sections:
3. Replace these lines with the following:
4. Save and close the file.
Note: Replace your_system’s_ip_address with the system’s actual IP address. If you have multiple systems to allow, add a line for each IP address.
Add an Extra Password Authentication
1. Create a new authentication file. In a terminal window, enter the following:
2. You are prompted to enter and confirm an admin password. Do so, and make a note of the password.
3. Next, update Apache to use .htpasswd by editing /etc/httpd/conf.d/phpmyadmin.conf as follows:
4. Just underneath the line labeled , add the following lines:
5. Save the file and exit.
6. Finally, restart Apache:
Access phpMyAdmin with Updated Credentials
1. Browse back to localhost/phpmyadmin.
2. Enter the newly-defined admin username and password.
It should take you to the main login screen as seen at the end of the previous section.
Conclusion
You should now have a working installation of phpMyAdmin on a CentOS 8 system. Use this graphic utility to manage your MySQL databases.
Step Two — Secure your phpMyAdmin Instance
The phpMyAdmin instance installed on our server should be completely usable at this point. However, by installing a web interface, we have exposed our MySQL system to the outside world.
Even with the included authentication screen, this is quite a problem. Because of phpMyAdmin’s popularity combined with the large amount of data it provides access to, installations like these are common targets for attackers.
We will implement two simple strategies to lessen the chances of our installation being targeted and compromised. We will change the location of the interface from to something else to sidestep some of the automated bot brute-force attempts. We will also create an additional, web server-level authentication gateway that must be passed before even getting to the phpMyAdmin login screen.
Changing the Application’s Access Location
In order for our Nginx web server to find and serve our phpMyAdmin files, we created a symbolic link from the phpMyAdmin directory to our document root in an earlier step.
To change the URL where our phpMyAdmin interface can be accessed, we simply need to rename the symbolic link. Move into the Nginx document root directory to get a better idea of what we are doing:
As you can see, we have a symbolic link called in this directory. We can change this link name to whatever we would like. This will change the location where phpMyAdmin can be accessed from a browser, which can help obscure the access point from hard-coded bots.
Choose a name that does not indicate the purpose of the location. In this guide, we will name our access location . To accomplish this, we will just rename the link:
Now, if you go to the previous location of your phpMyAdmin installation, you will get a 404 error:
However, your phpMyAdmin interface will be available at the new location we selected:
Setting up a Web Server Authentication Gate
The next feature we wanted for our installation was an authentication prompt that a user would be required to pass before ever seeing the phpMyAdmin login screen.
Fortunately, most web servers, including Nginx, provide this capability natively. We will just need to modify our Nginx configuration file with the details.
Before we do this, we will create a password file that will store our the authentication credentials. Nginx requires that passwords be encrypted using the function. The OpenSSL suite, which should already be installed on your server, includes this functionality.
To create an encrypted password, type:
You will be prompted to enter and confirm the password that you wish to use. The utility will then display an encrypted version of the password that will look something like this:
Copy this value, as you will need to paste it into the authentication file we will be creating.
Now, create an authentication file. We will call this file and place it in the Nginx configuration directory:
Within this file, you simply need to specify the username you would like to use, followed by a colon (:), followed by the encrypted version of your password you received from the utility.
We are going to name our user , but you should choose a different username. The file for this guide looks like this:
Save and close the file when you are finished.
Now, we are ready to modify our Nginx configuration file. Open this file in your text editor to get started:
Within this file, we need to add a new location section. This will target the location we chose for our phpMyAdmin interface (we selected in this guide).
Create this section within the block, but outside of any other blocks. We will put our new location block below the block in our example:
Within this block, we need to set the value of a directive called to an authentication message that our prompt will display to users. We do not want to indicate to unauthenticated users what we are protecting, so do not give specific details. We will just use “Admin Login” in our example.
We then need to use a directive called to point our web server to the authentication file that we created. Nginx will prompt the user for authentication details and check that the inputted values match what it finds in the specified file.
After we are finished, the file should look like this:
Save and close the file when you are finished.
To implement our new authentication gate, we must restart the web server:
Now, if we visit our phpMyAdmin location in our web browser (you may have to clear your cache or use a different browser session if you have already been using phpMyAdmin), you should be prompted for the username and password you added to the file:
Once you enter your credentials, you will be taken to the normal phpMyAdmin login page. This added layer of protection will help keep your MySQL logs clean of authentication attempts in addition to the added security benefit.
Скачивание и распаковка архива
Для загрузки файлов через консоль установим необходимый пакет:
yum -y install wget
Перейдем в необходимую папку и скачаем туда нужную версию, выполнив по очереди команды:
cd /var/www/pma.sevo44.ru wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
Установим без вопросов пакет который нам даст возможность распаковать архивы zip:
yum install -y unzip
Распакуем полученный архив в необходимое место:
unzip /var/www/pma.sevo44.ru/phpMyAdmin-4.9.1-all-languages.zip -d /var/www/pma.sevo44.ru/
Скопируем все файлы из папки phpMyAdmin-4.9.1-all-languages в папку www:
cp -rp /var/www/pma.sevo44.ru/phpMyAdmin-4.9.1-all-languages/* /var/www/pma.sevo44.ru/www/
Дадим необходимые права для Nginx на все папки и файлы:
chown -R nginx:nginx /var/www/pma.sevo44.ru
Все данные готовы! Дальше необходимо настроить Nginx для работы PhpMyAdmin.
6 Получение поддержки MySQL в PHP
Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php-mysqlnd. Рекомендуется установить некоторые другие модули PHP, так как они могут вам понадобиться для ваших приложений. Вы можете искать доступные модули PHP5 следующим образом:
yum search php
Выберите те, которые вам нужны, и установите их так:
yum -y install php-mysqlnd php-pdo
На следующем шаге я установлю некоторые распространенные модули PHP, необходимые для систем CMS, такие как WordPress, Joomla и Drupal:
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-soap curl curl-devel
Теперь перезапустите веб-сервер Apache:
systemctl restart httpd.service
Теперь перезагрузите http://192.168.0.100/info.php в вашем браузере и снова прокрутите вниз до раздела модулей. Теперь вы должны найти много новых модулей, таких как curl и т.д.
Если вам больше не нужен вывод информации PHP, удалите этот файл по соображениям безопасности.
rm /var/www/html/info.php
Настройка PhpMyAdmin
1) Идем в корневую в директорию нашего PMA и создаем там папку config с правами на запись (chmod 777)
cd /var/www/html/pma mkdir -p /config chmod 777 /config
2)Заходим в скрипт настройки нашего PMA https://192.168.1.50/pma/setup/. Жмем на кнопку новый сервер. На первой вкладке ставим галку Использовать SSL. На вкладке Идентификация выбираем тип http.
Хранение конфигурации. Тут везде жмем на карандашик.
В новой вкладке, не закрывая настройки конфигурации, заходим в наш PMA под пользователем root https://192.168.1.50/pma/. Идем в Базы данных. Создаем базу phpmyadmin. Она появится в списке. Жмем Привилегии => Добавить нового пользователя.
Имя — pma.
Хост — локальный.
Пароль — Генерировать(или укажите свой).
Копируем это имя и пароль в нашу вкладку с настройками конфигурации. Опять возвращаемся на вкладку с настройками пользователя, жмем кнопку ок. Далее на этой странице в левой колонке выбираем базу phpmyadmin а в верхнем меню на вкладку SQL. Вставляем туда текст из файла
/var/www/html/sql/create_tables.sql, который находится в папке с PMA, жмем ок.
После этого, эту вкладку можно закрыть. Возвращаемся на вкладку с настройками конфигурации. Жмем сохранить.
Оказываемся снова на главной странице настроек, где появился наш сервер. Выбираем язык по умолчанию, наш сервер (localhost ). Далее нажимаем кнопки Сохранить и Скачать. Сохраняем наш файл конфигурации к себе на компьютер, а затем закачиваем его в папку с PhpMyAdmin.
3) Удаляем, созданную нами, папку config.
4) Далее заходим в phpmyadmin уже с новой схемой авторизации. которую мы задали с помощью нашего конфигурационного файла и идем в Дополнительные настройки. Там уже на свой вкус настраиваем вид отображения. Эти настройки будут храниться в таблицах базы phpmyadmin, которую мы создали.
2 Установка MySQL / MariaDB
MariaDB — это MySQL форк оригинального разработчика MySQL Монти Видениуса. MariaDB совместима с MySQL, и я решил использовать здесь MariaDB вместо MySQL. Запустите эту команду, чтобы установить MariaDB с yum:
yum -y install mariadb-server mariadb
Затем мы создаем ссылки запуска системы для MySQL (чтобы MySQL запускался автоматически при загрузке системы) и запускаем сервер MySQL:
systemctl start mariadb.service systemctl enable mariadb.service
Установите пароли для учетной записи root MySQL:
mysql_secure_installation # mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): <--ENTER OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] New password: <--yourmariadbpassword Re-enter new password: <--yourmariadbpassword Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] <--ENTER ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] <--ENTER ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] <--ENTER - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] <--ENTER ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! #
1: Добавление репозитория EPEL
Пакет phpMyAdmin не включен в стандартные репозитории CentOS, но его можно найти в репозитории EPEL (Extra Packages for Enterprise Linux), разработанном Fedora Projects.
Чтобы добавит EPEL в список исходников yum, нужно загрузить конфигурационный файл репозитория. Для этого запустите команду:
Обратите внимание: несмотря на то, что данный файл относится к 64-битному репозиторию, он является архитектурно-независимым и может использоваться и для 32-, и для 64-битных установок. Итак, теперь файл загружен в домашний каталог
Установите его, набрав:
Итак, теперь файл загружен в домашний каталог. Установите его, набрав:
Теперь менеджер пакетов знает о новом репозитории EPEL и может запрашивать у него пакеты.
Чтобы убедиться, что все прошло успешно, наберите:
Как видите, в данном списке присутствует и EPEL.
Поскольку репозиторий спешно добавлен в систему, удалите его конфигурационный пакет, набрав:
Установка NGINX
Устанавливаем NGINX:
yum install nginx
Внесем небольшую корректировку в файл nginx.conf:
vi /etc/nginx/nginx.conf
http {
…
server_names_hash_bucket_size 64;
….
}
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Разрешаем автозапуск сервиса и запустим его:
systemctl enable nginx
systemctl start nginx
Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:
* обратите внимание, что данное приветствие может иметь и другой вид. Для настройки http/2 читайте соответствующую статью
Для настройки http/2 читайте соответствующую статью.
1. Установите phpMyAdmin на CentOS 8
Шаг 1 Первым шагом будет установка веб-сервера Apache, для этого мы выполним следующее:
ням установить httpd -y
Шаг 2 Как только этот процесс закончится, мы увидим следующее:
Шаг 3 Мы проверим состояние веб-сервера в CentOS 8, запустив:
статус systemctl httpd
Шаг 1 В этом случае мы видим, что сервис не активен, для продолжения авторизации необходимо выполнить следующее:
systemctl запускает httpd
Шаг 4 Чтобы отключить Apache, мы должны выполнить следующее:
systemctl отключить httpd
systemctl stop httpd
systemctl включить httpd
Шаг 5 Чтобы убедиться, что Apache работает должным образом, мы должны знать IP-адрес сервера, это можно узнать с помощью команды «ip add»:
Шаг 6 Мы включим и авторизуем службу Apache в брандмауэре CentOS 8, для них мы выполним следующие строки:
firewall-cmd --permanent --add-port = 80 / tcp firewall-cmd --permanent --add-port = 443 / tcp
firewall-cmd –reload
Шаг 7 Чтобы проверить Apache, мы заходим в браузер и вводим следующий синтаксис:
http: // IP_address
Шаг 8 Результат должен быть похож на это:
Start phpMyAdmin 4.4.9 Installation:
After we had confirmed that our basic environment to setup phpMyAdmin installation is fine, let’s proceed with the following steps to setup phpMyAdmin.
STEP 1: Download phpMyAdmin 4.4.9 Package
Many operating systems already includes with its package but unfortunately in CentOs 7.1 its not available by default in its repositories. So we can install it with two different methods, one is to enable the EPEL repository first and then install it using following YUM commands.
The second method is to download the latest release from its official web link.So, we will follow the second method to download the latest release of phpMyAdmin 4.4.9 in tar.gz package.
STEP 2: Extract phpMyAdmin 4.4.9 Package
We will extract this .tar.gz package into the document root directory of Nginx to create its virtual host after that.
Now change its name to a user friendly name with MV command. Let’s move html directory first and change its name as.
STEP 3: Configure phpMyAdmin Virtual Host
In order to access phpMyAdmin over the web we need to configure its virtual host. Create an new file within the default configuration directory of Nginx.
Установка PhpMyAdmin (PMA)
Ставить будем вручную. Для этого нам потребуется менеджер загрузок wget.
Идем на http://www.phpmyadmin.net/downloads и копируем ссылку на самую последнюю мультиязычную версию PhpMyAdmin со сжатием .zip (На данный момент это — https://files.phpmyadmin.net/phpMyAdmin/4.4.15.7/phpMyAdmin-4.4.15.7-all-languages.zip).
Идем в /var/www/html/:
cd /var/www/html/
Скачиваем PMA:
wget https://files.phpmyadmin.net/phpMyAdmin/4.4.15.7/phpMyAdmin-4.4.15.7-all-languages.zip
В директории появится архив phpMyAdmin-4.6.3-all-languages.zip, распаковываем его:
unzip phpMyAdmin-4.4.15.7-all-languages.zip
Переименуем директорию phpMyAdmin-4.4.15.7-all-languages в pma:
mv phpMyAdmin-4.4.15.7-all-languages pma
Удалим архив phpMyAdmin-4.4.15.7-all-languages.zip т.к. он нам больше не нужен:
rm phpMyAdmin-4.4.15.7-all-languages.zip
Установка phpMyAdmin
Установка может быть выполнена из репозитория (для CentOS 7) или путем загрузки портала с сайта разработчика (CentOS 8 или CentOS 7). Рассмотрим оба варианта.
а) Установка из репозитория
Данный вариант доступен только для CentOS 7.
Устанавливаем расширенный репозиторий EPEL:
yum install epel-release
Устанавливаем phpMyAdmin:
yum install phpmyadmin
* если мы увидим ошибку «пакета с названием phpmyadmin не найдено», проверяем еще раз наличие установленного репозитория epel.
б) Установка вручную
Данный способ универсальный — он подходит для CentOS 8 и CentOS 7.
Устанавливаем пакеты, необходимые для скачивания и распаковки архива:
yum install wget unzip
Переходим на сайт разработчика phpMyAdmin и копируем ссылку на нужную нам версию, например, последнюю:
Воспользовавшись скопированной ссылкой, скачиваем архив с установочными файлами:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
* на момент написания инструкции, последняя стабильная версия была 4.9.1.
Распаковываем скачанный архив:
unzip phpMyAdmin-*-all-languages.zip
Создаем каталог для phpmyadmin, например:
mkdir /usr/share/phpMyAdmin
… и переносим в него содержимое распакованного архива:
mv phpMyAdmin-*-all-languages/* /usr/share/phpMyAdmin/
Задаем владельца для каталога:
chown -R apache:apache /usr/share/phpMyAdmin
* как правило, сервис, которых обрабатываем php-запросы работает от пользователя apache.