ApacheMySQLPHP: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
(небольшие корректировки)
Строка 243: Строка 243:


14. Редактируем файл hosts и дописываем туда:
14. Редактируем файл hosts и дописываем туда:
<pre>127.0.0.1 test1.loc
<pre>127.0.0.1 test1.loc
127.0.0.1 test2.loc</pre>
127.0.0.1 test2.loc</pre>


15. Перезапускаем сервис apache
15. Перезапускаем сервис apache
Строка 280: Строка 280:


22. Устанавливаем пароль MySQL (пароль будет mypassword)
22. Устанавливаем пароль MySQL (пароль будет mypassword)
<pre>service mysqld start</pre>
<pre> sudo service mysqld start</pre>
<pre>mysql -u root</pre>
<pre>sudo mysql -u root</pre>
Откроется консоль MySQL (Mariadb). Вводим поочередно:
Откроется консоль MySQL (Mariadb). Вводим поочередно:
<pre>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');</pre>
<pre>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');</pre>
Строка 332: Строка 332:
<pre>mkdir /home/johndoe/Документы/Projects/test3.loc/htdocs</pre>
<pre>mkdir /home/johndoe/Документы/Projects/test3.loc/htdocs</pre>
<pre>echo "<?php phpinfo();" > /home/johndoe/Документы/Projects/test3.loc/htdocs/index.php</pre>
<pre>echo "<?php phpinfo();" > /home/johndoe/Документы/Projects/test3.loc/htdocs/index.php</pre>
<pre>sudo service httpd2 restart</pre>


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

Версия от 15:21, 23 июня 2022

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

Примечание: Новые версии пакета устанавливают Apache 2, PHP 7 и Mariadb.


Установка

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

apt-get update
apt-get install lamp-server

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

Службы

Apache2 — httpd2:

chkconfig httpd2 on
service httpd2 start

MySQL — mysqld:

chkconfig mysqld on
service mysqld start

Примечание:

  • поддержка PHP встроена в Apache2, поэтому запускается вместе с ним
  • указанные команды работают как в Sysvinit, так и в Systemd

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

Основная тема: Веб-серверы. ALT Linux 7.0 Server - лабораторные работы

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 (лежат в проектах)

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

sudo apt-get update
sudo apt-get dist-upgrade

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 "<?php phpinfo();" > /home/johndoe/Документы/Projects/test1.loc/htdocs/index.php
echo "<?php phpinfo();" > /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-untl 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 запускался от юзера под которым мы работаем, нам необходимо отредактировать следующие параметры, то есть привести их к следующему виду (обратите внимание: на пробелы возле знака "="):

user = johndoe
group = johndoe
listen.owner = johndoe
listen.group = johndoe
listen=/run/php7-fpm.sock

5. Редактируем файл /etc/fpm8.1/php-fpm.d/www.conf В данном случае настраиваем PHP8.1. По аналогии с предыдущим пунктом, меняем пользователя, от которого будет работать PHP FPM 8.1

user = johndoe
group = johndoe
listen.owner = johndoe
listen.group = johndoe
listen=/run/php8.1-fpm.sock

ВНИМАНИЕ! Для ваших версий PHP будут другие адреса сокетов (параметр listen). Смотрите внимательно!

6. Запускаем сервисы PHP-FPM:

sudo service php7-fpm start
sudo service php8.1-fpm start

7. Разрешаем запуск PHP при старте системы:

sudo systemctl enable php7-fpm
sudo systemctl enable php8.1-fpm

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

	# Redirect to local php-fpm if mod_php is not available
	<IfModule !mod_php7.c>
	<IfModule proxy_fcgi_module>
		# Enable http authorization headers
		<IfModule setenvif_module>
			SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
		</IfModule>

		<FilesMatch ".+\.ph(ar|p|tml)$">
			SetHandler "proxy:unix:/run/php7-fpm.sock|fcgi://localhost/"
		</FilesMatch>

		<FilesMatch ".+\.phps$">
			# 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
		</FilesMatch>
		# Deny access to files without filename (e.g. '.php')
		<FilesMatch "^\.ph(ar|p|ps|tml)$">
			Require all denied
		</FilesMatch>
	</IfModule>
	</IfModule>

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

	# Redirect to local php-fpm if mod_php is not available
	<IfModule !mod_php8.c>
	<IfModule proxy_fcgi_module>
		# Enable http authorization headers
		<IfModule setenvif_module>
			SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
		</IfModule>

		<FilesMatch ".+\.ph(ar|p|tml)$">
			SetHandler "proxy:unix:/run/php8.1-fpm.sock|fcgi://localhost/"
		</FilesMatch>

		<FilesMatch ".+\.phps$">
			# 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
		</FilesMatch>
		# Deny access to files without filename (e.g. '.php')
		<FilesMatch "^\.ph(ar|p|ps|tml)$">
			Require all denied
		</FilesMatch>
	</IfModule>
	</IfModule>

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

<VirtualHost *:80>
	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

	<Directory "/home/johndoe/Документы/Projects/test1.loc/htdocs">
	    Options Indexes FollowSymLinks MultiViews
	    AllowOverride All
	    Require all granted
	</Directory>

</VirtualHost>

# Второй хост, будет доступен по адресу http://test2.loc
# и будет работать на PHP 8.1
<VirtualHost *:80>
	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

	<Directory "/home/johndoe/Документы/Projects/test2.loc/htdocs">
	    Options Indexes FollowSymLinks MultiViews
	    AllowOverride All
	    Require all granted
	</Directory>

</VirtualHost>

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

sudo a2ensite vhosts

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

User johndoe
Group johndoe

13. Разрешаем FCGI

sudo a2enmod proxy_fcgi
sudo a2enmod proxy

14. Редактируем файл 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:

http://test1.loc
http://test2.loc

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

<IfModule alias_module>
	 Alias /phpmyadmin /var/www/webapps/phpMyAdmin/
	<Directory /var/www/webapps/phpMyAdmin/>
		Options Indexes MultiViews
		AllowOverride All
		Require all denied
		Require ip 127.0.0.1
	</Directory>
</IfModule>

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
sudo mysql -u root

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

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

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

sudo systemctl enable mysqld


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

http://test1.loc/phpmyadmin
логин: root
пароль: mypassword

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

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

127.0.0.1	test3.loc

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

		# Третий хост, будет доступен по адресу http://test3.loc
		# и будет работать на PHP 8.1
		<VirtualHost *:80>
			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

			<Directory "/home/johndoe/Документы/Projects/test3.loc/htdocs">
				Options Indexes FollowSymLinks MultiViews
				AllowOverride All
				Require all granted
			</Directory>

		</VirtualHost>

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

mkdir /home/johndoe/Документы/Projects/test3.loc
mkdir /home/johndoe/Документы/Projects/test3.loc/logs
mkdir /home/johndoe/Документы/Projects/test3.loc/htdocs
echo "<?php phpinfo();" > /home/johndoe/Документы/Projects/test3.loc/htdocs/index.php
sudo service httpd2 restart

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


Ссылки