Поиск по сайту:

Руководство по серверу LAMP Ubuntu 18.04 (LTS) с Apache, PHP 7.2 и MySQL


Это руководство существует для этих версий ОС

  • Ubuntu 18.04 (Bionic Beaver)
  • Ubuntu 14.04 LTS (Trusty Tahr)

На этой странице

  1. Предварительное примечание
  2. 1. Установка базы данных MySQL или MariaDB
    1. 1.1 Установите MySQL 5.7
    2. 1.2 Установите MariaDB 10
    3. 1.3. Протестируйте корневую учетную запись MySQL/MariaDB.

    1. 8.1 Позволяет зашифровать автоматическое продление

    1. 9.1 Корневой доступ к PHPMyAdmin

    LAMP — это сокращение от Linux, Apache, MySQL, PHP. В этом руководстве показано, как установить веб-сервер Apache на сервер Ubuntu 18.04 LTS (Bionic Beaver) с поддержкой PHP 7.2 (mod_php) и MySQL/MariaDB, а также как настроить SSL-сертификат с помощью Lets encrypt. Кроме того, я установлю PHPMyAdmin, чтобы упростить администрирование MySQL. Установка LAMP является идеальной основой для популярных систем CMS, таких как Joomla, Wordpress или Drupal.

    Предварительное примечание

    В этом руководстве я буду использовать имя хоста server1.example.com с IP-адресом 192.168.1.100. Эти настройки могут отличаться для вас, поэтому вам придется заменить их там, где это необходимо. =div-gpt-ad-howtoforge_com-medrectangle-3-0;var ffid=1;var alS=1021%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins=document .createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset.fullWidthResponsive =правда;}

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

    Я выполняю все шаги в этом руководстве с привилегиями root, поэтому убедитесь, что вы вошли в систему как root:

    sudo -s

    1. Установка базы данных MySQL или MariaDB

    В настоящее время доступны две широко используемые системы баз данных MySQL: классический сервер «MySQL», разработанный Oracle и доступный сейчас в версии 5.7, и ответвление MySQL под названием MariaDB, разработанное первоначальным разработчиком MySQL Монти Видениусом.

    Я покажу вам, как установить обе альтернативы ниже. Просто следуйте либо главе 1.1, либо 1.2, но не обоим. Я буду использовать MySQL 5.7 для образа виртуальной машины, который можно загрузить с Howtoforge.

    1.1 Установите MySQL 5.7

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

    apt-get -y install mysql-server mysql-client

    Пакеты mysql-server и mysql-client являются так называемыми метапакетами, они всегда устанавливают последнюю версию MySQL, доступную в Ubuntu. На данный момент последней версией является MySQL 5.7.

    Мы установили пароль root для MySQL уже во время установки, но я хотел бы удалить анонимного пользователя и тестовую базу данных из соображений безопасности. Для этого выполните приведенную ниже команду mysql_secure_installation.

    mysql_secure_installation

    Вам будут заданы следующие вопросы:

    Securing the MySQL server deployment.
    Enter password for user root: <-- Enter the MySQL root password
    VALIDATE PASSWORD PLUGIN can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD plugin?
    Press y|Y for Yes, any other key for No:
    Using existing password for root.
    Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
    ... skipping.
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : <-- y
    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? (Press y|Y for Yes, any other key for No) : <-- y
    Success.
    By default, MySQL 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? (Press y|Y for Yes, any other key for No) : <-- y
    - 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? (Press y|Y for Yes, any other key for No) : <-- y
    Success.
    All done!

    Теперь установка MySQL защищена.

    1.2 Установите MariaDB 10

    Выполните следующую команду, чтобы установить сервер и клиент MariaDB:

    apt-get -y install mariadb-server mariadb-client

    Теперь мы устанавливаем пароль root для MariaDB.

    mysql_secure_installation

    Вам будут заданы следующие вопросы:

    Enter current password for root (enter for none): <-- press enter
    Set root password? [Y/n] <-- y
    New password: <-- Enter the new MariaDB root password here
    Re-enter new password: <-- Repeat the password
    Remove anonymous users? [Y/n] <-- y
    Disallow root login remotely? [Y/n] <-- y
    Reload privilege tables now? [Y/n] <-- y

    1.3. Проверьте корневую учетную запись MySQL/MariaDB.

    Проверьте вход в MariaDB с помощью \команды mysql\

    mysql -u root -p

    и введите корневой пароль MariaDB, который вы установили выше. Результат должен быть похож на скриншот ниже:

    Чтобы покинуть оболочку MySQL/MariaDB, введите команду «выход» и нажмите клавишу ввода.

    2. Установите веб-сервер Apache

    Apache 2 доступен в виде пакета Ubuntu, поэтому мы можем установить его следующим образом:

    apt-get -y install apache2

    Теперь направьте свой браузер на http://192.168.1.100, и вы должны увидеть страницу Apache2 по умолчанию (это работает!):

    Корень документа виртуального хоста apache по умолчанию — /var/www/html в Ubuntu, а основной файл конфигурации — /etc/apache2/apache2.conf. Система конфигурации полностью задокументирована в /usr/share/doc/apache2/README.Debian.gz.

    3. Установите PHP 7.2

    Мы можем установить PHP 7.2 и модуль Apache PHP следующим образом:

    apt-get -y install php7.2 libapache2-mod-php7.2

    Затем перезапустите Апач:

    systemctl restart apache2

    4. Протестируйте PHP и получите подробную информацию об установке PHP

    Корень документа веб-сайта по умолчанию — /var/www/html. Теперь мы создадим небольшой файл PHP (info.php) в этом каталоге и вызовем его в браузере. Файл будет отображать множество полезных сведений о нашей установке PHP, например, установленную версию PHP.

    nano /var/www/html/info.php
    <?php
    phpinfo();

    Затем измените владельца файла info.php на пользователя и группу www-data.

    chown www-data:www-data /var/www/html/info.php

    Теперь мы вызываем этот файл в браузере (например, http://192.168.1.100/info.php):

    Как видите, PHP 7.2 работает и работает через обработчик Apache 2.0, как показано в строке API сервера. Если вы прокрутите дальше вниз, вы увидите все модули, которые уже включены в PHP. MySQL там не указан, что означает, что у нас пока нет поддержки MySQL/MariaDB в PHP.

    5. Получите поддержку MySQL/MariaDB в PHP

    Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.2-mysql. Это хорошая идея, чтобы установить некоторые другие модули PHP, а также они могут вам понадобиться для ваших приложений. Вы можете искать доступные модули PHP следующим образом:

    apt-cache search php7.2

    и

    apt-cache search php-

    поскольку не все пакеты PHP имеют номер версии 7.2 в своем имени.

    Выберите те, которые вам нужны, и установите их следующим образом:

    apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache  php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext

    Теперь перезапустите Apache2:

    systemctl restart apache2

    PHP 7.2 теперь поддерживает MySQL/MariaDB, как показано выше в phpinfo().

    6. Установите кеш PHP Opcache + APCu для ускорения PHP

    PHP 7 поставляется со встроенным кэшером кода операции для кэширования и оптимизации промежуточного кода PHP, он называется opcache и доступен в пакете php7.0-opcache. Настоятельно рекомендуется установить Opcache для ускорения PHP-страницы. Помимо opcache, я установлю APCu, который является оболочкой совместимости для opcache, чтобы обеспечить функции кеша APC, часто используемой системы кэширования в версиях PHP 5.x, и многие системы CMS все еще используют ее.

    Opcache и APCu можно установить следующим образом:

    apt-get -y install php7.2-opcache php-apcu

    Не беспокойтесь, если он покажет, что Opcache уже установлен.

    Теперь перезапустите Apache:

    systemctl restart apache2

    Теперь перезагрузите http://192.168.1.100/info.php в браузере и снова прокрутите вниз до раздела модулей. Теперь вы должны найти там много новых модулей:

    Пожалуйста, не забудьте удалить файл info.php, когда он вам больше не нужен, так как он предоставляет конфиденциальную информацию о вашем сервере. Выполните следующую команду, чтобы удалить файл.

    rm -f /var/www/html/info.php

    7. Включите веб-сайт SSL в apache.

    SSL/TLS — это уровень безопасности для шифрования соединения между веб-браузером и вашим сервером. Сегодня большинство веб-браузеров начинают показывать сайты как небезопасные, если соединение между сервером и веб-браузером не зашифровано с помощью SSL. В этой главе я покажу вам, как защитить ваш сайт с помощью SSL.

    Выполните следующие команды на своем сервере, чтобы включить поддержку SSL (https://). Бег:

    a2enmod ssl
    a2ensite default-ssl

    который включает модуль SSL и добавляет символическую ссылку в папку /etc/apache2/sites-enabled на файл /etc/apache2/sites-available/default-ssl.conf, чтобы включить его в активную конфигурацию apache. Затем перезапустите apache, чтобы включить новую конфигурацию:

    systemctl restart apache2

    Теперь проверьте соединение SSL, открыв https://192.168.1.100 в веб-браузере.

    Вы получите предупреждение SSL, поскольку сертификат SSL сервера является «самозаверяющим» сертификатом SSL, это означает, что браузер не доверяет этому сертификату по умолчанию, и вы должны сначала принять предупреждение системы безопасности. Приняв предупреждение, вы увидите страницу apache по умолчанию.

    Закрытый зеленый замок перед URL-адресом в браузере показывает, что соединение зашифровано.

    Есть два способа избавиться от предупреждения SSL: либо заменить самозаверяющий SSL-сертификат /etc/ssl/certs/ssl-cert-snakeoil.pem на официально подписанный SSL-сертификат, который вы покупаете в центре SSL, либо вы получаете бесплатный SSL-сертификат от Lets encrypt, о котором я расскажу в главе 8.

    8. Получите бесплатный SSL-сертификат от Lets Encrypt

    Первым шагом для защиты веб-сайта с помощью SSL-сертификата Lets Encrypt является установка пакета python3-certbot-apache. Выполните следующую команду:

    apt-get -y install python3-certbot-apache

    На следующем шаге мы запросим SSL-сертификат у Lets Encrypt с помощью клиентской программы certbot, во время этого процесса сервер Lets Encrypt пытается подключиться к вашему серверу через доменное имя, которое вы предоставляете команде certbot. Важно, чтобы это доменное имя уже указывало на ваш сервер в DNS, чтобы веб-сайт был доступен по его доменному имени на порту 80 (http). Если веб-сайт недоступен из Интернета, создание SSL-сертификата Lets Encrypt завершится ошибкой.

    Прежде чем мы сможем начать создавать сертификат SSL, установите доменное имя в файле конфигурации виртуального хоста. Откройте файл vhost по умолчанию с помощью редактора:

    nano /etc/apache2/sites-available/000-default.conf

    и добавьте строку:

    ServerName example.com

    Прямо под строкой DocumentRoot. Замените example.com на доменное имя вашего собственного веб-сайта.

    Затем создайте SSL-сертификат с помощью этой команды:

    certbot --apache -d example.com

    Снова замените example.com своим доменным именем. Команда запустит мастер, который задаст вам несколько вопросов.

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

    Примите положения и условия центра SSL Lets Encrypt.

    Certbot спросит вас, хотите ли вы поделиться своим адресом электронной почты с Electronic Frontier Foundation. Выбирайте здесь то, что вам больше нравится.

    Затем выберите, хотите ли вы автоматически перенаправлять запросы без SSL на https://. Я выберу здесь «да», чтобы избежать проблем с дублированием контента, когда веб-сайт доступен в версиях http:// и https://.

    SSL-сертификат успешно выпущен.

    Когда вы сейчас заходите на веб-сайт с помощью браузера, вы автоматически перенаправляетесь на SSL, а зеленый замок перед строкой URL в браузере показывает, что сейчас мы используем доверенный сертификат SSL.

    8.1 Позволяет зашифровать автоматическое продление

    SSL-сертификаты Lets Encrypt действительны только в течение короткого периода в 80 дней. Поэтому для автоматического обновления SSL-сертификатов необходимо задание cron, запускающее команду certbot --renew.

    Это задание cron устанавливается автоматически при установке certbot, файл cron – /etc/cron.d/certbot. Так что тут больше делать нечего. Если вы хотите узнать, как выглядит cronjob, выполните команду:

    /etc/cron.d/certbot

    Результат:

    :~# cat /etc/cron.d/certbot
    # /etc/cron.d/certbot: crontab entries for the certbot package
    #
    # Upstream recommends attempting renewal twice a day
    #
    # Eventually, this will be an opportunity to validate certificates
    # haven't been revoked, etc. Renewal will only occur if expiration
    # is within 30 days.
    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

    9. Установите phpMyAdmin

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

    apt-get -y install phpmyadmin

    ВАЖНО: Установщик apt задаст вам несколько вопросов, один из них — выбрать тип веб-сервера. Распространенной ошибкой является то, что тип веб-сервера просто выделен, но не выбран. Чтобы выбрать элемент в подходящем меню, вы должны нажать пробел на клавиатуре после того, как вы перешли к элементу с помощью табуляции или клавиш курсора. Просто выделить недостаточно!

    Вы увидите следующие вопросы:

    Web server to configure automatically: <-- Select the option: apache2
    Configure database for phpmyadmin with dbconfig-common? <-- Yes
    MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

    9.1 Корневой доступ к PHPMyAdmin

    MariaDB и MySQL включают плагин под названием \unix_socket\ для пользователя root по умолчанию, этот плагин предотвращает, чтобы пользователь root мог войти в PHPMyAdmin и чтобы TCP-соединения с MySQL работали для пользователя root. Чтобы получить пользователя с привилегиями для создания других пользователей и баз данных в PHPMyAdmin, я создам нового пользователя MySQL с именем «admin» с теми же привилегиями, что и у пользователя root.

    Войдите в базу данных MySQL как пользователь root в оболочке:

    mysql -u root

    Создайте нового пользователя с именем «admin» и паролем «howtoforge». Замените пароль «howtoforge» безопасным паролем в приведенных ниже командах!

    CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    exit

    После этого вы можете получить доступ к phpMyAdmin по адресу http://192.168.1.100/phpmyadmin/:

    10 Загрузка образа виртуальной машины из этого руководства

    Это руководство доступно в виде готового к использованию образа виртуальной машины в формате ovf/ova, который совместим с VMWare и Virtualbox. Образ виртуальной машины использует следующие данные для входа:

    Вход по SSH/оболочке

    Имя пользователя:admin
    Пароль:howtoforge

    У этого пользователя есть права sudo.

    Вход в MySQL

    Имя пользователя: root
    Пароль: howtoforge

    IP виртуальной машины 192.168.1.100, его можно изменить в файле /etc/network/interfaces. Пожалуйста, измените все указанные выше пароли, чтобы защитить виртуальную машину.

    11 ссылок

    • Apache: http://httpd.apache.org/
    • PHP: http://www.php.net/
    • MySQL: http://www.mysql.com/
    • MariaDB: https://mariadb.com/
    • Убунту: http://www.ubuntu.com/
    • phpMyAdmin: http://www.phpmyadmin.net/