"Глухой не тот, кто не слышит, а тот, кто не хочет слышать."
"Глухой не тот, кто не слышит, а тот, кто не хочет слышать."
Кроме этих MySql поддерживает множество других типов данных.
Текстовые значения обычно хранятся в поле VARCHAR. Эти поля должны содержать столько символов, сколько было для них аллоцировано. Отличие CHAR от VARCHAR в том, что если текст содержит меньше, чем n символов, оставшееся место заполняется пробелами.
VARCHAR удаляет всё ненужное пространство.
Иногда полезно проверить структуру таблицы. Команда DESCRIBE позволяет это.
Можно создать скрипт, который создаст базу данных, содержащую текстовые данные:
CREATE DATABASE reviews;
USE reviews;
DROP TABLE IF EXISTS Отзывы;
CREATE TABLE Отзывы (
reviewsID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR (15),
City VARCHAR (15),
e_mail VARCHAR (30),
Date DATE,
IP_адресанта VARCHAR (15),
Отзывы VARCHAR (150) );
INSERT INTO Отзывы VALUES ( 0, 'Nikolay', 'Volgograd', 'umanov@mail.ru', '', '', '' );
SELECT * FROM Отзывы;
Прежде чем создавать новую таблицу, необходимо проверить, существует ли она и если существует, то удалить с помощью команды DROP.
Атрибут AUTO_INCREMENT можно использовать для создания уникального идентификатора для новых строк. По умолчанию начальное его значение равно 1, и будет увеличиваться на 1 для каждой новой записи. Для добавления в phpMyAdmin необходимо установить галочку в check box "A_I".
Такие скрипты принято сохранять в файлах с расширением .sql.
Для обозначения комментариев обычно используется знак #.
Команду SOURCE можно использовать для загрузки и выполнения внешнего скрипта.
При создании базы данных она автоматически не выбирается; выбирать её нужно отдельно. Сделать reviews текущей базой можно с помощью следующей команды:
mysql> USE reviews;
Database changed
После создания таблицы, можно добавлять в неё данные.
Для добавления столбца достаточно воспользоваться ALTER TABLE запросом следующего формата:
ALTER TABLE Название_таблицы ADD COLUMN Название_добавляемого_столбца Тип_колонки_и_значение_по_умолчанию AFTER Добавить_после_указанной_колонки:
ALTER TABLE Отзывы ADD COLUMN avatar VARCHAR(255) NOT NULL AFTER e_mail;
Для добавления данных в БД в MySQL используется команда INSERT, которая имеет следующий синтаксис: После выражения INSERT INTO задаётся имя таблицы, далее в скобках указывается список столбцов через запятую, в которые надо добавлять данные, и в конце после VALUES в скобках перечисляются добавляемые для столбцов значения:
INSERT INTO Отзывы (Name,City,e_mail) VALUES ('Nikolay', 'Volgograd', 'umanov@mail.ru');
Значения должны приводиться в том же порядке, в котором были определены поля.
Второй вариант, хорош, если заполняемых запросом полей много - нет привязки к порядку полей в таблице и видно, какое значение к какому полю относится.
INSERT INTO Отзывы SET Name = 'Nikolay', City = 'Volgograd', e_mail = 'umanov@mail.ru';
MySQL содержит множество функций, которые используются для обработки даты и времени.
INSERT INTO Отзывы (Date) VALUES (NOW()); # внесёт в строку текущую дату и время.
Удаление записи в MySQL:
DELETE FROM Отзывы WHERE id = 3; # удалит строку в таблице, где идентификатор равен 3.
Удалить столбец:
ALTER TABLE Отзывы DROP id;
Очистить таблицу можно при помощи одной из команд:
DELETE FROM Отзывы;
Если необходимо загрузить в базу данных большое количество данных, можно использовать команду LOAD DATA. Эта команда принимает текстовый файл, элементы которого разделены символами, например, точкой с запятой ;.
LOAD DATA LOCAL INFILE "comments.txt" INTO TABLE Отзывы fields terminated by ";";
База данных не только получает данные, но и фильтрует их.
Команду SELECT можно использовать для получения части всех данных, в которых содержатся только необходимые поля и записи. Такой процесс задания вопросов базе данных называется запросом.
Для выбора столбцов:
SELECT Name, City FROM Отзывы; # данный запрос возвращает столбцы Name и City
При выборе строк используется оператор WHERE для фильтрации результатов в SELECT, INSERT, UPDATE или DELETE.
SELECT *FROM Отзывы WHERE City = 'Eurosteel'; # данный запрос возвращает только строки, удовлетворяющие заданному условию
Текстовые элементы заключаются в одинарные кавычки(').
Для использования одинарных кавычек, требуемых в некоторых запросах, необходимо перед ними поставить символ обратной черты \'.
Условия в команде WHERE задаются математическими знаками: = используется для обозначения равенства, <, > и <= или >= для ограничения поиска.
Кроме того, операторы < и > предназначены для сортировки по алфавиту:
SELECT *FROM Отзывы WHERE City < 'V'; # выберет все записи названия городов, которые начинаются с букв расположеных ранее по алфовиту, чем V
Команда LIKE позволяет находить частичные совпадения:
SELECT *FROM Отзывы WHERE City LIKE 'M%'; # выберет все записи названия городов, которые начинаются с M
Знак "%" используется в качестве специального символа для обозначения любого количества символов. Для обозначения одного символа используется знак подчёркивания "_".
Можно комбинировать условия с помощью ключевых слов AND, OR и NOT:
SELECT *FROM Отзывы WHERE City LIKE 'E%' AND Name LIKE '_ub%'; # выберет все записи названия городов, которые начинаются с E и именем с любой первой буквой продолжающимся ub и окончивающимся любым количеством символов
Команда ORDER BY позволяет определить, как будут отсортированы данные:
SELECT *FROM Отзывы ORDER BY e_mail;
Команда DESC определяет, что данные будут отсортированы в порядке убывания:
SELECT *FROM Отзывы ORDER BY id DESC;
Для обновления данных можно использовать команду UPDATE:
UPDATE Отзывы SET City = 'Eurosteel' WHERE Name = 'Nikolay'; # изменит город в записях с именем Nikolay
Узнать, какие базы существуют в настоящее время на сервере, можно при помощи команды SHOW:
mysql> SHOW DATABASES;
Возможно, будут присутствовать базы mysql и test. В базе данных mysql описываются пользовательские права доступа. База test применяется для экспериментов.
Делать это можно из командной строки при запуске mysql. Для этого достаточно ввести её имя после параметров соединения:
mysql -h host -u user -p reviews
Enter password: ********
Ввести пароль в командной строке после параметра -p нужно без пробела (например, -pmypassword, а не -p mypassword). Пароль в командной строке лучше не вводить, так как его могут и подсмотреть.
Выходим из клиента MySQL:
\q
Перезапускаем MySQL сервер:
/etc/init.d/mysql restart
systemctl restart mysqld.service
Пароль MySQL изменён.
Создать пользователя MySQL и предоставить ему права доступа.
Запускаем MySQL.
Выполняем следующую команду:
CREATE USER 'non-root'@'localhost' IDENTIFIED BY '123';
В этой команде, ‘non-root’ – это имя, которое назначается новому пользователю. А ‘123’ – это его пароль.
Чтобы назначить вновь созданному пользователю неограниченные права доступа к базе данных, выполняем следующую команду:
GRANT ALL PRIVILEGES ON * . * TO 'non-root'@'localhost';
Для вступления изменений в силу запускаем команду обновления:
FLUSH PRIVILEGES;
Пользователь получил те же права доступа в базе данных, что и пользователь root.
Не очень разумно давать уровень доступа root-а не root-пользователю. Чаще всего, будет необходимо предоставлять разные уровни доступа для разных пользователей. MySQL позволяет сделать это, выполнив команду:
GRANT [тип прав] ON [имя базы данных].[имя таблицы] TO ‘non-root’@'localhost’;
Необходимо заменить значение ‘тип прав’ на тот вид прав доступа, который нужен пользователю. Также нужно указать базу данных и имена таблиц, доступ к которым предоставляется. ‘non-root’ – это имя пользователя, его можно заменить на нужное. В MySQL есть несколько типов прав доступа, некоторые из них описаны ниже:
CREATE – Позволяет пользователям создавать базы данных/таблицы;
SELECT – Позволяет пользователям делать выборку данных;
INSERT – Позволяет пользователям добавлять новые записи в таблицы;
UPDATE – Позволяет пользователям изменять существующие записи в таблицах;
DELETE – Позволяет пользователям удалять записи из таблиц;
DROP – Позволяет пользователям удалять записи в базе данных/таблицах.
Чтобы назначить несколько видов прав доступа, разделяем их запятыми как в следующей команде:
GRANT CREATE, SELECT, UPDATE, DELETE ON * . * TO 'non-root'@'localhost';
Когда необходимо забрать у пользователя данные ранее права доступа выполняем следующую команду:
REVOKE [тип прав] ON [имя базы данных].[имя таблицы] FROM ‘non-root’@‘localhost’;
Например, чтобы отменить все привилегии у пользователя non-root нужно сделать:
REVOKE ALL PRIVILEGES ON *.* FROM 'non-root'@'localhost';
Проверяем существование пользователя:
SELECT User FROM mysql.user;
Удаляем существующего пользователя, выполнив команду:
DROP USER ‘non-root’@‘localhost’;
Для выполнения любой из этих команд необходимо иметь права доступа root. Также, обязательно выполняем FLUSH PRIVILEGES после любого изменения в правах доступа.
Существует несколько способов использования MySql, одноко типичная процедура работы состоит в следующим: соединение с сервером MySql, выбор базы данных и использования языка структурированных запросов (Structured Query Language) SQL для управления ею (создания таблиц, просмотра данных и т.д.)
Создаём базу данных для отзывов посетителей сайта:
id | Name | City | e_mail | Date | IP_адресанта | Отзывы |
---|---|---|---|---|---|---|
1 | Nikolay | Volgograd | umanov@mail.ru | ГГГГ-ММ-ДД | ||
2 | Sergey | Moscow | polkan@gmail.com | ГГГГ-ММ-ДД | ||
3 | Lubov | Eurosteel | kukareku@gmail.com | ГГГГ-ММ-ДД |
Отзывы представляют собой простую таблицу данных.
Каждая строка таблицы называется записью. Записи описывают дискретные сущности. Список записей называется таблицей. Все записи таблицы содержат одинаковые элементы, называемые полями (или столбцами). У всех записей таблицы одинаковое определение полей, однако записи могут содержать различные значения в этих полях.
Из-за способа хранения таблиц базы данных в файле, компьютер должен точно знать, сколько места необходимо выделить для каждого поля, поэтому размер и тип каждого поля очень важен.
В этой конкретной базе данных определено пять полей.
Поле ID является целочисленным. Все остальные поля содержат строковые данные.
Программ СУРБД используют специальный язык SQL.
Язык SQL является стандартизированным языком, предназеаченным для создания базы данных, сохранения и получения информации из них.
CREATE DATABASE reviews;
USE reviews;
CREATE TABLE Отзывы (
ID INT PRIMARY KEY,
Name VARCHAR (15),
City VARCHAR (15),
e_mail VARCHAR (30),
Date DATE,
IP_адресанта VARCHAR (15),
Отзывы VARCHAR (150) );
DESCRIBE Отзывы;
Этот код является SQL скриптом и набором инструкций, которые выполняет компьютер. Когда этот код отсылается в программу, поддерживающую базы данных SQL (например MySql), он создаёт базу данных в таблице.
Для начала необходимо создать базу данных CREATE DATABASE.
Обычно бывает несколько проектов баз данных, функционирующих в одной и той же СУРБД.
Активизируется база данных с помощью команды USE.
Создаётся база данных с помощью команды CREATE.
reviewsID INT PRIMARY KEY AUTO_INCREMENT большенство таблиц баз данных содержат поле похожее на это, которое хранит численное значение. Это специальное поле называется первичным ключом.
Первичный ключ должен быть уникальным и соответствовать каждой записи.
Названия первичных ключей начинаются с названия таблицы и заканчиваются на ID.
Индификатор AUTO_INCREMENT является специальным инструментом, позволяющим MySql выбрать новое значение для этого поля, если это значение не задано.
Чтобы создать таблицу, необходимо указать её название, а также название всех полей таблицы.
Для каждого поля необходимо указать тип данных, содержащийся в нём, и (по крайней мере для текстовых данных) задать максимальное количество символов, содержащихся в поле.
Для создания эффективной базы данных MySql должен точно знать, сколько байтов памяти выделять для каждого поля базы данных.
Список основных типов данных:
INT - стандартное целое число +/- 2 миллиарда (приблизительно);
BIGINT - большое целое число +/- 9x10^18;
FLOAT - десятичное вещественное число 38 цифр;
DOUBLE - вещественное число с двойной точностью 308 цифр;
CHAR (n) - текст, содержащий n символов. Если текст содержит меньше, чем n символов, оставшееся место добавляется пробелами;
VARCHAR (n) - текст, содержащий n символов. Оставшееся место автоматически обрезается;
DATE - дата в форме ГГГГ-ММ-ДД;
TIME - время в формате ЧЧ:ММ:СС;
YEAR - год в формате ГГГГ.
С помощью .htaccess можно настраивать перенаправления ссылок на сайте. Например, следующая конструкция будет перенаправлять запросы с domain_name на www.domain_name:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain_name$
RewriteRule ^(.*)$ http://www.domain_name/$1 [R=301]
Если добавить к ней строки:
RewriteCond %{HTTP_HOST} sub.domain_name$
RewriteRule ^(.*)$ http://www.domain_name/$1 [NC,R=301,L]
то при открытии sub.domain_name пользователь будет попадать на http://www.domain_name.
Для перенаправления запросов с сайта http://domain_name на https://domain_name добавьте в .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Теперь запросы к domain_name будут идти по шифрованному протоколу HTTPS, при условии, что на сайте установлен сертификат SSL.
Для чтения PHP кода в html файле:
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html
AddLanguage ru .txt .css .js
Настройка Last-Modified
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Защищаем .htaccess файл:
<files .htaccess>
order allow,deny
deny from all
</files>
MySql это популярный сервер баз данных.
Устанавливаем MySql
emerge --ask dev-db/mysql
После установки запускаем:
emerge --config =dev-db/mysql-X.X.XX
Configuring pkg...
* Trying to get password for mysql 'root' user from 'mysql' section ...
* Trying to get password for mysql 'root' user from 'client' section ...
* Please provide a password for the mysql 'root' user now
* or through the /root/.my.cnf file.
* Avoid ["'\_%] characters in the password # вводим пароль
>
* Retype the password # повторно вводим пароль
>
* Creating the mysql database and setting proper permissions on it ...
Если предыдущая команда не выполнится из-за того, что имя хоста установлено в localhost, изменяем его на другое имя, например gentoo.
Обновляем файл:
vim /etc/conf.d/hostname
hostname="gentoo"
В файл hosts добавляем aliases:
vim /etc/hosts
127.0.0.1 ... ... gentoo
::1 ... ... gentoo
и перезапускаем:
/etc/init.d/hostname restart
Для systemd запускаем команду:
hostnamectl set-hostname gentoo
и перезагружаем компьютер.
Запускаем MySql:
/etc/init.d/mysql start
Для systemd:
systemctl start mysqld.service
Просмотреть логи MySql можно командой:
less /var/log/mysql/mysqld.err
Пароль root для MySql можно изменить командой:
/usr/bin/mysqladmin -u root -h localhost password 'new-password'
Можно проверить, что пароль root был успешно настроен, попытавшись войти на MySql сервер:
gentoo ~ $ mysql -u root -h localhost -p
Enter password:
Welcome to the MySQL monitor...
mysql>
Параметр -u указывает пользователя, который будет выполнять вход. Параметр -h указывает хост. Обычно это будет localhost, если только не настраивается удаленный сервер. -p сообщает клиенту mysql что будет вводиться пароль для доступа к базе данных.
Приглашение mysql> это то место, куда будут вводиться все команды.
Если забыт пароль root для MySQL, его можно сбросить.
Останавливаем MySQL:
/etc/init.d/mysql stop
systemctl stор mysqld.service
Запускаем MySQL с особыми параметрами:
/usr/bin/mysqld_safe --skip-grant-tables --user=root &
Запускаем клиента MySQL:
mysql -u root
Выполняем запрос SQL:
mysql>UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';
newpassword новый пароль.
Применяем изменения:
FLUSH PRIVILEGES;
.htaccess - это дополнительный конфигурационный файл Apache, который позволяет настраивать работу веб-сервера для каждой отдельной директории, не влияя на глобальные настройки Apache.
В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:
Круглые скобки () используются для выделения групп символов.
Символ ^ обозначает начало строки.
Символ $ обозначает конец строки.
Символ . обозначает любой символ.
Символ | обозначает альтернативу. Например, выражения "A|B" и "(ABC|DEF)" означают "A или B" и "ABC или DEF" соответственно.
Символ ? ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать. Например, выражению "jpe?g" подойдет и строка "jpg", и строка "jpeg". Пример выражения с группой символов: "super-(puper-)?site".
Символ * ставится после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд. Например, выражению "jpe*g" подойдут строки "jpg", "jpeg" и "jpeeeeeeg".
Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, выражению "jpe+g" подойдут строки "jpeg" и "jpeeeeg", но не "jpg".
Квадратные скобки [ ] используются для перечисления допустимых символов. Например, выражение "[abc]" равносильно выражению "a|b|c", но вариант с квадратными скобками обычно является более оптимальным по быстродействию. Внутри скобок можно использовать диапазоны: например, выражение "[0-9]" равносильно выражению "[0123456789]". Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках. Например, выражение "[^0-9]+" означает строку из любых символов, кроме цифр.
Символ \ ставится перед спецсимволами, если они нужны в своём первозданном виде. Например, выражению "jpe\+g" соответствует только одна строка "jpe+g".
{3,9} - фигурные скобки означают диапазон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть равна или более 3 равна или менее 9 символов. Применяется в основном в модуле преобразований - синтаксис регулярных выражений преобразований, значение флагов.
Пример, проверяем строку HTTP запроса отправленную браузером серверу на предмет совпадения ее содержания определённому шаблону:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
предположим что мы запросили индексную страницу на сервере %{THE_REQUEST} = «GET /index.html HTTP/1.1»
в таком случае мы читаем исходную строку содержащую фигурные скобки так "начало_полученных_данныхGETпробел/index.phpпробелHTTP/"
т.е. может быть "GET", а может быть "POST" могут быть и другие значения... просто символы, в зависимости от того чем и как мы запросим файл index.php на сервере.
Все, что расположено после символа '#', считается комментарием.
Флаг и их описание:
[C] Chain - объединяет несколько правил в цепочку. Если первое правило цепочки не срабатывает, то вся цепочка игнорируется.
[F] Forbidden - возвращает ошибку 403 Forbidden (запрещено).
[G] Gone - возвращает ошибку 410 Gone (удалён).
[L] Last - останавливает процесс преобразования, и текущая ссылка считается окончательной.
[N] Next - запускает процесс преобразования с первого по порядку правила.
[NS] NoSubreq - разрешает срабатывание правила только для настоящих запросов, игнорируя подзапросы.
[NC] NoCase - отключает проверку регистра символов.
[P] Proxy - даёт команду Apache выполнить подзапрос к указанной странице с использованием программного модуля mod_proxy, при этом пользователь ничего не узнает об этом подзапросе. Если модуль mod_proxy отсутствует, то произойдет ошибка.
[PT] PassThrough - останавливает процесс преобразования и передаёт полученную новую ссылку дальше по цепочке.
[QSA] Qsappend - добавляет исходные параметры запроса (Query String) к замене. Если замена не включает в себя новые параметры запроса, то исходные параметры запроса добавляются автоматически. Если же включает, то без флага QSA исходные параметры запроса будут утеряны.
[R] Redirect - останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на новую страницу. По умолчанию передаётся HTTP-код 302 Moved Temporarily (перемещенно временно), но его можно изменить путём присвоения нового статуса через знак равенства [R=301]. В этом случае будет передан HTTP-код 301 Moved Permanently (перемещено навсегда).
[S] Skip - пропускает следующее правило, если текущее правило сработало. Можно указать количество последующих игнорируемых правил [S=2].
Примеры использования файла .htaccess.
Если при обращении к сайту в URL не указан файл, по умолчанию web-сервер будет возвращать индексный файл, например index.html. Данное поведение можно изменить директивой DirectoryIndex:
DirectoryIndex 123.php3 /cgi-bin/index.pl
Теперь при обращении к каталогу будет открываться файл 123.php3 или cgi-bin/index.pl.
При обращении к каталогу Apache попытается найти один из указанных файлов и показать посетителю его содержимое, а если сделать этого не получится, сервер выдаст пользователю список файлов в каталоге. Запретить выдачу листинга каталога можно директивой:
Options -Indexes
При каждом обращении к web-серверу он возвращает код состояния из трёх цифр, в зависимости от результата выполнения запроса. Например, код 404, сообщает, что сервер не нашёл запрошенный ресурс, код 500 означает внутреннюю ошибку сервера и т.д. По умолчанию выдаётся стандартное сообщение сервера с кодом состояния, которое можно переопределить директивой ErrorDocument, указывающей серверу, какой файл выдать на соответствующий код состояния.
ErrorDocument 404 /missing.html
При возникновении ошибки 404 сервер вернёт файл missing.html вместо стандартного сообщение об ошибке. Это полезно с точки зрения выдачи пользователям более информативных сообщений при обработке определённых ситуаций: запроса несуществующего ресурса, требования авторизации web-сервером, ограничения доступа к странице, некорректных ссылок в запросе и т.д.
Полный список кодов состояния доступен по ссылке: Коды состояний.
Если страница отображается в некорректной кодировке, её можно изменить в .htaccess. Для статических страниц (html) можно добавить строку:
AddCharset utf-8 .htm .html
где utf-8 - нужная кодировка.
Для PHP-скриптов можно добавить:
php_value default_charset "cp1251"
где cp1251 - нужная кодировка.
В самих PHP-скриптах можно добавить такую строку (в начале):
header("Content-Type: text/html; charset=utf-8");
Механизм .htaccess можно использовать для установки пароля на доступ к определенным страницам или разделам сайта. Делается это путём создания в нужном подкаталоге файла .htaccess следующего содержания:
AuthType Basic
AuthName "this is a test of protected realm"
AuthUserFile путь_к_файлу_паролей
require valid-user
Теперь нужно создать файл с паролями, путь к которому указывается в качестве параметра к директиве AuthUserFile, если он ещё не создан. Файл паролей создаётся утилитой htpasswd в Unix-shell на сервере хостинга:
htpasswd -c passwords test1
New password:
Re-type new password:
Adding password for user test1
Данная команда создаст файл паролей passwords с пользователем test1:
cat passwords
test1:$apr1$Nxjyt55B$FgzqcO.v1ggG7RyLkMDz3/
Теперь для доступа к каталогу, где расположен файл .htaccess, нужно будет ввести логин test1 и пароль для него.
С помощью директив .htaccess можно запретить доступ к сайту с одного или нескольких IP-адресов:
Order Deny,Allow
Deny from 195.1.1.1
Allow from All
Данная конструкция запрещает доступ к сайту с IP-адреса 195.1.1.1. Если вместо 195.1.1.1 написать 195.1.1, то доступ будет запрещён для всей сети класса с 195.1.1.0/24.
В некоторых случаях при ограничении доступа бывает полезна директива Limit. Она определяет список методов, к которым применяется данное ограничение. Например, <Limit GET> означает, что данное ограничение доступа относится только к методу GET, но не влияет, например, на метод POST. Если в предыдущем примере написать:
<Limit GET>
Order Allow,Deny
Deny from 195.1.1.1
Allow from All
</Limit>
В make.conf добавляем:
Use="...apache2 php threads"
APACHE2_MODULES="cgid cgi"
Для использования event MPM (Multi-Processing Module) добавляем:
APACHE2_MPMS="event"
В package.use добавляем:
www-servers/apache apache2_modules_dir apache2_modules_unixd apache2_modules_authn_core apache2_modules_authz_core apache2_modules_authz_host apache2_modules_mime apache2_modules_socache_shmcb
В ядре проверяем:
CONFIG_SYSVIPC=y
Устанавливаем Apache:
emerge --ask www-servers/apache
Обновляем систему для поддержки Apache в других пакетах:
emerge --ask --changed-use --deep @world
Запуск сервера Apache:
/etc/init.d/apache2 start
Добавление Apache в уровень запуска по умолчанию:
rc-update add apache2 default
Перезагрузка конфигурационных файлов Apache:
/etc/init.d/apache2 reload
Для systemd
Запуск сервера Apache:
systemctl start apache2
Добавление Apache в уровень запуска по умолчанию:
systemctl enable apache2
Проверяем все ли правильно установлено, зайдя браузером на localhost. На странице должно появиться сообщение «It works!».
Просмотреть логи Apache можно командой:
less /var/log/apache2/error_log
Логи Apache могут очень быстро забить систему.
Для их очистки можно использовать программу logrotate
Для каждого виртуального хоста необходимо иметь каталог DocumentRoot, который демон Apache сможет открыть и прочитать.
Добавляем в файл конфигурации виртуального хоста /etc/apache2/vhosts.d/00_default_vhost.conf, который будет использовать данный DocumentRoot и имя сервера виртуального хоста:
<IfDefine DEFAULT_VHOST>
<VirtualHost *:80>
ServerAdmin email@site.com
DocumentRoot /var/www/nikolay.interviewonline.ru
ServerName nikolay.interviewonline
<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>
<Directory "/var/www/nikolay.interviewonline.ru"> # то же, что и у DocumentRoot
Options Indexes FollowSymLinks
AllowOverride All # эта директива может быть установлена в None, т.е. чтобы сервер не читал файл .htaccess. Если она установленна в All - сервер будет допускать все директивы .htaccess файла
Require all granted
</Directory>
</VirtualHost>
</IfDefine>
Создаём каталог виртуального хоста:
mkdir /var/www/nikolay.interviewonline.ru
В каталог для DocumentRoot устанавливается файл index.html
Назначаем файлам виртуального хоста пользователя/группу apache:
chown apache:apache /var/www/nikolay.interviewonline.ru/ -R
Добавляем запись для данного доменного имени в /etc/hosts:
127.0.0.1 localhost nikolay.interviewonline
После добавления новых хостов сервер нужно перезапустить, чтобы новые сайты стали активны:
/etc/init.d/apache2 restart
Для systemd:
systemctl restart apache2
Проверяем правильность настройки виртуального хоста, набрав в браузере
nikolay.interviewonline. Должна появиться страница сайта.
В /etc/portage/package.use добавляем:
>=www-servers/apache-2.4.27-r1 apache2_modules_unique_id
Устанавливаем www-apache/mod_security:
emerge --ask www-apache/mod_security
Включаем модуль SECURITY в переменной APACHE2_OPTS файла /etc/conf.d/apache2:
APACHE2_OPTS="... -D SECURITY"
Для настройки этого модуля редактируем /etc/apache2/modules.d/79_modsecurity.conf и /etc/apache2/modules.d/80_modsecurity-crs.conf файлы, а затем перезапускаем Apache.
Умные люди не тратят свою жизнь на изучение всякой ерунды, они на то и умные что всю работу за них делают другие тоже считающие себя умными, умные платят им зарплату напечатанными бумажками, за которые можно приобрести еду и немного удовольствий.
Николай: Не могу с Вами не согласиться. С нетерпением жду бумажек от умного человека.
Николай: Люди тратили уйму своего времени и труда, чтобы создать этот софт и дарят его Вам. Найдите, пожалуйста, немного времени, чтобы прочитать документацию и научиться это использовать!
Николай: Не понравился сайт, хотите научить меня администрировать? Пожалуйста, с удовольствием буду учиться.
Отзывы в Вашем распоряжении!