C O D E - I N F O . R U

Установка и настройка PHP в Ubuntu 16.04


После установки и настройки веб-сервера Apache2, можно перейти к установке и настройке модуля PHP. Настройки файла конфигурации php.ini . Установка и использование модулей php-mail и sendmail. Заглушка для отправки почты на локальном хосте (localhost).
В этой статье, мы продолжим установку среды разработки LAMP (Linux, Apache, MySQL, PHP). После установки веб-сервера в Ubuntu 16.04 самое время установить PHP. В случае, если веб-сервер у вас ещё не установлен - рекомендую ознакомиться с руководством: Настройка веб-сервера "Apache2" в Ubuntu 16.04
 

#1. Установка необходимых компонентов (модулей)

Самый простой способ — вновь воспользоваться менеджером пакетов apt для установки компонентов. Мы также добавим некоторые вспомогательные пакеты, чтобы код на PHP мог работать с нашим сервером Apache2, а также обращаться к базе данных MySQL.
Перед установкой, проверяем наличие php в текущей системе, следующей командой:
dpkg --get-selections | grep php

Если видим примерно такую картину, значит php в текущей систему уже установлен. Остаётся проверить наличие в полученном списке интересующих нас пакетов: libapache2-mod-php; php-mcrypt; php-mysql. Если они присутствуют — то переходим к пункту #2.
Если php не установлен. Запускаем терминал и пишем следующее:
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

дожидаемся завершения установки...
 

#2 Настройка

Настраиваем обработку index файлов
В большинстве случаев, мы захотим изменить способ, который использует Apache2 для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache2 в первую очередь будет искать файл с названием index.html. Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache2 таким образом, чтобы сначала он искал файлы index.php.
Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе «nano» с привилегиями суперпользователя:
sudo nano /etc/apache2/mods-enabled/dir.conf

Сразу после спецификации DirectoryIndex первым делом вставляем index.php (на первое место). В результате, содержимое файла dir.conf должно выглядеть так:

(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x).
Чтобы наши изменения вступили в силу, необходимо перезапустить Apache2. Это можно сделать при помощи команды:
sudo systemctl restart apache2

Теперь, наш веб-сервер в первую очередь будет искать файл index.php, в случае если такого не окажется, то index.html и т.д.

Поздравляю! Установка базовых компонентов необходимых для веб-разработки — ЗАВЕРШЕНА!
Можем переходить к установке СУБД (системы управления базами данных) MySQL.

Некоторые полезные настройки в конфигурационном файле php.ini
Часто, для администрирования и работы с системами управления баз данных MySQL\MariaDB используется утилита phpMyAdmin. Как правило, у начинающих веб-разработчиков возникает проблема с загрузкой больших дампов баз данных (например файлов с расширением .sql).
Эта проблема легко решается настройкой параметров в файле php.ini, таких как: upload_max_filesize, memory_limit, post_max_size. Например, мы хотим загружать дампы, объёмом до 400МБ. Для этого, открываю файл php.ini:
sudo nano /etc/php/7.0/apache2/php.ini

находим вышеуказанные параметры и устанавливаю следующие значения:
upload_max_filesize = 400M
memory_limit = 428M
post_max_size = 400M
(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x).
чтобы изменения всупили в силу - перезапустим сервер apache2:
sudo systemctl restart apache2
 
Доп.информация о php.ini:
Путь к файлу настроек php которые использует apache2:
/etc/php/7.0/apache2/php.ini

Путь к файлу настроек php который используется в консоли сервера (ssh):
php -i | grep php.ini
/etc/php/7.0/cli/php.ini

ВНИМАНИЕ:
В процессе веб-разработки, вам скорее всего понадобится функция рассылки сообщений на e-mail пользователей и т. п. Очень удобно, чтобы в процессе отладки вашего скрипта, выполняющего данную функцию, все отсылаемые скриптом сообщения «собирались» в одной папке. То есть, чтобы было легко проверить, отправилось ли сообщение, и если отправилось, то с каким содержанием. Для реализации такой возможности, предлагаю выполнить следующие действия:

Проверяем наличие модулей php-mail и sendmail
dpkg --get-selections | grep php-mail
dpkg --get-selections | grep sendmail

если модули установлены, должны увидеть примерно это:

в случае, если модули не установлены — устанавливаем их:
sudo apt install php-mail
sudo apt install sendmail

Запускаем конфигурацию sendmail
sudo sendmailconfig

положительно (y) отвечаем на вопросы, которые будут заданы. Ниже перечислены основные файлы, в которые будут внесены изменения:
/etc/mail/sendmail.conf, /etc/mail/sendmail.mc и /etc/cron.d/sendmail
Далее, правим файл настроек php.ini с помощью нашего любимого текстового редактора «nano»:
sudo nano /etc/php/7.0/apache2/php.ini

Находим закомментированную строку ;sendmail_path = (с помощью поиска в «nano» Ctrl+w). Заменяем её на строку следующего содержания:
sendmail_path = /usr/sbin/sendmail -t -i
Перезапускаем веб-сервер Apache2:
sudo service apache2 restart

Теперь, создадим заглушку для отправляемых с локального хоста писем:
Сначала нужно прописать или изменить (если подобные строки у вас уже прописаны) в файле /etc/hosts
sudo nano /etc/hosts

вписываем(или изменяем следующие строки)
127.0.1.1     pentium

Внимание!!! Строка, которая начинается на 127.0.1.1 содержит имя вашего хоста. В моём примере это pentium. В вашем случае, это имя (естественно) может быть другим. Поэтому в приведённом выше примере, обязательно замените слово pentium на «то» что у вас.
(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x).

После этого нужно указать имена локальных хостов (если не указаны), от которых sendmail будет принимать запросы на отправку email сообщений. Делается это в файле /etc/mail/local-host-names. Делаем это аналогичным образом с помощью «nano»:
sudo nano /etc/mail/local-host-names

пишем:
pentium

не забываем менять имя хоста «pentium» на то, которое у вас
(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x).

Далее, создаём файл fake_sendmail.sh в каталоге /usr/bin
для этого, переходим в каталог /usr/bin:
cd /usr/bin

создаём файл fake_sendmail.sh используя «nano» (так как создаём в системном каталоге, делаем это с правами суперпользователя sudo):
sudo nano fake_sendmail.sh

в открывшееся окно копируем следующий скрипт:

#!/bin/sh
prefix="/var/mail"
date=`date \+\%Y\%m\%d\%H\%M\%N`
name="$prefix/$date.eml"
while IFS= read line
do
echo "$line" >> $name
done
chmod 666 $name

(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x)

обратите внимание, что вторая строка скрипта (prefix="/var/mail") содержит адрес каталога, в который и будут в итоге сохраняться файлы, содержащие текст отправляемых e-mail сообщений. Вы, естественном можете задать любой другой адрес, который вам будет удобнее, но после этого вы должны учесть это, следуя дальнейшему руководству

теперь делаем файл исполняемым:
sudo chmod 777 fake_sendmail.sh

Далее, открываем файл php.ini (/etc/php/7.0/apache2/php.ini):
sudo nano /etc/php/7.0/apache2/php.ini

ищем в нём строку sendmail_path = (жмём Ctrl+w и в появившейся строке поиска пишем: sendmail_path = и жмём Enter)
закомментируем содержимое найденной строки (ставим в начале строки точку с запятой ;), переходим на новую строку и вставляем следующее:
sendmail_path = /usr/bin/fake_sendmail.sh
должно получиться примерно так:

(cохраняем Ctrl+o затем Enter и выходим из текстового редактора Ctrl+x).

Теперь создаём каталог mail в каталоге var (если его нет) с правами на запись (chmod 777 -R /var/mail):
переходим в каталог var
cd /var

смотрим содержимое:
ls -la

если каталог mail отсутствует, создаём его
sudo mkdir mail

устанавливаем права на запись:
sudo chmod 777 -R /var/mail

Перезапускаем веб-сервер:
sudo service apache2 restart
или
sudo systemctl restart apache2

Вот и ВСЁ !!!

Теперь все исходящие письма будут сохраняться в каталог /var/mail в виде файлов, примерно с такими именами:
201707301620041126262.eml

Дополнительно:
В случае если установленных модулей вам будет не достаточно, для решения ваших задач, рекомендую прочитать небольшую статью:
Установка модулей PHP в Ubuntu 16.04

Ещё статьи по теме:
Настройка веб-сервера "Apache2" в Ubuntu 16.04
Установка системы управления базами данных MySQL

Успехов Вам! Не забываем ставить лайки! =)

Техническая


Воскресенье 29 октября 2017

[Просмотров: 1145]

Источник: code-info.ru