Apache2 как модуль php

Installing PHP Module for Apache on Ubuntu

Apache Web Server is one of the more dominant web servers on the net. Most of those installations are running some form of PHP applications, whether Laravel, WordPress, or some other custom application.

Apache was originally used as a static web server, hosting HTML files, for example, directly the client. However, due to its support for modules the web servers capabilities have grown to run as an application server as well.

Out of the box, a default Apache2 web server installation on Ubuntu 18.04, 18.10, 19.04, and 19.10 will not run a PHP application. The PHP module is not included.

This tutorial will show you how to configure an Apache web server for running PHP applications.

Installing Apache

To install Apache on your Ubuntu server, run the following command.

Installing PHP

Install PHP is simply enough. It can Ben installed using the Apt package manager from Ubuntu’s repositories.

PHP can also be installed from source, if you require a more recent version. That task, unfortunately, is outside of the scope of this tutorial.

To install PHP, run the following command:

Additional PHP modules can be installed with the language itself.

Install Apache PHP Module

The PHP module for Apache is not bundled with Apache. As such, it must be installed in addition to the Apache package.

sudo apt install libapache2-mod-php

Once installed the module will have to be enabled. We accomplish this using the a2enmod command.

Lastly, the Apache web service requires a reboot before the enabled mod will be loaded.

sudo systemctl restart apache2

Источник

Установка Apache, MySQL и PHP на Ubuntu 18.04 LTS

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

$ sudo mysql_secure_installation
  • Установить плагин проверки надежности паролей?
  • Пароль для пользователя root ?
  • Подтверждение пароля для root ?
  • Удалить анонимного пользователя?
  • Запретить root подключаться удаленно?
  • Удалить тестовую базу данных?
Читайте также:  Коллапс волновой функции python

Начиная с версии 5.7 пользователь root подключается с помощью плагина auth_socket , а не по паролю:

> SELECT user, authentication_string, plugin, host FROM mysql.user; +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *76370DCD37985A94742AE45C0F4C890251AB21FA | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qwerty'; Query OK, 0 rows affected (0.00 sec) > SELECT user, authentication_string, plugin, host FROM mysql.user; +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *AA1420F182E88B9E5F874F6FBE7459291E8F4601 | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *76370DCD37985A94742AE45C0F4C890251AB21FA | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec) > FLUSH PRIVILEGES; > exit
$ mysql -uroot -pqwerty mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. > exit
$ sudo systemctl stop mysql
$ sudo systemctl start mysql
$ sudo systemctl reload mysql
$ sudo systemctl restart mysql
$ sudo systemctl enable mysql
$ sudo systemctl disable mysql

Посмотреть информацию о версии:

$ mysql -V mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper

Установка PHP как модуля Apache

$ sudo apt install php7.2-mysql libapache2-mod-php7.2

Посмотреть информацию о версии:

$ php -v PHP 7.2.24-0ubuntu0.18.04.1 (cli) (built: Oct 28 2019 12:07:07) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.24-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

Настройка виртуальных хостов

Перейдем в директорию /var/www , которая содержит внутри себя директорию html с файлом index.html . И создадим еще две директории host1.loc и host2.loc . И внутри каждой директории создадим файл index.php :

$ cd /var/www $ sudo su # mkdir host1.loc # mkdir host2.loc
# cd host1.loc # nano index.php
# cd host2.loc # nano index.php

Теперь перейдем в директорию с настройками Apache:

# cd /etc/apache2 # ls -l -rw-r--r-- 1 root root 7224 сен 16 15:58 apache2.conf drwxr-xr-x 2 root root 4096 ноя 11 09:32 conf-available drwxr-xr-x 2 root root 4096 ноя 11 09:32 conf-enabled -rw-r--r-- 1 root root 1782 июл 16 21:14 envvars -rw-r--r-- 1 root root 31063 июл 16 21:14 magic drwxr-xr-x 2 root root 12288 ноя 11 12:29 mods-available drwxr-xr-x 2 root root 4096 ноя 11 12:29 mods-enabled -rw-r--r-- 1 root root 320 июл 16 21:14 ports.conf drwxr-xr-x 2 root root 4096 ноя 11 09:32 sites-available drwxr-xr-x 2 root root 4096 ноя 11 09:32 sites-enabled
  • apache2.conf : главный конфигурационный файл Apache. Изменения в этом файле влияют на глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов из конфигурационной директории.
  • ports.conf : этот файл определяет порты, которые Apache будет слушать. По умолчанию Apache слушает порт 80, а также порт 443 при условии, что модуль для работы с SSL включен.
  • sites-available : в этой директории хранятся файлы виртуальных хостов. Apache не использует файлы из этой директории, если ссылки на них нет в директории sites-enabled . Обычно настройка всех файлов виртуальных хостов осуществляется в этой директории, а активация хоста происходит путём создания ссылки в другой директории командой a2ensite .
  • sites-enabled : директория, в которой хранятся активированные виртуальные хосты. Обычно это делается путём создания ссылки на файл конфигурации хоста из директории sites-available с помощью команды a2ensite . Apache читает конфигурационный файлы и ссылки из этой директории при запуске или перезапуске.
  • conf-available , conf-enabled : эти директории связаны друг с другом так же, как и sites-available и sites-enabled связаны друг с другом, но используются для хранения фрагментов конфигурации, которые не принадлежат виртуальным хостам. Файлы в директории conf-available могут быть включены командой a2enconf и выключены командой a2disconf .
  • mods-available , mods-enabled : эти директории содержат, соответственно, доступные и активные модули. Файлы, оканчивающиеся на .load , содержат фрагменты для загрузки конкретных модулей, а файлы, оканчивающиеся на .conf , содержат настройки этих модулей. Модули можно активировать командой a2enmod и деактивировать командой a2dismod .
Читайте также:  coloured ASCII-art

Посмотрим, какие сайты могут быть активированы командой a2ensite :

# cd /etc/apache2/sites-available # ls -l -rw-r--r-- 1 root root 1332 июл 16 21:14 000-default.conf -rw-r--r-- 1 root root 6338 июл 16 21:14 default-ssl.conf

И какие сайты сейчас доступны, т.е. были активированы командой a2ensite :

# cd /etc/apache2/sites-enabled # ls -l lrwxrwxrwx 1 root root 35 ноя 11 09:32 000-default.conf -> ../sites-available/000-default.conf

В директории только одна ссылка, значит доступен только один сайт по адресу http://localhost/ . Создадим два файла конфигурации виртуальных хостов:

# cd /etc/apache2/sites-available # cp 000-default.conf host1.loc.conf # cp 000-default.conf host2.loc.conf

И отредактируем эти файлы:

  ServerName host1.loc ServerAdmin webmaster@host1.loc DocumentRoot /var/www/host1.loc ServerAlias www.host1.loc ErrorLog $ /error.log CustomLog $ /access.log combined 
  ServerName host2.loc ServerAdmin webmaster@host2.loc DocumentRoot /var/www/host2.loc ServerAlias www.host2.loc ErrorLog $ /error.log CustomLog $ /access.log combined 

Активируем два наших сайта:

# a2ensite host1.loc Enabling site host1.loc. To activate the new configuration, you need to run: systemctl reload apache2 # a2ensite host2.loc Enabling site host2.loc. To activate the new configuration, you need to run: systemctl reload apache2

Перед тем, как перезагрузить Apache, отредактируем файл hosts :

127.0.0.1 localhost 127.0.1.1 ubuntu-lamp 127.0.0.1 host1.loc www.host1.loc 127.0.0.1 host2.loc www.host2.loc

И проверяем работу сайтов:

Установка PHP как FastCGI

Устанавливаем пакет php-fpm :

$ sudo apt install php7.2-fpm

FPM расшифровывается как Fastcgi Process Manager, менеджер процессов FastCGI. PHP-FPM запускается как отдельный процесс и взаимодействует с веб-сервером через порт 9000 или сокетный файл. Является альтернативной реализацией PHP FastCGI с несколькими дополнительными возможностями, обычно используемыми для высоконагруженных сайтов.

$ systemctl is-active php7.2-fpm active

Во время установки php-fpm будет сказано следующее — чтобы включить PHP 7.2 FPM в Apache2, выполните команды:

$ sudo a2enmod proxy_fcgi setenvif $ sudo a2enconf php7.2-fpm

Так и делаем. После этого нужно отключить модуль Apache для работы с php , потому что вместо него теперь будет php-fpm .

$ sudo systemctl restart apache2

Что такое MPM и в чём разница между prefork , event , worker — можно почитать вот в этой статье. А сейчас просто отключаем модуль mpm_prefork и включаем модуль mpm_event :

$ sudo a2dismod mpm_prefork $ sudo a2enmod mpm_event $ sudo systemctl restart apache2

Дополнительно

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (100)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (147)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (69)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Оцените статью