В жизни каждого web-разработчика настает такой момент когда нужно поднять свой web-сервер. Сегодня я и напишу про это. На самом деле в этом ни чего тяжелого нет. Все можно установить буквально одной командой.
VirtualBox
web-сервер для тестирования я решил использовать VirtualBox. Установил на виртуальную машину CentOS 7. В настройках виртуалки я сделал лишь несколько правок для настройки сети. Надо зайти в настройки, далее «Сеть», далее выбрать тип подключения «NAT», выбрать «Дополнительно» и там «Проброс портов»

Тут я устанавливаю порты для ssh и web. Можно добавить в hosts, алиас для нашего сервера. Например 127.0.0.1 site.local.com
. Тогда можно обратится в браузере http://site.local.com:8080. Зайдем по ssh на наш сервер и начнем настройку.
nginx+httpd+php
Подготовим настройки репозитория для nginx. Создадим файл:
vi /etc/yum.repos.d/nginx.repo
с таким содержанием:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
Далее добавим репозиторий для php7.2
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-utils && yum-config-manager --enable remi-php72
Следующая команда поставит все необходимые пакеты для начальной разработки
yum update && yum install nginx httpd epel-release && yum update && yum install php php-fpm mariadb mariadb-server php-mysql php-mysqli
Добавляем правила на исключение в брандмауэр и перезагрузим его.
firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --permanent --add-port=443/tcp && firewall-cmd --reload
Следующим этапом добавим Nginx в автозагрузку и запустим его systemctl enable nginx && systemctl start nginx
Если вы все сделали правильно, то когда вы перейдете по ip вашего сервера или алиасу который вы добавили в hosts, вы увидите что то подобное.

Далее выполняем systemctl start php-fpm && systemctl enable php-fpm
запускаем fpm и добавляем в автозагрузку.
Настраиваем наш httpd сервер для работы с nginx. Открываем файл vim /etc/httpd/conf/httpd.conf
Находим строку Listen 80 и меняем ее на Listen 81, если такой нет то добавляем ее в начало файла. Это означает что наш сервер будет слушать 81 порт, я это сделал потому что 80 и 8080 порты слушает nginx. Ниже в файле впишем настройку виртуального хоста. Или можно создать отдельный конфигурационный файл /etc/httpd/conf.d/site.local.com.conf
<VirtualHost 127.0.0.1:81>
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
ServerName site.local.com
Define root_path /var/www/site.local.com
DocumentRoot /var/www/site.local.com
<Directory /var/www/site.local.com>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Следующим этапом будет, создание конфигурационного файл в Nginx. Открываем файл /etc/nginx/nginx.conf
или создаем новый в /etc/nginx/conf.d/site.local.com.conf
с таким содержимым:
server {
listen 80;
server_name site.local.com;
location / {
ssi on;
default_type text/html;
charset utf-8;
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
limit_except GET POST {
deny all;
}
}
}
Строка proxy_pass http://127.0.0.1:81; говорит о том что наш httpd слушает 81 порт. Создаем файл vim /var/www/site.local.com/index.php
, для проверки пишем там такой код для вывода информации о php.
<?php
echo phpinfo();
Теперь следует добавить сервис httpd в автозагрузку и запустить, а также перезапустить Nginx
systemctl enable httpd && systemctl start httpd && systemctl restart nginx
Обновляем страницу, должны увидеть информацию о php, если такой нет значит надо внимательно перепроверить все конфигурационные файлы.
MariaDB
Практически не один веб проект не обходится без базы данных. Базы могут быть разными и даже несколько на одном сервере. В данном примере я использую mysql из сборки mariadb.
Выполняем systemctl start mariadb && systemctl enable mariadb
для запуска базы данных. mariadb запустили, сейчас нужно зайти в консоль для добавления базы и таблиц. Вводим в консоли mysql -u root -p
при запросе пароля вводим enter. Создаем базу, пользователя и даем права пользователя на базу:
create database site_db;
FLUSH PRIVILEGES;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'qwerty';
GRANT ALL ON site_db.* TO 'site_user'@'localhost';
use site_db;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO users (name, password, email) VALUES ('admin', 'qwerty', 'admin@admin.com');
Создаем тестовую базу и первую запись. Выходим из консоли \q. Открываем файл index.php который мы создали ранее и вписываем следующий код.
<?php
$db = new PDO('mysql:host=localhost;dbname=site_db', 'site_user', 'qwerty');
$users = $db->query('SELECT * from users')->fetch();
echo "<pre>";
print_r($users);
На экране появится данные о нашем тестовом пользователи.
Вот собственно и все, web-сервер готов, нет ни чего тяжелого в его создании. Это лишь базовые настройки сервера, которые помогут быстрой поднять свой дев. Про основные команды на сервере я писал ранее в статье. В дальнейшем я хочу написать скрипт который будет автоматически создавать настройки для httpd и nginx.