Как установить или обновить php 7 на centos 7

PHP

На этом языке делают серверную часть в вебе. Он абсолютный чемпион — 80% сайтов написано с помощью PHP. На нем сделаны популярные CMS: Битрикс, WordPress, Joomla.

Когда отправляете фото в «Инстаграм» или другие данные на любой сайт, сервер должен их принять, обработать и вернуть обратно результат. Именно этим и занимается PHP.

Для Junior зарплаты начинаются от 35 тысяч рублей. Middle может рассчитывать на ценник от 80 тысяч рублей. Для Senior предлагают зарплату от 95 тысяч. Средняя зарплата — 88 тысяч рублей.

Особенности:

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

Недостатки:

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

Стек:

  • текстовый редактор или IDE: PhpStorm, Notepad++, Sublime Text;
  • базы данных: MySQL, PostgreSQL;
  • No-SQL хранилища: Memcached, Redis, MongoDB;
  • отладчик: XDebug;
  • профайлер: XHProf — подскажет, какая функция сколько времени исполняется;
  • фреймворки: Symphony, Yii, Laravel;
  • менеджер пакетов: Composer.

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


Пример синтаксиса на PHP — страница с демонстрацией новостей из базы данных

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

Настройка ssl сертификата Lets Encrypt в apache

Теперь настроим работу web сервера apache с ssl сертификатом. Хотя если быть точным, то tls сертификатом. Устанавливаем пакет certbot для получения бесплатного ssl сертификата от let’s encrypt. Для этого нам сначала надо подключить репозиторий epel.

# dnf install epel-release
# dnf install certbot

После установки пакетов certbot, если его запустить, напишет ошибку, что не может сам настроить apache.

Настроим все сами. Для начала создадим самоподписанный дефолтный сертификат, чтобы apache не ругался на отсутствие файла и смог запуститься.

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/ssl/certs/localhost.crt

Все параметры оставляйте дефолтные, не принципиально. Мы этот сертификат использовать не будет. Перезапустите apache.

# apachectl restart

Теперь выпустим сертификат для нашего домена. Имейте ввиду, чтобы получить сертификат у вас должно быть действующее доменное имя, ссылающееся на web сервер, который настраиваете. Let’s Encrypt будет по доменному имени обращаться к серверу, на котором настраиваете сертификат, чтобы проверить домен. В тестовой лаборатории с вымышленным доменным именем получить настоящий ssl сертификат не получится.

# certbot certonly

В качестве способа аутентификации выбирайте

1: Apache Web Server plugin (apache)

Дальше заполняйте в соответствии с вашими названиями. После получения сертификата, укажем его в конфигурации виртуального хоста. В моем случае в файле z.serveradmin.ru.conf. Добавляем туда параметры ssl.

<VirtualHost *:80 *:443>

    ServerName z.serveradmin.ru
    ServerAlias www.z.serveradmin.ru
    DocumentRoot /web/sites/z.serveradmin.ru/www

    ErrorLog /web/sites/z.serveradmin.ru/log/error.log
    CustomLog /web/sites/z.serveradmin.ru/log/access.log common

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem

    <Directory /web/sites/z.serveradmin.ru/www>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    php_admin_value date.timezone 'Europe/Moscow'
    php_admin_value max_execution_time 60
    php_admin_value upload_max_filesize 30M

</VirtualHost>

Перезапускайте apache и проверяйте работу сайта по https, зайдя по соответствующему протоколу.

По аналогии делаете с остальными виртуальными хостами, для которых используете бесплатные сертификаты let’s encrypt. Осталось дело за малым — настроить автоматический выпуск новых ssl сертификатов, взамен просроченным. Для этого добавляем в /etc/crontab следующую строку:

# Cert Renewal
30 4 * * * root /usr/bin/certbot renew --post-hook "/usr/sbin/apachectl restart" >> /var/log/le-renew.log

Переадресация с http на https в apache

В настроенном ранее примере https отлично работает, но неудобно, что нет автоматической переадресации с http на https. Чтобы использовать безопасную версию сайта, необходимо вручную в браузере набирать https. Хотя все современные браузеры уже сами умеют проверять версии сайта и если есть защищенная, то они автоматически сами ее выбирают.

Тем не менее, лучше все же добавить редирект с http на https. Его можно сделать двумя различными способами:

  1. Через файл .htaccess
  2. С помощью настройки виртуального хоста.

Мне нравится больше второй вариант, поэтому приводим конфиг виртуального хоста к следующему виду.

<VirtualHost *:80>

    ServerName z.serveradmin.ru
    ServerAlias www.z.serveradmin.ru
    Redirect permanent / https://z.serveradmin.ru

</VirtualHost>

<VirtualHost *:443>

    ServerName z.serveradmin.ru
    ServerAlias www.z.serveradmin.ru
    DocumentRoot /web/sites/z.serveradmin.ru/www

    ErrorLog /web/sites/z.serveradmin.ru/log/error.log
    CustomLog /web/sites/z.serveradmin.ru/log/access.log common

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem

    <Directory /web/sites/z.serveradmin.ru/www>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    php_admin_value date.timezone 'Europe/Moscow'
    php_admin_value max_execution_time 60
    php_admin_value upload_max_filesize 30M

</VirtualHost>

Перечитывайте конфиг httpd и проверяйте. Должно работать автоматическое перенаправление на https версию.

Добавление сайта

Сделаем то, ради чего, собственно, мы устанавливали и настраивали панель управления хостингом. Создадим отдельного пользователя в vestacp и добавим ему сайт. Для этого идем в Users и добавляем нового пользователя.

Заполняем все поля, создаем пользователя и заходим под ним в панель управления.

Во время создания пользователя, не забудьте в настройке «Доступ по SSH» указать bash или sh. Если этого не сделать, то пользователь не сможет подключаться по ssh. Я этот момент упустил и потом долго не мог понять, почему не могу подключиться по ssh. Сервер принимает логин с паролем, а потом сбрасывает соединение. В логах ssh никаких подсказок на эту тему не будет.

Я создам для него сайт на основе моего служебного домена — vesta.zeroxzed.ru. Не забудьте настроить dns запись на dns хостинге для нового домена. Для проверки корректной работы панели, я на этот сайт установлю wordpress.

Идем в раздел WEB, добавляем новый сайт.

Поддержку dns и почты я не включаю. Почему — объяснял вначале. После создания домена, он сразу же заработает. Проверить это можно, перейдя по адресу только что созданного домена. Вы должны увидеть страницу заглушку.

Для сайта нам нужна будет база данных. Создадим ее в соответствующем разделе.

У нас все готово для установки wordpress через панель vesta cp. Загружаем исходники сайта через ftp или vsftp, используя учетную запись user1, такую же, как и для входа в панель. Для быстроты, я загружу на сервер архив, а потом зайду по ssh и распакую его. Если загружать уже распакованные файлы, процесс будет длиться в несколько раз дольше.

Подключайтесь по ftp, используя любой подходящий клиент, ваше имя сервера и учетную запись.

Загружайте архив прямо в корень ftp. После этого подключайтесь по ssh к серверу. В windows проще всего воспользоваться программой putty.

В консоли распаковываем наш архив в директорию веб сервера. В случае с vesta cp каталог веб сервера настраиваемого сайта пользователя user1 будет в папке /home/user1/web/vesta.zeroxzed.ru/public_html. Выполняем в консоли:

# cd ~
# tar -xzvf wordpress-4.8-ru_RU.tar.gz
# mv ~/wordpress/* /home/user1/web/vesta.zeroxzed.ru/public_html
# rm -d ~/wordpress && rm ~/wordpress-4.8-ru_RU.tar.gz

Для продолжения установки wordpress, переходите по адресу сайта. У вас запустится установщик, где нужно будет указать параметры базы данных, созданной ранее.

Все, мы закончили стандартную установку нового сайта через панель управления хостингом vesta cp.

Обращаю внимание на один момент. В стандартной установке vestacp есть предустановленные шаблоны для конфига nginx

В частности, для wordpress есть отдельный шаблон. По идее, с ним сайт будет работать лучше. Я не разбирался в этих шаблонах, не сравнивал различия, но раз они есть, думаю, лучше использовать готовый шаблон под свою CMS. Изменить шаблон сайта можно в разделе WEB, в свойствах сайта.

Настройка Php-fpm для Nginx

Для того чтобы связать nginx и php будем использовать мост php-fpm. Основной файл настройки находится по пути /etc/php-fpm.conf и там должен быть параметр include=/etc/php-fpm.d/*.conf говорящий о том где лежат настройки пулов.

Запускаем php-fpm и добавляем в автозагрузку:

systemctl start php-fpm
systemctl enable php-fpm

=== Для CentOS 8 можно выполнить одну команду ===
systemctl enable --now php-fpm

Проверяем, запустился ли он.

systemctl status php-fpm
= вывод команды =
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-28 10:09:25 MSK; 1min 1s ago
 Main PID: 463 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 11524)
   Memory: 25.7M
   CGroup: /system.slice/php-fpm.service
           ├─463 php-fpm: master process (/etc/php-fpm.conf)
           ├─464 php-fpm: pool www
           ├─465 php-fpm: pool www
           ├─466 php-fpm: pool www
           ├─467 php-fpm: pool www
           └─468 php-fpm: pool www

окт 28 10:09:24 wp-lxc_pro-php7_sevo44_loc systemd: Starting The PHP FastCGI Process Manager...
окт 28 10:09:25 wp-lxc_pro-php7_sevo44_loc systemd: Started The PHP FastCGI Process Manager.

Все в порядке, сервис работает и находится в автозагрузке.

Использовать порт или сокет решать вам, но говорят что сокет использовать лучше. Запустим php-fpm через unix сокет. Для этого переименуем конфиг /etc/php-fpm.d/www.conf, создадим новый и приводим к следующему виду:

mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf_orig
vim /etc/php-fpm.d/www.conf
= необходимый код =

user = nginx
group = nginx
;listen = 127.0.0.1:9000
listen = /run/php-fpm/www.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500

slowlog = /var/log/php-fpm/www-slow.log

;php_flag = off
php_admin_value = /var/log/php-fpm/www-error.log
php_admin_flag = on
;php_admin_value = 128M
php_value = files
;php_value    = /var/lib/php/session
;php_value  = /var/lib/php/wsdlcache
;php_value  = /var/lib/php/opcache

Вы можете для каждого сайта созать свой пул и указать там все необходимые параметры. Например, для каждого сайта я создаю свой пул для гибкости настройки и благодаря этому я настраиваю корректный доступ к файлам по sftp.

Назначим каталогу /var/lib/php правильное владение:

=== было ===
ls -l /var/lib/php
= вывод команды =
итого 0
drwxrwx--- 2 root apache  6 окт 22 12:08 opcache
drwxr-xr-x 2 root root   59 окт 28 10:05 peclxml
drwxrwx--- 2 root apache  6 окт 22 12:08 session
drwxrwx--- 2 root apache  6 окт 22 12:08 wsdlcache

=== Назначаем правильные права ===
chown -R root:nginx /var/lib/php

Перезапускаем php-fpm командой:

systemctl restart php-fpm

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

ll /run/php-fpm/www.sock 
srw-rw---- 1 nginx nginx 0 фев 13 10:35 /run/php-fpm/www.sock

Всё успешно настроено.

Что за язык PHP и почему он так популярен

PHP: Hypertext Preprocessor (изначально Personal Home Page Tools, «Инструменты для создания персональных веб-страниц») — один из лидирующих языков современной веб-разработки. Его отцом считается датский программист Расмус Лердорф, который в 1994 году создал набор скриптов на Perl — ту самую «персональную домашнюю страницу», которая легла в основу PHP.

Со временем к работе над ним подключились разработчики со всего мира. PHP — один из старейших языков в рамках open source-проекта . Сейчас его поддерживает и разрабатывает группа энтузиастов во главе с компанией Zend Technologies. Ей руководят Зеев Сураски и Энди Гутманс: в 1997 году они создали третью версию PHP и активно развивают язык по сегодняшний день.

3 Установка Apache

CentOS 7 поставляется с Apache 2.4. Apache напрямую доступен в виде пакета CentOS 7, поэтому мы можем установить его следующим образом:

yum -y install httpd

Теперь настройте систему для запуска Apache во время загрузки …

systemctl start httpd.service
systemctl enable httpd.service

Чтобы получить доступ к веб-серверу извне, нам нужно открыть порты HTTP (80) и HTTPS (443) в брандмауэре. Брандмауэр по умолчанию в CentOS — firewalld, который можно настроить с помощью команды firewalld-cmd.

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd –reload

Теперь направьте ваш браузер на IP-адрес вашего сервера, в моем случае http://192.168.0.100, и вы должны увидеть страницу-заполнитель Apache.

Веб-разработчики занимаются только сайтами

Вообще-то да, веб-разработка — это про «веб», про то, чем мы пользуемся в Сети. Но в интернете существуют не только сайты, но и куча других вещей: облачные хранилища, приложения для смартфонов, мессенджеры, различные онлайн-сервисы. Их созданием тоже занимаются веб-разработчики.


Приложения для смартфонов вроде DeliveryClub, «Ситимобила» или KFC — тоже дело рук веб-разработчиков

Понятие сайта вообще довольно условное. Например, Google Drive — это вроде бы сайт, у него есть URL-адрес, на который можно зайти через браузер. И одновременно это веб-сервис со сложной логикой и структурой, серверами и приложениями для ПК и смартфонов. То же касается и многих других сайтов — соцсетей «ВКонтакте», Facebook, почты Google, маркетплейса Ozon или музыкального Spotify.

Кстати, образовательная платформа Skillbox — тоже онлайн-сервис. Ведь у нас есть и система личных кабинетов, и видеоуроки, и проверка домашних заданий.

А сайты в чистом виде — это, пожалуй, только визитки компаний или личные блоги, простые страницы с минимумом интерактива и информации.

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

Установка MySQL в CentOS 7

Как я уже писал ранее, сейчас все большее распространение получает форк mysql — mariadb. Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.

Устанавливаем mariadb на CentOS 7:

# yum install -y mariadb mariadb-server

Добавляем mariadb в автозапуск:

# systemctl enable mariadb.service

Запускаем mariadb:

# systemctl start mariadb

Проверяем, запустилась или нет:

# netstat -tulnp | grep mysqld
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      22276/mysqld

Обращаю внимание, что она даже в системе отображается как сервис mysqld. Теперь запускаем стандартный скрипт настройки безопасности:

# /usr/bin/mysql_secure_installation

Не буду приводить весь вывод работы этого скрипта, там все достаточно просто и понятно. Сначала задаем пароль для root (текущий пароль после установки пустой), потом удаляем анонимных пользователей, отключаем возможность подключаться root удаленно, удаляем тестового пользователя и базу.

Файл настроек mysql/mariadb лежит в /etc/my.cnf. Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.

Перезапуск mariadb/mysql в CentOS 7:

# systemctl restart mariadb

На этом все. Базовый функционал web сервера на CentOS 7 настроен.

Если вам нужен phpmyadmin воспользуйтесь моим подробным руководством по установке и настройке phpmyadmin на centos 7.

Буду рад замечаниям и комментариям по теме статьи. Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Настройка backup

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

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

Бэкап сайта в vesta cp состоит из:

  1. Исходников сайтов, сертификатов к ним, конфигураций nginx и самой весты к каждому домену.
  2.  Конфигурационных файлов системного профиля на сервере.
  3. Дампа mysql баз и системных настроек для них.
  4. Cron файла пользователя.

Восстановить backup из подобного архива можно как на самой панели управления хостингом vestacp, так и на другом сервере. Мне понравилась такая простая и надежная реализация бэкапа.

Предварительные требования

  • Один сервер CentOS 7 с не менее чем 1 ГБ оперативной памяти, настроенный согласно руководству Начальная настройка сервера CentOS 7, с пользователем non-root user с привилегиями sudo и брандмауэром.
  • Веб-сервер Apache, установленный и настроенный в соответствии с указаниями руководства Установка веб-сервера Apache в CentOS 7​​​.
  • Доменное имя, настроенное так, чтобы указывать на ваш сервер CentOS 7. Информацию о том, как сделать так, чтобы домены указывали на дроплеты DigitalOcean, можно найти в руководстве Создание указаний на серверы имен DigitalOcean из общих реестров доменов. Для целей настоящего обучающего модуля мы используем два субдомена, каждый из которых указан с записью в наших настройках DNS: и .

Самые ненавистные языки программирования

Рейтинг самых ненавистных языков по результатам проведенного Stack Overflow опроса стал язык С. 66% респондентов не хотели бы с ним больше связываться, и лишь 39,56%, наоборот, были готовы и дальше писать на нем.

Примечательно, что в индексе Tiobe за июль 2021 г., в котором Rust находится на 27 месте, C занимает первое место.

С – не единственный язык, ставший «ненавистным». Наряду с ним этот статус получили C ++, Delphi, Java, R, PowerShell, COBOL, PHP, Perl, Assembly, Groovy, Objective-C, Matlab, VBA.

Представленный в этом перечне COBOL считается одним из старейших языков программирования. Он существует с середины XX века, и долгое время он считался мертвым языком. Однако весной 2020 г, он вновь стал популярным во время пандемии коронавируса. Подробнее об этом читайте в материале CNews.

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

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