Установка php7.2 на ubuntu server 18.04 для apache и nginx

Введение

Есть замечательный человек Remi Collet, который создал репозиторий пользующийся огромной популярностью у пользователей операционной системы CentOS. Познакомится с новостями репозитория можно на блоге Remi Collet.

В статье будет рассказано про использование репозитория на системах CentOS 7 и 8.

Les RPM de Remi repository поддерживает последние версии MySQL и PHP (бэкпорты федоровских rpm)

Пакеты этого репозитория необходимо использовать с осторожностью, так как они заменяют базовые пакеты

В другой статье вы можете узнать как использовать репозиторий WebtaticEL для CentOS 7. В нем так же используются последние версии PHP, но к сожалению там нет многих удобств которые есть у Remi. Например, используя репозиторий Remi можно всегда иметь последнюю версию phpMyAdmin.

Установка phpmyadmin

Если нужно установить именно phpmyadmin для работы с вашими базами, то сейчас мы это сделаем:

# apt-get install phpmyadmin

Мастер установки спросит какой веб -сервер вы используете (Web server to reconfigure automatically): выбираем apache2, есть так же  еще lighttpd. На следующий вопрос «Configure database for phpmyadmin with dbconfig-common?» — отвечаем No. Хотя можно нажать и Yes, тогда установщик спросит пароль для пользователя admin (нужен для входа в phpmyadmin).

Чтобы начать пользоваться phpmyadmin, нужно открыть в браузере:http://yourIP_or_server/phpmyadmin/

Вводим в поле логин «root», пароль вводим такой как вы создали для mysql.

Configuration

php.ini settings:

opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60

; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 

; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487

; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps.
memory_consumption

The size of the memory segment can be told using the opcache.memory_consumption INI setting (Megabytes). Size it big, don’t hesitate to give space. Never ever run out of shared memory space, if you do, you will lock your processes, we’ll get back to that later.

Size the shared memory segment according to your needs, don’t forget that a production server dedicated to PHP processes may bundle several dozens of Gigabytes of memory, just for PHP. Having a 1Gb shared memory segment (or more) is not uncommon, it will depend on your needs, but if you use a modern application stack, aka framework based, with lots of dependencies etc… , then use at least 1Gb of shared memory.

Having that in mind, set opcache.memory_consumption to a value high enough to avoid filling it up (as long as your RAM usage allows you to), and then monitor the OPCache to adjust that value to its optimal size. As the total size of the PHP files in a standard Moodle 3.11 is almost 100MB, setting this value higher than that can be a good idea. Take into account that the PHP files of the plugins and those on the MoodleData folder (language pack files…) also count, so these values can be different on each installation. If you have several instances of Moodle you should multiply that value by the number of instances.

Tip: If using Linux, you can know the total size of the PHP files of a folder using this command:

max_accelerated_files

The maximum number of keys (and therefore scripts) in the OPcache hash table. The actual value used will be the first number in the set of prime numbers { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } that is greater than or equal to the configured value. The minimum value is 200. The maximum value is 100000 in PHP

As Moodle 3.11 contains more than 11.600 php files it is recommended above that opcache.max_accelerated_files should be set to 10000 to accommodate this (16229 will actually be used as per the explanation above). If you have several instances of Moodle you should multiply that value by the number of instances.

If many additional plugins are installed so that your total PHP files exceed 16229 then the next most suitable value for max_accelerated_files should be used.
Tip: If using Linux, you can know the total PHP files of your Moodle using this command:

Установка

Разобьем установку на части. Установим базу данных PostgreSQL, интерпретатор PHP, далее web-сервер Nginx, ну и последним пунктом наше облако NextCloud:

Установка PHP

Для установки PHP для начала добавим более новый репозиторий:

После этого устанавливаем PHP и необходимые зависимости для NextCloud.

Установка Web-сервера Nginx

Для установки nginx для начала добавим, как и с PHP, более новый репозиторий:

Теперь можно установить наш web-сервер. Устанавливать будем сборку в которую включен модуль для проигрывания потокового видео с нашего сервера (поддержка модуля mp4). Открываем терминал и набираем:

Установка NextCloud

После всех пунктов выше приступим к установки нашего домашнего облака NextCloud. Для этого переходим в директорию :

Скачиваем последнюю версию NextCloud (на момент написания статьи версия NextCloud была 21.0.0), а также сразу распакуем и изменим права на директорию NextCloud:

Установка Xcache для PHP в Unix/Linux

XCache — это модуль который повысит производительность в использовании скриптов написанных на PHP и дает хорошую производительность сервера, так же уменьшается среднее время компиляции за счёт использования ранее  уже прокэшированных запросов из RAM что позволяет увеличить скорость генерации страниц в пару раз. Проверялось  на Linux и модуль поддерживается на всех последних ветвей PHP, таких как PHP_5_1 PHP_5_2 PHP_5_3 PHP_5_4 PHP_5_5. В Windows также отлично поддерживается. XCache преодолевает многие из проблем, найденных с другими opcachers, таких как возможность работать с новыми версиями PHP.

Установка Xcache для PHP в CentOS/Fedora/RedHat

Первое что выполняем, так добавляем репозиторий EPEL:

Обновляем ОС:

# yum -y update && yum upgrade -y

Выполняем установку XCache:

# yum -y install php-xcache xcache-admin

Проверяем что все установилось и корректно работает:

php -m | grep XCache

Как то так. Все просто!

Установка Xcache для PHP других Unix/Linux ОС (компилирование с исходного кода)

Сейчас я расскажу как установить этот модуль, на момент написания статьи я использовал последнюю версию (xcache-3.2.0), если Вас устраивает, то качаем прям у меня:

# cd /usr/local/src && wget wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz && tar zxf xcache-*.tar.gz && cd xcache-*
# phpize
# ./configure --enable-xcache
# make && make install && make clean

Нужно после этого добавить кое что в наш php.ini, но для начала убедимся что имеется библиотека xcache:

$ ls -al /usr/lib64/php/modules | grep xcache
-rwxr-xr-x 1 root root 173872 Sep 9 2014 xcache.so

Смотрим где находится php.ini:

$ php -i |grep php.ini

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

Прописываем некоторые параметры:

# vim /etc/php.d/xcache.ini

Так как настройки довольно большие ( много строк) я вынес его в отдельный файл, его можно почитать и ознакомиться:php_ini_with_xcache

Что что содержится в файле что выше нужно вставить в ваш файл ( добавить эти все строки в самом низу данного фала).

После чего сохраняем файл, перезапустим сервер ( апач или nginx) и чтобы проверить работоспособность нужно выполнить команду:

# service httpd restart
# service nginx restart

Проверяем что все работает:

# php -m| grep -E "XCache"
XCache
XCache Cacher
XCache Coverager
XCache Optimizer
XCache Cacher
XCache Coverager
XCache Optimizer

Установка «Установка Xcache для PHP в Unix/Linux» завершена.

Установка и настройка веб-сервера

PHP

Устанавливаем PHP, PHP-FPM и необходимые для работы nextcloud модули:

apt-get install php php-fpm php-common php-zip php-xml php-intl php-gd php-mysql php-mbstring php-curl php-imagick

Настраиваем php-fpm:

vi /etc/php/7.4/fpm/pool.d/www.conf

* путь к данной папке зависит от установленной версии php. В данном примере это 7.4.

Снимаем комментарии со следующей строки:

env = /usr/local/bin:/usr/bin:/bin

Настраиваем php.ini:

vi /etc/php/7.4/fpm/php.ini

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Разрешаем автозапуск php-fpm и перезапускаем его:

systemctl enable php7.4-fpm

systemctl restart php7.4-fpm

* php7.4-fpm зависит от версии установленного php.

NGINX

Nextcloud можно развернуть на NGINX или Apache. В данной инструкции будем использовать первый.

Устанавливаем веб-сервер:

apt-get install nginx

Создаем виртуальный домен и настраиваем его для работы с облачным сервисом:

vi /etc/nginx/conf.d/nextcloud.conf

server {
        listen 80;
        server_name nextcloud.dmosk.ru;
        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl;
        server_name nextcloud.dmosk.ru;
        ssl_certificate /etc/nginx/ssl/cert.pem;
        ssl_certificate_key /etc/nginx/ssl/cert.key;
        root /var/www/nextcloud;
        add_header Strict-Transport-Security «max-age=31536000; includeSubDomains» always;
        client_max_body_size 10G;
        fastcgi_buffers 64 4K;
        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        index index.php;
        error_page 403 = /core/templates/403.php;
        error_page 404 = /core/templates/404.php;
        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }
        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;
        }
        location ^~ /.well-known {
                location = /.well-known/carddav { return 301 /remote.php/dav/; }
                location = /.well-known/caldav  { return 301 /remote.php/dav/; }
                location ^~ /.well-known{ return 301 /index.php/$uri; }
                try_files $uri $uri/ =404;
        }
        location / {
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
                rewrite ^(/core/doc/+/)$ $1/index.html;
                try_files $uri $uri/ index.php;
        }
        location ~ ^(.+?\.php)(/.*)?$ {
                try_files $1 = 404;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
                fastcgi_param PATH_INFO $2;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        }
        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires modified +30d;
                access_log off;
        }
}

* где:

  • nextcloud.dmosk.ru — домен, на котором будет работать сервис; 
  • /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; 
  • /var/www/nextcloud — каталог с порталом.

Создаем каталог для хранения сертификатов и переходим в него:

mkdir /etc/nginx/ssl

cd /etc/nginx/ssl

Генерируем сертификат:

openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=nextcloud.dmosk.ru/CN=nextcloud»

* данная команда создаст сертификат на 4 года для URL nextcloud.dmosk.ru или nextcloud.

После установки php мог установиться и запуститься apache. Отключаем его:

systemctl stop apache2

systemctl disable apache2

Проверяем конфигурацию nginx, завершаем его автозапуск и перезапускаем сервис:

nginx -t

systemctl enable nginx

systemctl restart nginx

Подключение репозитория от Remi

для CentOS 7

Для установки репозитория Remi в CentOS 7 достаточно выполнить команду:

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Посмотреть активные репозитории можно следующей командой:

yum repolist
= вывод части команды =
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.corbina.net
 * epel: mirror.logol.ru
 * extras: mirror.reconn.ru
 * remi-safe: mirror.reconn.ru
 * updates: mirror.corbina.net   
remi-safe    Safe Remi's RPM repository for Enterprise Linux 7 - x86_64     3 144

По умолчанию установлен репозиторий remi-safe который имеет только дополнительные пакеты для базового хранилища и коллекций программного обеспечения. Например, при попытке установить phpMyAdmin будет установлена старая версии. Для установки последних версий надо активировать репозиторий remi.

Посмотрим репозитории что у нас есть в системе выполнив команду:

ls /etc/yum.repos.d/ -l
итого 92
-rw-r--r-- 1 root root 1664 ноя 23 16:16 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 ноя 23 16:16 CentOS-CR.repo
-rw-r--r-- 1 root root 649 ноя 23 16:16 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 314 ноя 23 16:16 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 ноя 23 16:16 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 ноя 23 16:16 CentOS-Sources.repo
-rw-r--r-- 1 root root 5701 ноя 23 16:16 CentOS-Vault.repo
-rw-r--r-- 1 root root 951 окт 2 2017 epel.repo
-rw-r--r-- 1 root root 1050 окт 2 2017 epel-testing.repo
-rw-r--r-- 1 root root 261 фев 8 15:23 mariadb.repo
-rw-r--r-- 1 root root 113 июл 15 2014 nginx.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi91.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi92.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi93.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi94.repo
-rw-r--r-- 1 root root 456 дек 21 20:50 remi-php54.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php70.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php71.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php72.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php73.repo
-rw-r--r-- 1 root root 2605 дек 21 20:50 remi.repo
-rw-r--r-- 1 root root 750 дек 21 20:50 remi-safe.repo

Надеюсь, вы заметили что есть репозитории glpi.

GLPI — это программный инструмент ITSM, который помогает вам легко планировать и управлять изменениями в ИТ структуре предприятия, эффективно решать возникающие проблемы используя систему заявок, так же позволяет вам получить контроль над ИТ-бюджетом и расходами вашей компании. В будущем я расскажу как работать с этим замечательным проектом. Кроме того, то что Remi Collet поддерживает репозиторий меня очень радует.

Перед работой с репозиториями Remi необходимо установите пакет yum-utils, что бы не получать ошибку «bash: yum-config-manager: command not found».  Установим yum-utils выполнив необходимую команду:

yum install yum-utils

Сейчас у нас активирован remi-safe. Для активации remi надо вначале отключить remi-safe а потом активировать remi выполнив команды:

yum-config-manager --disable remi-safe
yum-config-manager --enable remi

Перед тем как определится какую версию PHP использовать я всегда смотрю на сайте Supported Versions PHP.

для CentOS 8

В 8 версии CentOS используется версия php 7.2 которая уже может удовлетворять требования множества новых сайтов, но если вам нужны версии новее подключайте Remi.

Подключаем репозиторий Remi, выполнив следующую команду:

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Посмотрим список всех доступных вариантов установки php:

dnf module list php
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:41:10 назад, Пн 28 окт 2019 08:05:09.
CentOS-8 - AppStream
Name Stream Profiles Summary 
php 7.2  common , devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary 
php remi-7.2 common , devel, minimal PHP scripting language 
php remi-7.3 common , devel, minimal PHP scripting language 
php remi-7.4 common , devel, minimal PHP scripting language

Hint: efault, nabled, disabled, nstalled

Из вывода выше видно что по умолчанию стоит базовая версия CentOS 7.2 и имена она будет установлена.

Общая настройка системы

Установка пакетов

1. Обновляем CentOS:

yum update

2. Устанавливаем репозиторий EPEL и пакет для загрузки:

yum install epel-release wget

Время

1. Устанавливаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* данной командой мы установим часовой пояс по московскому времени.

2. Устанавливаем и запускаем службу для автоматической синхронизации времени:

yum install chrony

systemctl enable chronyd —now

Настройка безопасности

1. Отключаем SELinux:

sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config

setenforce 0

* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.

2. Открываем необходимые порты в брандмауэре:

firewall-cmd —permanent —add-port={80,443,8080}/tcp

firewall-cmd —permanent —add-port={20,21,60000-65535}/tcp

firewall-cmd —reload

* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.

Акселераторы PHP

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

Начиная с версии Ubuntu Saucy (13.10) в систему устанавливается PHP с предустановленным Zend OPcache.

Не устанавливайте сразу несколько акселераторов PHP, это не даст никакого результата.

Alternative PHP Cache

Начиная с версии Ubuntu Saucy (13.10) пакет php-apc не устанавливает opcode кэшер, вместо этого он устанавливает пакет php-apcu с частью функционала (кэширование пользовательских данных).

apt-get install php-apc

Файл настройки /etc/php5/apache2/conf.d/apc.ini.

extension=apc.so
realpath_cache_size=4096k
apc.max_file_size=4M
apc.shm_size=128M
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.ttl=3600
apc.user_ttl=3600
apc.gc_ttl=3600

XCACHE

apt-get install php-xcache

Файл настройки /etc/php5/apache2/conf.d/xcache.ini.

realpath_cache_size=4096k
xcache.size=40M
xcache.slots=8K
xcache.ttl=3600

Также можно указать число ядер вашего процессора:

xcache.count=2

Настройка apache2

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

Виртуальные хосты (Virtualhosts).

Хочу начать я свою настройку с создания и настройки Virtualhosts (виртуальных хостов). Есть много разных способов чтобы создать виртуальные хосты, но я бы посоветовал данный метод (поискав и перебрал много вариантов и литературы, я выбрал именно его).

По умолчанию, веб-сервер апач «слушает» все IP-адреса которые доступны для виртуального сервера. Это не есть хорошо, по этому нужно подредактировать  и настроить его на прослушивание только определенного ИП-адреса. Даже если Вы имеете только один IP адрес!

Делаем изменение в файле ports.conf:

# vim /etc/apache2/ports.conf
NameVirtualHost 192.168.16.66 :80

Измените данный ИП-адрес на свой!

Делаем изменение в файле default:

# vim /etc/apache2/sites-available/default
<VirtualHost 192.168.16.66:80>

Теперь я создам 1 виртуальный хост в качестве примера:

# vim /etc/apache2/sites-available/test
<VirtualHost 192.168.16.66:80>
ServerAdmin mail@192.168.16.66 # введите свой емейл
ServerName 192.168.16.66 # замените на свой IP
ServerAlias www.192.168.16.66 # замените на свой ИП-адрес или доменное имя
DocumentRoot /var/www/192.168.16.66/public_html/ # домашняя директория для данного домена или сайта
ErrorLog /var/www/192.168.16.66/logs/error.log # файл для хранения ошибок
CustomLog /var/www/192.168.16.66/logs/access.log combined # # папка для хранения ошибок
</VirtualHost>

Создадим папки которых нет:

# mkdir -p /var/www/192.168.16.66/
# mkdir -p /var/www/192.168.16.66/public_html
# mkdir -p /var/www/192.168.16.66/logs

После всех изменений, нужно подключить данный домен в apache:

# a2ensite test

И перезагрузить веб-сервер:

# /etc/init.d/apache2 reload

Можно отключить данный сайт (виртуальный хост test)следующей командой:

# a2dissite test

Чтобы проверить работает ли все нормально, я скопирую файл (php_info):

# cp /var/www/php_info.php /var/www/192.168.16.66/public_html/

Можно открыть браузер и перейти:http://192.168.16.66/php_info.php

Установка и включение отладчика XDebug

Выполнение перечисленных ниже действий является необходимым только в том случае, если может потребоваться использование отладчика XDebug, который не является обязательным для разработки PHP. Отладчик XDebug является расширением для PHP. IDE NetBeans использует его автоматически, если он правильно настроек для используемого PHP Web Stack. Дополнительные сведения по XDebug и IDE NetBeans см. в разделе Отладка исходного кода PHP в IDE NetBeans. См. также Вики-страницу NetBeans в XDebug.

Установка пакета XDebug (Ubuntu, версия 8.05 и более поздние)

При начале работы в Ubuntu 8.05 пакет XDebug доступен под именем . Поддерживается версия XDebug 2.0.3-1. Ее можно установить с помощью средств командной строки или пользовательского интерфейса Synaptic Package Manager. После установки отладчика XDebug следует изменить , следуя описанию в разделе .

Создание отладчика XDebug из исходных компонентов (Ubuntu 7.10)

Для создания отладчика XDebug из исходных компонентов требуются два дополнительных модуля: PHP5 Development и PEAR.

  1. Запустите .

  2. Перейдите на панель «Installed» («Установлено») и убедитесь в том, что модуль make уже установлен.

  3. Перейдите на вкладку «All» («Все») и установите флажки для следующих пакетов:

    • php5-dev

    • php-pear
      В контекстном меню для каждого элемента выберите «Mark for installation».

      1. Появится диалоговое окно «Mark additional required changes», содержащее список зависимых пакетов, установка которых также является необходимой для функционирования программного обеспечения. Нажмите кнопку «Mark».

      2. Происходит автоматический возврат к экрану «Synaptic Package Manager», на котором представлены выбранные пакеты, отмеченные для установки.

      3. На панели инструментов выберите «Apply». Появится экран «Apply the following changes summary» со списком пакетов, выбранных для установки. Нажмите кнопку «Apply».

      4. После успешного завершения загрузки и установки появляется экран «Changes applied». Выберите «Close» (Закрыть).

Модули также можно установить путем запуска следующей команды в окне ‘Терминал’:
  1. После этого можно загрузить и установить отладчик XDebug. Введите следующую команду в окне «Terminal»:

Включение XDebug

Для включения отладчика XDebug следует изменить файл php.ini в текстовом процессоре .

  1. Для запуска текстового процессора запустите и в командной строке введите следующую команду:

При появлении запроса введите пароль, определенный для пользователя root во время установки операционной системы.

  1. Откройте файл .

  2. Добавьте в файл следующие строки:

Дополнительные сведения о настройке отладчика XDebug приведены здесь.

Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с PHP IDE NetBeans присоединяйтесь к списку рассылки users@php.netbeans.org.

Шаг 1. — Подготовка

На этапе подготовки мы убеждаемся что у нас есть всё необходимое для выполнения дальнейшей инструкции:

  • Нам нужна установленная ОС  Ubuntu Server 18.04. — Вам в помощь статья — Установка Ubuntu Server 18.04 LTS
  • Ubuntu Server 18.04 должна иметь доступ в интернет. — Настройка сети в Ubuntu Server 18.04
  • Для проверки потребуется веб-сервер Apache или Nginx. — Apache web server. Установка на Ubuntu Server 18.04
    или Установка Nginx на Ubuntu Server 18.04

Посмотрим IP-адрес командой ifconfig(Рис.1).

ifconfig

Рис.1 — Смотрим IP-адрес Ubuntu 18.04.

Адрес моего сервера — 192.168.3.8, в этой статье я буду вводить его в браузере на другом ПК, для проверки работоспособности PHP7.2. Вы должны будете ввести свой IP-адрес.

Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере — localhost или IP-адрес — 127.0.0.1

На этом подготовка завершена, приступаем к установке PHP7.2.

Примеры

gz

Распаковка .gz файла:

tar -xvf archive.tar.gz 

* при возникновении ошибки This does not look like a tar archive, можно воспользоваться командой gzip -d archive.tar.gz.

bz2

tar -xvjf archive.tar.bz2

* ключ j отвечает за работу с bz2.

Если система ругается на bzip2, значит нужно его установить:

yum install bzip2

apt-get install bzip2

pkg install bzip2

* соответственно, для CentOS (RPM based), Ubuntu (deb based), FreeBSD (BSD based).

Если видим ошибку tar: Unrecognized archive format, воспользуемся следующей командой:

bzip2 -d archive.tar.bz2

tar -xvzf archive.tar.gzip

* ключ z отвечает за работу с gzip.

Распаковывается, как gzip:

tar -xvzf archive.tgz

Распаковать в определенную папку

tar -C /home/user -xvf archive.tar.gz

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

Распаковка без вложенной папки

Такой способ можно использовать для распаковки в заранее подготовленный каталог. Будет некий эффект переименовывания каталога или аналог «Распаковать здесь»:

tar -C /home/admin/mytar -xvf admin.tar.gz —strip-components 1

* каталог /home/admin/mytar заранее должен быть создан; —strip-components 1 пропустит одну вложенную папку внутри архива.

Исключение файлов по маске

Если необходимо пропустить некоторые файлы, вводим команду с ключом —exclude:

tar —exclude=’sess_*’ -czvf archive.tar.gz /wwwsite

* в данном примере мы создадим архив archive.tar.gz, в котором не будет файлов, начинающихся на sess_.

Также можно исключить несколько файлов или папок, добавляя несколько опций exclude:

tar —exclude=’/data/recycle’ —exclude=’*.tmp’ zcf /backup/samba/2021-08-29.tar.gz /data/

* в данном примере мы исключим папку recycle и файлы, которые заканчиваются на .tmp

Работа с архивами, разбитыми на части

Разбить архив на части может понадобиться по разным причинам — нехватка места на носителе, необходимость отправки файлов по почте и так далее.

Чтобы создать архив, разбитый на части, вводим команду:

tar -zcvf — /root | split -b 100M — root_home.tar.gz

* данная команда создаст архив каталога /root и разобьет его на части по 100 Мб.

В итоге мы получим, примерно, такую картину:

root_home.tar.gzaa  root_home.tar.gzac  root_home.tar.gzae
root_home.tar.gzag  root_home.tar.gzai  root_home.tar.gzab
root_home.tar.gzad  root_home.tar.gzaf  root_home.tar.gzah

Чтобы собрать архив и восстановить его, вводим команду:

cat root_home.tar.gz* | tar -zxv

Кэширование PHP

Особенность интерпретируемых языков в том, что при каждом запуске скрипта интерпретатор должен скомпилировать программу и проверить ее на ошибки. Но мы можем обойти. Есть два основных вида кэширования:

  • Кэширование готовых страниц — страница генерируется php, а потом пользователю отдается готовая страница без обращения к php. Я расскажу как это сделать через fastcgi, но не рекомендую применять такой метод для wordpress или других движков, их лучше кэшировать с помощью специальных плагинов;
  • Кэширование байт кода и инструкций — а это уже интересно, кэшируется не вся страница, а только некоторые инструкции, и куски байт кода, которые не изменяются при вызовах скрипта. Перед тем как выполнять скрипт, интерпретатор должен преобразовать его в понятный для него формат, при кэшировании такое преобразование выполняется только первый запуск, а дальше берется версия из кэша;
  • Кэширование сессий — по умолчанию php сохраняет сессии пользователей в файлы и мы можем немного ускорить его работу, если будем сохранять сессии в оперативную память.

Дальше рассмотрим более подробно, как настроить каждый вид кэширования для вашего сервера. Начнем с кэширования opcode php.

Установка MariaDB или MySQL

В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.

Устанавливаем MariaDB следующей командой:

yum install mariadb-server

* будет установлена mariadb версии 5.5. Если нужна другая, то читаем подробнее в инструкции .
** для установки mysql выполняем команду yum install mysql

Разрешаем автозапуск и запускаем СУБД:

systemctl enable mariadb —now

* для работы с mysql меняем mariadb на mysql.

Сразу создаем пароль для учетной записи root:

mysqladmin -u root password

PHP + MariaDB (MySQL)

Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:

yum install php-mysqli

Если мы установили php5, также ставим php-mysql:

yum install php-mysql

После перезагружаем php-fpm:

systemctl restart php-fpm

* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.

Шаг 3. — Проверка — info.php

Для того чтобы проверить PHP-FPM и узнать подробную информацию о PHP, нужно создать файл info.php в каталоге html вэб-сервера, вписать в него специальную строчку php-кода, для отображения информации, и в браузере открыть страницу IP-адрес/info.php. Приступим!

Проверка PHP для вэб-серверов Apache и Nginx одинаковая:

Создаём файл info.php.

sudo touch /var/www/html/info.php

Вписываем в файл info.php строчку <?php phpinfo(); ?>. Сделал это одной командой, так быстрее вам будет скопипастить.

sudo sh -c "echo '<?php phpinfo(); ?>' >> /var/www/html/info.php"

Проверим, через cat, вписалась ли строчка в файл info.php.

cat /var/www/html/info.php

У меня всё ок! Теперь в браузере по адресу 192.168.3.8/info.php можно увидеть всю информацию о PHP установленном нашем сервере.(Рис.6) Это значит что PHP корректно работает на нашем Apache или Nginx.

Рис.6 — Информация о PHP в браузере.

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

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

У меня всё!

Поделиться публикацией

Была ли вам полезна статья? Есть возможность

поддержать проект.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: