pfzim / ldap-phonebook

Phonebook with office map (Active Directory, LDAP -> MySQL, PHP)
GNU General Public License v3.0
53 stars 27 forks source link

Чистая установка на Ubuntu server #33

Open angel13rus opened 3 years ago

angel13rus commented 3 years ago

А можно опубликовать пошаговую инструкцию для установки на голую UBUNTU?

angel13rus commented 3 years ago

Сам спросил, сам ответил. ))) #############Установка LDAP Phonebook на Ubuntu 20.04

Установка Java на Ubuntu 20.04
  1. Установка OpenJDK 11 Запустите приведенную ниже команду, чтобы установить пакет OpenJDK 11 в вашей системе.

sudo apt update sudo apt install openjdk-11-jdk После завершения установки проверим версию Java:

java -version

  1. Установка OpenJDK 8 Java 8 является предыдущей стабильной версией, над ней работает большинство java-приложений. Запустите приведенную ниже команду, чтобы установить пакет OpenJDK 8 в вашей системе.

sudo apt update sudo apt install openjdk-8-jdk Проверим версию после установки:

Переключение между несколькими версиями Java Большинство систем на основе Unix/Linux позволяет устанавливать несколько версий Java в одной системе. Вы можете изменить версию Java по умолчанию в соответствии с вашими требованиями.

Варианты обновления предоставляют возможность поддерживать символические ссылки для команд по умолчанию. Чтобы изменить версию Java по умолчанию, выполним команду на терминале:

Данная команда покажет список всех двоичных файлов Java, установленных в системе. Введите число, чтобы выбрать версию Java по умолчанию, и нажмите Enter.

При успешном выполнении вышеупомянутой команды снова запустите команду java -version, чтобы проверить текущую версию Java по умолчанию.

########УСТАНОВКА СТЕКА LAMP В UBUNTU 20.04

1: Установка Apache и настройка брандмауэра

sudo apt update sudo apt install apache2

sudo ufw app list sudo ufw allow in "Apache"

-----Также можно при помощи утилиты curl запросить свой адрес у третьей стороны. curl http://icanhazip.com

-----Нужно отредактировать файл /etc/apache2/mods-enabled/dir.conf и изменить порядок файлов в директиве DirectoryIndex. Откройте файл.

sudo nano /etc/apache2/mods-enabled/dir.conf

Поставьте index.php перед index.html:

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Сохраните файл, а затем перезапустите веб-сервер:

sudo systemctl reload apache2

-----Создание виртуального хоста

sudo mkdir /var/www/pb

Затем определите права на каталог:

sudo chown -R www-data:www-data /var/www/pb

Затем создайте новый файл в каталоге sites-available с помощью nano или другого текстового редактора:

sudo nano /etc/apache2/sites-available/pb.conf

Вставьте в пустой файл эту базовую конфигурацию: <VirtualHost *:80> ServerName pb.domen.ru ServerAlias phonebook.domen.ru ServerAlias pb.domen.local ServerAlias phonebook.domen.local ServerAdmin it@domen.ru DocumentRoot /var/www/pb ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Теперь вы можете использовать a2ensite для включения этого виртуального хоста:

sudo a2ensite pb

Возможно, вы захотите отключить веб-сайт по умолчанию, который устанавливается вместе с Apache. Это необходимо, если вы не используете пользовательский домен, потому что в этом случае конфигурация Apache по умолчанию перезапишет ваш виртуальный хост. Чтобы отключить веб-сайт Apache по умолчанию, введите:

sudo a2dissite 000-default

Проверьте ошибки в конфигурации:

sudo apache2ctl configtest

Если ошибок нет, команда вернет: Syntax OK

Перезапустите Apache, чтобы обновить настройки:

sudo systemctl reload apache2

Теперь Apache обслуживает домен вашего нового сайта. Но пока что каталог /var/www/pb все еще пуст. Давайте мы создадим файл index.html, чтобы протестировать новый сайт.

nano /var/www/pb/index.php

Вставьте в файл такие строки:

It works!

This is the landing page of your_domain.

Откройте браузер и посетите домен или IP вашего сервера: http://pb.domen.local - Локальное имя хоста http://pb.domen.ru - Внешнее имя хоста, Если публикуете во вне. Проверить настройки Фаервола и NAT. Либо по IP http://192.168.XXX.XXX

Вы должны увидеть такое сообщение: It works! This is the landing page of your_domain

Если вы видите эту страницу, ваш виртуальный хост Apache работает должным образом.

2: Установка MySQL

sudo apt install mysql-server

После установки системе MySQL требуется настройка. Чтобы защитить ваш экземпляр, можно запустить простой встроенный скрипт безопасности, который удалит потенциально рискованные настройки. Запустите этот скрипт:

sudo mysql_secure_installation

После настройки откройте командную строку MySQL в терминале:

sudo mysql

Чтобы закрыть консоль MySQL, введите:

exit

Чтобы создать новую базу данных, войдите в СУБД как root:

sudo mysql

И выполните следующую команду из консоли MySQL:

CREATE DATABASE pb;

Теперь можно создать нового пользователя и предоставить ему полные права на новую базу данных. На момент написания этого мануала mysqlnd (PHP-библиотека для MySQL) не поддерживает caching_sha2_authentication, стандартный метод аутентификации MySQL 8. Нам нужно создать нового пользователя с аутентификацией mysql_native_password, чтобы иметь возможность подключиться к БД MySQL из PHP

Следующая команда создаст пользователя, который поддерживает аутентификацию по методу mysql_native_password. Также команда определяет условный пароль этого пользователя (password), который вы должны заменить безопасным паролем.

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD'; CREATE USER 'pb'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

Эта команда предоставит пользователю полные права доступа ко всем БД:

GRANT ALL ON . TO 'root'@'%'; GRANT ALL ON . TO 'pb'@'%';

После этого выйдите из оболочки MySQL:

exit

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

mysql -u root -p

3: Установка PHP PHP – это серверный язык сценариев для написания динамических страниц. Он позволяет запускать сценарии, подключаться к БД MySQL и передавать обработанный контент в браузер для отображения.

PHP также можно установить с помощью менеджера apt. Вам также понадобятся вспомогательные пакеты php-mysql (для настройки взаимодействия PHP и MySQL) и libapache2-mod-php (который отвечает за работу Apache с PHP).

Чтобы установить все эти пакеты, введите команду:

sudo apt-get install php libapache2-mod-php php-mysql php-ldap php-cli

apt-cache show php-cli

sudo apt-get install

После завершения установки вы можете запросить версию PHP, чтобы убедиться, что все работает верно.

php -v

Включение, выключение модулей PHP в Ubuntu extension=php_ldap.dll extension=php_fileinfo.dll

Включение

sudo phpenmod -s apache2 ldap

sudo phpenmod -s apache2 fileinfo

sudo phpenmod -s apache2 mysqli

sudo phpenmod -s apache2 pdo_mysql

sudo service php7.4 reload

Раскоментить строки в:

nano /etc/php/7.4/apache2/php.ini

extension=curl extension=fileinfo extension=ldap extension=mysqli extension=pdo_mysql

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

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

Создайте этот файл в корневом каталоге веб-сервера:

nano /var/www/pb/info.php

На экране появится пустой файл. Поместите в него такой код: <?php phpinfo(); Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере: http://pb.domen.ru/info.php

На экране появится веб-страница, содержащая информацию о сервере (она также может пригодиться вам при отладке). Если такая страница появилась, веб-сервер обслуживает файлы PHP.

Важно! После проверки обязательно удалите этот файл, иначе любой пользователь сможет получить доступ к конфиденциальным данным о среде PHP и о вашем сервере Ubuntu.

sudo rm /var/www/pb/info.php

В случае необходимости вы сможете быстро создать эту страницу снова.

6: Тестирование соединения базы данных с PHP (опционально) Если вы хотите проверить, может ли PHP подключаться к MySQL и выполнять запросы к базе данных, вы можете создать тестовую таблицу с фиктивными данными и запросить ее содержимое из сценария PHP.

Сначала нам нужно создать тестовую базу данных и пользователя для доступа к ней.

.

Давайте создадим базу данных example_database и пользователя example_user (вы можете заменить эти имена другими значениями).

#################Установка LDAP phonebook С клонировать: git clone https://github.com/pfzim/ldap-phonebook.git

Скопировать клонированное содержимое в /var/www/pb

Открыть в браузере install.php и заполнить предлагаемые параметры Заменить изображения карт templ/map[1-5].png своими схемами Дополнительные настройки в inc.config.php (опционально)

http://pb.domen.local - Локальное имя хоста http://pb.domen.ru - Внешнее имя хоста, Если публикуете во вне. Проверить настройки Фаервола и NAT. Либо по IP http://192.168.XXX.XXX

Для включения LDAP аутентификации в LDAP_ADMIN_GROUP_DN нужно указать группу AD через которую предоставляется доступ: // Группа в AD с пользователями имеющими доступ на редактирование справочника define('LDAP_ADMIN_GROUP_DN', 'CN=Phonebook admin,OU=Admin Roles,OU=Groups,OU=Company,DC=domain,DC=local');

Изменить количество и названия карт: define('PB_MAPS_COUNT', 5); $map_names = array('Floor 1', 'Floor 3', 'Floor 6', 'Floor 14', 'Floor 25'); Изменить язык (cпасибо @Impuls2003):

define('APP_LANGUAGE', 'ru');

Параметры LDAP_HOST и LDAP_PORT заменены на LDAP_URI. Пример: ldaps://dc-01 ldap://dc-02:389

pfzim commented 3 years ago

Спасибо за инструкцию!

Только зачем ставить Java? Она не требуется для работы справочника. И пункт 2 избыточен. База данных и пользователь создаются инсталлятором

angel13rus commented 3 years ago

Ну там под свои задачи нужна. ))) Не за что. Вам спасибо за столь полезный код.

вт, 22 июн. 2021 г., 14:03 pfzim @.***>:

Reopened #33 https://github.com/pfzim/ldap-phonebook/issues/33.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/pfzim/ldap-phonebook/issues/33#event-4921997220, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUQCNTNJ74WUO2DWVXS7UJLTUBUW5ANCNFSM463JESMA .

im0t0 commented 2 years ago

Спасибо за инструкцию, но как-то она странно заканчивается.

На экране появится пустой файл. Поместите в него такой код:

pfzim commented 2 years ago

На мой взгляд эта инструкция сильно избыточна. Достаточно установить Apache (nginx), MariaDB (MySQL), PHP и запустить install.php для создания БД и конфига.

SManuchehr commented 2 months ago

Ребята я все по инструкции сделал у меня не получается помогите LTEZp2dScm

pfzim commented 2 months ago

Установка (install.php) прошла успешно? Что видно в логах Apache?

SManuchehr commented 2 months ago

Да успешно установлен. вот лог брат [Fri Jul 05 10:20:55.947160 2024] [php7:error] [pid 1037] [client 192.168.3.252:2224] PHP Fatal error: Uncaught Exception: Core: Access denied for user 'dbuser'@'localhost' in /var/www/html/modules/Core.php:107\nS tack trace:\n#0 /var/www/html/modules/Core.php(100): Core->error_ex()\n#1 /var/www/html/modules/MySQLDB.php(98): Core->error()\n#2 /var/www/html/modules/MySQLDB.php(223): MySQLDB->connect()\n#3 /var/www/html/module s/Config.php(33): MySQLDB->select_ex()\n#4 /var/www/html/modules/Config.php(62): Config->load()\n#5 /var/www/html/modules/Config.php(80): Config->get_ex()\n#6 /var/www/html/pb.php(154): Config->get_global()\n#7 {ma in}\n thrown in /var/www/html/modules/Core.php on line 107

SManuchehr commented 2 months ago

192.168.3.252 - - [05/Jul/2024:10:57:41 +0000] "GET / HTTP/1.1" 302 224 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" 192.168.3.252 - - [05/Jul/2024:10:57:41 +0000] "GET /pb.php HTTP/1.1" 500 295 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/5 37.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

pfzim commented 2 months ago

Вот же:

Access denied for user 'dbuser'@'localhost'

Нет доступа к БД. Что-то не так настроили. Может в пароле ошиблись