Lamp server alt linux

ApacheMySQLPHP

Это руководство поможет установить сервер LAMP (Linux+Apache+MySQL+PHP) на ALT Linux на базе Apache 2, PHP 5 и MySQL 5.0.

Установка (PHP как модуль Apache)

Подключите репозиторий (в Интернете или на диске) и выполните

apt-get update apt-get install lamp-server

Внимание: этот пакет лишь установит программное обеспечение. После установки необходимо настроить компоненты и (для некоторых веб-движков) доустановить дополнительные компоненты.

Службы

chkconfig httpd2 on service httpd2 start
chkconfig mysqld on service mysqld start
  • поддержка PHP встроена в Apache2, поэтому запускается вместе с ним ecли модуль mod_php установлен (может иметь разные версии — mod_php7 или mod_php8.1)
  • указанные команды работают как в Sysvinit, так и в Systemd

Видеоуроки от Саломатина

Apache2 Первоначальная установка. Запуск статической страницы

Apache2 Запуск PHP скриптов

Включение PHP

a2enmod mod_php7 service httpd2 restart

Установка LAMP на локальный сервер для разработки (руководство)

Цель: Поднять сервер, пригодный и удобный для разработки в среде LAMP (Linux Apache PHP Mysql/Mariadb) на локальном компьютере. Подойдет начинающим пользователям, которые хотят писать сайты и веб-приложения на PHP. Это замечательная альтернатива готовым решениям типа XAMPP, OpenServer или забытый уже Denwer.

Преимущества такого подхода (PHP-FPM на локале):

  • Возможность менять версию PHP для разных проектов
  • Полный контроль над Вашим сервером стандартными средствами
  • Никаких проблем с правами на файлы. Работаем просто от пользователя
  • При доп. настройке несложно будет тестить например на мобильном
  • легко добавлять/удалять домены
  • хранить Ваши проекты там, где Вам удобно на диске

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

  • Cвежеустановленный и обновленный Alt Linux p10 (Делалось на Simply).
  • Пользователь под которым работаем: johndoe. У Вас конечно свой.
  • Каталог где хранятся наши PHP проекты: /home/johndoe/Документы/Projects
  • Тестовые «сайты»: каталоги test1.loc и test2.loc (лежат в проектах)
Читайте также:  Linux resolve dns to ip

0. Обновляем доступные пакеты:

1. Создаем каталог проектов /home/johndoe/Документы/Projects

mkdir /home/johndoe/Документы/Projects

2. Создаем каталоги test1.loc и test2.loc в каталоге проектов:

mkdir /home/johndoe/Документы/Projects/test1.loc
mkdir /home/johndoe/Документы/Projects/test2.loc

Создаем каталоги для логов:

mkdir /home/johndoe/Документы/Projects/test1.loc/logs
mkdir /home/johndoe/Документы/Projects/test2.loc/logs

Создаем каталоги собственно содержимого для веб:

mkdir /home/johndoe/Документы/Projects/test1.loc/htdocs
mkdir /home/johndoe/Документы/Projects/test2.loc/htdocs

Создаем заглушки, которые будут показывать нам версию PHP

echo " /home/johndoe/Документы/Projects/test1.loc/htdocs/index.php
echo " /home/johndoe/Документы/Projects/test2.loc/htdocs/index.php

3. Устанавливаем необходимые пакеты: В данном случае будет установлено всё необходимое для работы веб-сервера. Обратите внимание, что будет установлено две версии PHP — 7.4 и 8.1. Мы для двух локальных «сайтов» будем использовать разные. В Вашем случае, естественно, ставьте пакеты которые необходимы Вам.

sudo apt-get install apache2 apache2-httpd-prefork php8.1 php8.1-bz2 php8.1-curl php8.1-exif php8.1-ssh2 php8.1-fileinfo php8.1-openssl php8.1-fpm-fcgi php8.1-gd php8.1-imagick php8.1-mbstring php8.1-intl php8.1-mcrypt php8.1-pcntl php8.1-pdo php8.1-pdo_mysql php8.1-readline php8.1-xmlreader php8.1-xsl php8.1-yaml php8.1-zip php8.1-mysqli php7 php7-bz2 php7-curl php7-exif php7-mbstring php7-fileinfo php7-fpm-fcgi php7-gd php7-imagick php7-intl php7-mcrypt php7-openssl php7-pcntl php7-pdo php7-pdo_mysql php7-readline php7-ssh2 php7-xmlreader php7-xsl php7-yaml php7-zip php7-mysqli phpMyAdmin mariadb-common mariadb-server mariadb-client mariadb

4. Редактируем файл /etc/fpm7/php-fpm.d/www.conf В данном случае настраиваем PHP7. Здесь необходимо сделать так, чтобы PHP FPM запускался от юзера под которым мы работаем, нам необходимо отредактировать следующие параметры, то есть привести их к следующему виду (обратите внимание: на пробелы возле знака » (.+)» HTTP_AUTHORIZATION=$1 SetHandler «proxy:unix:/run/php7-fpm.sock|fcgi://localhost/» # Deny access to raw php sources by default # To re-enable it’s recommended to enable access to the files # only in specific virtual host or directory Require all denied # Deny access to files without filename (e.g. ‘.php’) Require all denied

9. Создаем в /etc/httpd2/conf/include конфиг для PHP 8.1: Файл называем php8.1-fpm.conf и у него будет след. содержимое:

# Redirect to local php-fpm if mod_php is not available  # Enable http authorization headers SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 SetHandler "proxy:unix:/run/php8.1-fpm.sock|fcgi://localhost/" # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied # Deny access to files without filename (e.g. '.php') Require all denied  

10. Редактируем /etc/httpd2/conf/sites-available/vhosts.conf Необходимо добавить туда два виртуальных хоста для наших сайтов. Следует помнить, что один из них будет работать на PHP 7 а другой на php 8.1. Также, не забывайте менять johndoe на имя вашего пользователя. Добавляем следующие строки:

 ServerAdmin admin@gmail.com DocumentRoot /home/johndoe/Документы/Projects/test1.loc/htdocs ServerName test1.loc ServerAlias www.test1.loc ErrorLog /home/johndoe/Документы/Projects/test1.loc/logs/error.log CustomLog /home/johndoe/Документы/Projects/test1.loc/logs/custom.log combined DirectoryIndex index.php Include /etc/httpd2/conf/include/php7-fpm.conf Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted  # Второй хост, будет доступен по адресу http://test2.loc # и будет работать на PHP 8.1 ServerAdmin admin@gmail.com DocumentRoot /home/johndoe/Документы/Projects/test2.loc/htdocs ServerName test2.loc ServerAlias www.test2.loc ErrorLog /home/johndoe/Документы/Projects/test2.loc/logs/error.log CustomLog /home/johndoe/Документы/Projects/test2.loc/logs/custom.log combined DirectoryIndex index.php Include /etc/httpd2/conf/include/php8.1-fpm.conf Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted 

11. Делаем доступным конфиг содержащий виртуальные хосты:

Читайте также:  Install smb on linux

12. Меняем пользователя под которым будет запускаться apache. Редактируем файл /etc/httpd2/conf/httpd2.conf и приводим строки с именем пользователя и группой к следующим:

User johndoe Group johndoe

14. Редактируем файл /etc/hosts и дописываем туда:

127.0.0.1 test1.loc 127.0.0.1 test2.loc

15. Перезапускаем сервис apache

sudo service php7-fpm restart
sudo service php8.1-fpm restart
sudo service httpd2 restart

16. Если хотите чтобы apache стартовал при запуске системы, команда:

sudo systemctl httpd2 enable

17. Теперь проверьте в адресной строке браузера: Обязательно смотрите, чтобы браузер не исправлял на https:

18. Приступим к настройке phpMyAdmin который мы поставили через apt: Создадим файл /etc/httpd2/conf/extra-available/phpMyAdmin.conf со следующим содержимым:

 Alias /phpmyadmin /var/www/webapps/phpMyAdmin/ Options Indexes MultiViews AllowOverride All Require all denied Require ip 127.0.0.1 

19. Разрешим конфигурацию phpMyAdmin и перезагрузим apache:

sudo a2enextra phpMyAdmin
sudo service httpd2 restart

20. меняем права на каталог phpMyAdmin:

sudo chown -hR johndoe:johndoe /var/www/webapps/phpMyAdmin/*

21. Теперь можем попробовать например http://test1.loc/phpmyadmin

22. Устанавливаем пароль MySQL (пароль будет mypassword)

sudo service mysqld start

Откроется консоль MySQL (Mariadb). Вводим поочередно:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');

23. Если хотим чтобы Mariadb запускалась при загрузке, то вводим

sudo systemctl enable mysqld

24. Пробуем зайти в phpmyadmin:

логин: root пароль: mypassword

25. Теперь будет удобно, если сможем запускать/перезапускать/смотреть статус сервисов от непривелигированного пользователя: создаем файл /etc/sudoers.d/lamp и заносим туда следующие строки:

johndoe ALL = NOPASSWD: /bin/systemctl restart httpd2, /bin/systemctl start httpd2, /bin/systemctl stop httpd2, /bin/systemctl status httpd2 johndoe ALL = NOPASSWD: /bin/systemctl restart mysqld, /bin/systemctl start mysqld, /bin/systemctl stop mysqld, /bin/systemctl status mysqld johndoe ALL = NOPASSWD: /bin/systemctl restart php7-fpm, /bin/systemctl start php7-fpm, /bin/systemctl stop php7-fpm, /bin/systemctl status php7-fpm johndoe ALL = NOPASSWD: /bin/systemctl restart php8.1-fpm, /bin/systemctl start php8.1-fpm, /bin/systemctl stop php8.1-fpm, /bin/systemctl status php8.1-fpm

26. Теперь мы можем создать скрипты для старта и останова нашего LAMP DEV сервера (создаем их где вам удобно): Скрипт lamp_start.sh:

#!/bin/bash sudo systemctl start php7-fpm sudo systemctl start php8.1-fpm sudo systemctl start httpd2 sudo systemctl start mysqld
#!/bin/bash sudo systemctl stop php7-fpm sudo systemctl stop php8.1-fpm sudo systemctl stop httpd2 sudo systemctl stop mysqld

Обязательно сделайте для скриптов возможность выполнения чтобы их возможно было запускать! После этого Вы можете создать где нибудь значки запуска например в панели или на рабочем столе, и одним кликом мыши запускать или останавливать Ваш DEV LAMP сервер.

Читайте также:  Check port on linux server

Готово. Теперь Вы можете использовать локальный сервер для разработки веб-приложений в среде LAMP. Если понадобится добавить например третий домен, то необходимо будет:

1. Добавить его в файл /etc/hosts

2. Добавить еще один virtualhost в /etc/httpd2/conf/sites-available/vhosts.conf

# Третий хост, будет доступен по адресу http://test3.loc # и будет работать на PHP 8.1 ServerAdmin admin@gmail.com DocumentRoot /home/johndoe/Документы/Projects/test3.loc/htdocs ServerName test3.loc ServerAlias www.test3.loc ErrorLog /home/johndoe/Документы/Projects/test3.loc/logs/error.log CustomLog /home/johndoe/Документы/Projects/test3.loc/logs/custom.log combined DirectoryIndex index.php Include /etc/httpd2/conf/include/php8.1-fpm.conf # Include /etc/httpd2/conf/include/php7-fpm.conf Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted 

3. Создать каталог хоста в проектах

mkdir /home/johndoe/Документы/Projects/test3.loc
mkdir /home/johndoe/Документы/Projects/test3.loc/logs
mkdir /home/johndoe/Документы/Projects/test3.loc/htdocs
echo " /home/johndoe/Документы/Projects/test3.loc/htdocs/index.php
sudo service httpd2 restart

Конечно, при желании всё возможно автоматизировать скриптами. Также возможно при помощи systemd разрешить запуск сервисов не от суперпользователя.

Ссылки

Источник

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