Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
angel13rus opened this issue Jun 17, 2021 · 10 comments
Open

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

angel13rus opened this issue Jun 17, 2021 · 10 comments

Comments

@angel13rus
Copy link

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

@angel13rus
Copy link
Author

angel13rus commented Jun 22, 2021

Сам спросил, сам ответил. )))
#############Установка 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 [email protected]
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

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

@pfzim
Copy link
Owner

pfzim commented Jun 22, 2021

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

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

@pfzim pfzim reopened this Jun 22, 2021
@angel13rus
Copy link
Author

angel13rus commented Jun 22, 2021 via email

@im0t0
Copy link

im0t0 commented Nov 13, 2021

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

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

@pfzim
Copy link
Owner

pfzim commented Nov 13, 2021

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

@SManuchehr
Copy link

SManuchehr commented Jul 4, 2024

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

@pfzim
Copy link
Owner

pfzim commented Jul 5, 2024

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

@SManuchehr
Copy link

Да успешно установлен.
вот лог брат
[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
Copy link

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
Copy link
Owner

pfzim commented Jul 5, 2024

Вот же:

Access denied for user 'dbuser'@'localhost'

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants