Установка и настройка web-сервера

В жизни каждого web-разработчика настает такой момент когда нужно поднять свой web-сервер. Сегодня я и напишу про это. На самом деле в этом ни чего тяжелого нет. Все можно установить буквально одной командой.

VirtualBox

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

VirtualBox ports
VirtualBox ports

Тут я устанавливаю порты для 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, вы увидите что то подобное.

nix
Nginx start

Далее выполняем 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.

Post Created 8

Related Posts

Begin typing your search above and press enter to search. Press ESC to cancel.

Back To Top