LAMP LEMP - uniqcle/DevOps GitHub Wiki

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

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

apt-get install aptitude 
aptitude update
aptitude install <package>
aptitude remove <package>
aptitude search php | grep 8

PHP

aptitude install php8.2 

Подключение доп. модулей

aptitude install php8.2-curl  # устанавливаем модуль
php8.2-mysql
php8.2-fpm
php8.2-imagick
php8.2-mysql
php-mysqli
php-mysqlnd
php8.2-pdo-mysql
php8.2-soap
php8.2-zip
php8.2-memcached
php8.2-xdebug 
/usr/sbin/phpenmod curl       # включаем модуль
/usr/sbin/phpdismod curl      # выключаем модуль
+ перезагрузка веб сервера

Файлы конфигигураций php - apache2

/etc/php/8.2/apache2/conf.d/  # подключен. модули + php.ini
/etc/php/8.2/cli/conf.d      # если запускаем php через консоль

Apache2

Основные команды

service apache2 stop             # Остановка вебсервера Apache
service apache2 start            # Запуск вебсервера Apache

/etc/init.d/apache2 start     # systemctl start apache2
/etc/init.d/apache2 stop      # systemctl stop apache2
/etc/init.d/apache2 status    # systemctl status apache2
/etc/init.d/apache2 restart   # systemctl restart apache2

1. Устанавливаем apache2

aptitude install apache2 libapache2-mod-php8.2

/var/www/html/index.html

2. Меняем права при необходимости

ls -la
chmod 777 *

Настройки etc/apache2

  1. шаг правим DocumentRoot /home/projects в 000-default.conf
/etc/apache2/sites-available/ 
Если нужно создать отдельный файл настроек сайта
sudo su                         # Переходим в режим супер пользователя
cd  /var/www                    # Переходим в папку var/www   там лежат сайты
mkdir  test-lamp.local          # Создаем папку с сайтом
nano index.php                  # Создаем файл index.php
cd  /etc/apache2/sites-available/  # Переходим к конфигурационным файлам, где апач их хранит
cp 000-default.conf  test-lamp.local.conf  # Копируем конфигурационный файл по умолч. 000-default.conf  в файл [имя сайта].conf

# Редактирование конфигурационного файла. 
# Server Name test-lamp.local   
# DocumentRoot  /var/www/test-lamp.local
nano test-lamp.local.conf 

a2ensite test-lamp.local       # Теперь необходимо сайт включить. Есть сайты доступные sites-available, а есть активированные (включенные)sites-enabled

nano /etc/hosts                # Теперь необходимо сайт включить в службе ДНС
# Также не забыть правки в файле hosts C:\Windows\System32\drivers\etc\  
# Все! В браузере вводим test-lamp.local/
  1. шаг Добавляем директиву в /etc/apache2/apache2.conf
 <Directory /home/projects>
 	Options Indexes FollowSymLinks
 	AllowOverride None
 	Require all granted
 </Directory>
  1. шаг Перезагрузка
/etc/init.d/apache2 restart   # systemctl restart apache2
  1. шаг Редирект запросов на index.php (если отсутствует файл/папка)

в корне /home/projects создаем .htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?path=$1 [L]

Также в /etc/apache2/apache2.conf меняем с AllowOverride None на AllowOverride All

 <Directory /home/projects>
 	Options Indexes FollowSymLinks
 	AllowOverride All
 	Require all granted
 </Directory>

Включаем модуль rewrite

a2enmod
rewrite

Nginx

Основные команды

systemctl start nginx        # Запуск 
systemctl stop nginx         # Отключение 
systemctl restart nginx      # Перезапуск 
systemctl reload nginx       # Перезагрузка 
systemctl status nginx       # Проверка состояния службы 
sudo nginx -t                # Тестирование конфигурации 

systemctl enable nginx       # добавим программу в автозагрузку
systemctl is-enabled nginx   # проверим его наличие в автозагрузке

service php7.4-fpm restart Перезагружаем сервис php-fpm, чтобы он мог перечитать файлы конфигураций
service php7.4-fpm status 

Установка

apt-get install nginx
aptitude install nginx

настройки /etc/nginx/sites-available

root /home/projects;
если необходимы файлы настроек отдельным файлом
sudo su                       # Переходим в режим супер пользователя
cd  /var/www                  # Переходим в папку var/www   там лежат сайты
mkdir  test-lemp.local        # Создаем папку с сайтом
nano index.php                # Создаем файл index.php
nano /etc/hosts               # Создаем настройку в файле hosts 127.0.0.1
cd /etc/nginx                 # Переходим к настройке конфигурации на сервере
cd  /etc/nginx/sites-available/  # Переходим к конфигурационным файлам, где nginx их хранит. Есть сайты доступные sites-available, а есть активированные (включенные)sites-enabled
cp default  test-lemp.local   # Создадим копию конфигурационного файла
nano test-lemp.local          # Подправляем файл с настройками
nginx -t                      # Проверяем настройки на валидность
#Теперь сайт необходимо активировать. Ln –s говорит, что нужно сделать ссылку на файл и поместить ее в следующую директорию
ln –s /etc/nginx/sites-available/test-lemp.local  /etc/nginx/sites-enabled/test-lemp.local/
Service nginx restart        # Далее необходимо перезагрузить вебсервер

настройки fpm

1 шаг. устанавливаем, если не установлено

aptitude search php | grep fpm
aptitude install php8.2-fpm

проверяем запущен ли

/etc/init.d/php8.2-fpm status  # systemctl status php8.2-fpm

2 шаг. Связываем fpm с nginx

/etc/nginx/nginx.conf

try_files $uri/ @rewrite; 

location @rewrite{
 rewrite ^/(.*)$ /index.php?_url=/$1;
}

location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
файл конфигурации nginx
server
        {
        listen 80;
    	  server_name sampledomain.ru www.sampledomain.ru;
          charset utf-8;
          root /home/sampledomain.ru;
          index index.php index.html index.htm;

    # Static content
        	location ~* ^.+.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|mp3|bmp|flv|rtf|js|swf|iso)$ {
          root /home/sampledomain.ru;
                   }

        location ~ \.php$
          {
            include fastcgi.conf;
            fastcgi_intercept_errors on;
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
          }

      location / {
          try_files $uri $uri/ /index.php?q=$uri$args;
      }
    }

установка mysql

apt-get install mysql-server     # Установка БД MySQL. Установка пароля root для MySQL
mysql –V                          
mysql –uroot –p                  # Работа с MySQL из командой строки. Пароль root
⚠️ **GitHub.com Fallback** ⚠️