Используемые термины: Linux , Ubuntu , NGINX , Apache , MySQL , MariaDB , PHP-FPM , FTP , phpMyAdmin , Memcached , Postfix .
Данная инструкция позволит настроить веб-сервер для решения большей части задач по размещению сайтов, порталов или веб-приложений. Она подходит для серверов на Ubuntu и других систем на основе deb-пакетов. Для RPM Linux читайте похожую инструкцию по настройке полноценного веб-сервера на CentOS .
Данные команды протестированы на Ubuntu версий 18, 20 и 22.
Содержание:
Общая настройка системы
Установка NGINX
Установка PHP и PHP-FPM
Установка MariaDB или MySQL
Установка phpMyAdmin
Установка Memcached
Установка и настройка FTP-сервера
Apache
Postfix
Тюнинг веб-сервера
Создание первого сайта
1. Обновляем Ubuntu:
apt update && apt upgrade
2. Настраиваем время:
apt install chrony
timedatectl set-timezone Europe/Moscow
systemctl enable chrony
* первая команда для установки пакета синхронизации времени; вторая задает часовой пояс по московскому времени; третья разрашит автозапуск chrony .
3. По умолчанию, в Ubuntu брандмауэр работает в режиме «разрешить все». Но если мы настроили защиту по максимуму, то для веб-сервера открываем следующие порты:
iptables -I INPUT 1 -p tcp —match multiport —dports 80,443,8080 -j ACCEPT
iptables -I INPUT 1 -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT
* 80, 443 и 8080 порты для веб-сервера ; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); Подробнее про настройку iptables .
Для сохранения правил ставим пакет iptables-persistent:
apt install iptables-persistent
Для сохранения правил вводим команду:
netfilter-persistent save
Устанавливаем NGINX:
apt install nginx
Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://<IP-адрес сервера> . В итоге мы должны увидеть заголовок «Welcome to nginx!»:
Если стартовая страница не загружается, проверяем состояние сервиса:
systemctl status nginx
Устанавливаем PHP и PHP-FPM:
apt install php php-fpm
* в каждой версии Ubuntu устанавливается своя нативная версия php. Но если нам нужно установить несколько версий PHP или конкретную версию, то использум инструкцию Установка разных версий PHP на Linux Ubuntu .
Далее, в зависимости от установленной версии PHP команды и действия будут различаться. Смотрим версию php:
php -v
Создадим переменную с версией PHP:
PHP_VER=7.4
* в моем случае будет версия 7.4.
Разрешаем автозапуск php-fpm и запускаем его:
systemctl enable php${PHP_VER}-fpm
* обратите внимание, что мы запустили php-fpm версии 7.4 (через переменную). Но установлена может быть и другая версия — ее можно узнать по версии php командой php -v .
Открываем файл для настройки виртуального домена по умолчанию:
vi /etc/nginx/sites-enabled/default
В секции location или server редактируем параметр index на следующее значение:
…
index index.php index.html index.htm;
…
* в данном случае мы сказали серверу сначала искать индексный файл index.php , затем остальные по списку.
А внутри секции server добавим следующее:
location ~ .php$ {
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
* где /var/www/html — корневой путь хранения скриптов; /run/php/php7.4-fpm.sock — путь до сокетного файла для взаимодействия с php-fpm. Обратите еще раз внимание, что если в нашей системе будет установлена другая версия php, необходимо внести соответствующую корректировку.
Пример файла default:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
index index.php index.html index.htm;
}
location ~ .php$ {
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
Проверяем правильность настроек nginx и перезагружаем его:
nginx -t && nginx -s reload
Открываем конфигурационный файл PHP-FPM:
vi /etc/php/${PHP_VER}/fpm/pool.d/www.conf
Проверяем, что путь до сокетного файла такой же, как мы задали в настройках NGINX:
listen = /run/php/php7.4-fpm.sock
В противном случае меняем его и перезапускаем сервис:
systemctl restart php${PHP_VER}-fpm
Теперь заходим в каталог хранения настроенного сайта:
cd /var/www/html
Создаем index.php со следующим содержимым:
vi index.php
<?php phpinfo(); ?>
Открываем браузере и переходим по адресу http://<IP-адрес сервера> . Мы должны увидеть сводную информацию по PHP и его настройкам:
* в данном примере используется php версии 7.4.
В данной статье мы установим MariaDB. Установка выполняется следующей командой:
apt install mariadb-server
Входим в SQL-оболочку:
mysql
Задаем пароль для пользователя root@localhost:
> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);
> flush privileges;
* где New_Password — пароль, который мы хотим установить для учетной записи root.
Выходим из sql-консоли:
> quit
Для возможности подключаться к базе данных скриптами PHP, необходимо установить следующие модули:
apt install php-mysql php-mysqli
После перезагружаем php-fpm:
systemctl restart php${PHP_VER}-fpm
И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:
* несмотря на то, что мы установили mariadb, в заголовке мы видим mysql. Так и должно быть.
Для установки phpMyAdmin вводим следующую команду:
apt install phpmyadmin
* в процессе установки система может потребовать ввод пароля для пользователя phpmyadmin . Его нужно ввести дважды.
Теперь создадим конфигурационный файл. Содержимое будет отличаться в зависимости от того, как мы будем настраивать наш сервер.
а) Виртуальный домен в NGINX:
vi /etc/nginx/sites-enabled/phpmyadmin.conf
server {
listen 80;
server_name phpmyadmin.remontka.local;
set $root_path /usr/share/phpmyadmin;
root $root_path;
location / {
index index.php;
}
location ~ .php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
* где phpmyadmin.remontka.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому есть нет возможность зарегистрировать домен и имя узла в DNS , можно воспользоваться локальным файлом hosts. /usr/share/phpmyadmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.
б) Используем location /phpmyadmin:
vi /etc/nginx/sites-enabled/default
Добавляем location (выделено желтым):
server {
listen 80 default_server;
…
location /phpmyadmin {
root /usr/share/;
index index.php;
location ~ ^/phpmyadmin/(.+.php)$ {
root /usr/share/;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
}
После перезапускаем NGINX:
systemctl reload nginx
Открываем браузер. В зависимости от выбранного способа настройки, ссылка на phpmyadmin будет разной:
Откроется форма для авторизации — вводим логин phpmyadmin и пароль, который мы указали при установке phpmyadmin.
Если система вернула ошибку входа из-за неправильного пароля, необходимо задать пароль для учетной записи root@localhost (рассказывается выше в разделе установки MariaDB).
Для начала, выполняем установку пакетов:
apt install memcached php-memcached
После разрешаем автозапуск и запускаем сервис кэширования:
systemctl enable memcached
Перезапускаем php-fpm:
systemctl restart php${PHP_VER}-fpm
Для проверки, что модуль memcached появился в PHP, открываем наш сайт в браузере — в phpinfo должна появиться новая секция:
Мы настроим ProFTPd, так как он позволит использовать виртуальных пользователей с uid пользователя www-data.
Для его установки вводим следующую команду:
apt install proftpd
Смотрим uid пользователя www-data:
id www-data
* в Ubuntu это, как правило, 33 .
Создаем виртуального пользователя:
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpwww —uid=33 —gid=33 —home=/var/www —shell=/usr/sbin/nologin
* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (www-data); /var/www — домашний каталог пользователя; /usr/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Открываем основной конфигурационный файл:
vi /etc/proftpd/proftpd.conf
Снимаем комментарий или редактируем опцию:
DefaultRoot ~
* данная опция говорит о том, что корневой директорией для пользователя будет домашняя директория. Это нужно, чтобы FTP-пользователи не могли выйти за пределы дозволенного и видеть на сервере сайты друг друга.
Создаем дополнительный конфигурационный файл для proftpd:
vi /etc/proftpd/conf.d/custom.conf
Со следующим содержимым:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
* где 60000 — 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd
systemctl restart proftpd
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
При необходимости, можно настроить шифрование и хранение пользователей в базе данных. Подробнее в инструкции Установка и настройка ProFTPd на Ubuntu Server .
Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.
Устанавливаем apache и модуль для php:
apt install apache2 libapache2-mod-php
Заходим в настройки портов:
vi /etc/apache2/ports.conf
И редактируем следующее:
Listen 8080
#<IfModule ssl_module>
# Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
# Listen 443
#</IfModule>
* мы настроили прослушивание на порту 8080 , так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443 , так как и он будет слушаться NGINX.
Теперь открываем настройку следующего модуля:
vi /etc/apache2/mods-available/dir.conf
И добавляем впереди индексных файлов index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html …
</IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php , затем index.html и так далее.
Открываем основной конфигурационный файл для apache:
vi /etc/apache2/apache2.conf
Рядом с опциями Directory дописываем:
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* где Directory указывает на путь, для которого мы хотим задать настройки; AllowOverride — позволит переопределить все настройки с помощью файла .htaccess; Options задает некоторые настройки: Indexes разрешает списки каталогов, ExecCGI разрешает запуск cgi скриптов, Require all granted — предоставляет всем доступ к сайтам в данном каталоге.
Ниже допишем:
<IfModule setenvif_module>
SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>
* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER[‘HTTPS’] равную on . Данная настройки критична для функционирования некоторых CMS.
Запрещаем mpm_event:
a2dismod mpm_event
* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event . Данный модуль не поддерживает php 7 и выше.
Разрешаем модуль мультипроцессовой обработки mpm_prefork:
a2enmod mpm_prefork
Разрешаем модуль php:
a2enmod php${PHP_VER}
* в данном примере установлен php версии 7.4.
Разрешаем модуль setenvif:
a2enmod setenvif
Разрешаем модуль rewrite:
a2enmod rewrite
В процессе включения модулей, если мы видим «Module … already enabled», значит модуль уже включен.
Разрешаем автозапуск Apache и перезапускаем службу:
systemctl enable apache2
systemctl restart apache2
Открываем браузер и вводим в адресную строку http://<IP-адрес сервера>:8080 . Мы должны увидеть привычную страницу:
* в разделе Server API мы должны увидеть Apache .
Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:
vi /etc/nginx/sites-enabled/default
Находим наш настроенный location для php-fpm:
…
location ~ .php$ {
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
…
и меняем на:
…
location ~ .php$ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
…
Проверяем и перезапускаем nginx:
nginx -t && nginx -s reload
Пробуем открыть в браузере http://<IP-адрес сервера> — должна открыться та же страница, что при проверке Apache (с добавлением 8080):
Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.
Создаем конфигурационный файл со следующим содержимым:
vi /etc/apache2/mods-available/remoteip.conf
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1/8
</IfModule>
Активируем модуль:
a2enmod remoteip
Перезапускаем apache:
systemctl restart apache2
Для проверки настройки открываем браузер и вводим в адресную строку http://<IP-адрес сервера> , где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR .
В качестве агента MTA мы будем использовать удобный в настройке и надежный Postfix.
Устанавливаем пакет postfix:
apt install postfix
Вносим некоторые изменения в настройки:
vi /etc/postfix/main.cf
myorigin = $mydomain
smtp_generic_maps = hash:/etc/postfix/generic_map
* mydomain — домен сервера; myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; smtp_generic_maps указывает на карту с общими правилами пересылки .
Открываем карту пересылки:
vi /etc/postfix/generic_map
И добавляем:
@remontka.local no-reply@remontka.local
* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес no-reply@remontka.local .
Создаем карту:
postmap /etc/postfix/generic_map
Включаем автозапуск почтового сервера и перезапускаем его службу:
systemctl enable postfix
systemctl restart postfix
Для того, чтобы сервер мог отправлять сообщения на внешние ящики, необходимо корректно настроить в DNS , как минимум, записи A и PTR.
Для добавления А-записи, необходимо в настройках панели управления нашим доменом создать запись типа. Ее имя и IP-адрес должны соответствовать имени и адресу нашего сервера.
Для создания PTR-записи необходимо написать письмо Интернет-провайдеру, к которому подключен наш сервер. Если наш сервер арендуется у хостинговой компании, необходимо либо написать данное письмо данной хостинговой компании, либо данная возможность может быть предоставлена в панели управления хостинговыми услугами.
Внесем небольшие изменения в нашу конфигурацию PHP:
Данные изменения вносятся в разные файлы в зависимости от версии PHP и обработчике. Например, для php версии 7.4 и Apache мы открываем на редактирование следующий файл:
vi /etc/php/7.4/apache2/php.ini
И правим следующее:
post_max_size = 1G
…
upload_max_filesize = 512M
…
short_open_tag = On
…
date.timezone = «Europe/Moscow»
…
error_reporting = E_ALL & ~E_NOTICE
Но мы упростим задачу. Для начала, создадим две переменные:
PHP_VER=7.4
INT=apache2
Теперь мы можем упростить настройку для Apache:
sed -e «s/post_max_size = 8M/post_max_size = 1G/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/upload_max_filesize = 2M/upload_max_filesize = 512M/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/short_open_tag = Off/short_open_tag = On/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/;date.timezone =/date.timezone =’Europe/Moscow’/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL & ~E_NOTICE/» -i /etc/php/$PHP_VER/$INT/php.ini
Посмотреть результат можно командой:
cat /etc/php/$PHP_VER/$INT/php.ini | grep -e «^post_max_size|^upload_max_filesize|^short_open_tag|^date.timezone|^error_reporting»
Теперь меняем интерпретатор:
INT=fpm
И повторяем:
sed -e «s/post_max_size = 8M/post_max_size = 1G/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/upload_max_filesize = 2M/upload_max_filesize = 512M/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/short_open_tag = Off/short_open_tag = On/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/;date.timezone =/date.timezone =’Europe/Moscow’/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT/error_reporting = E_ALL & ~E_NOTICE/» -i /etc/php/$PHP_VER/$INT/php.ini
Проверяем:
cat /etc/php/$PHP_VER/$INT/php.ini | grep -e «^post_max_size|^upload_max_filesize|^short_open_tag|^date.timezone|^error_reporting»
Перезапускаем php-fpm и apache:
systemctl restart php${PHP_VER}-fpm
systemctl restart apache2
Открываем на редактирование следующий файл:
vi /etc/nginx/nginx.conf
И внутри секции http добавляем:
client_max_body_size 512M;
После перезапускаем nginx:
systemctl reload nginx
Настало время проверить наш сервер на реальном примере. Задаем переменную, значение которой будет домен сайта:
TMP_SITE=site1.local
* где site1.local заменить на имя домена, для которого создаем первый сайт. Нам будет намного удобнее копировать и вставлять команды с переменной (не придется править после копипасты).
Создаем новый файл виртуального домена NGINX.
а) Для HTTP:
cat <<EOF > /etc/nginx/sites-enabled/$TMP_SITE.conf
server {
listen 80;
server_name $TMP_SITE www.$TMP_SITE;
set $root_path /var/www/$TMP_SITE/www;
access_log /var/www/$TMP_SITE/log/nginx/access_log;
error_log /var/www/$TMP_SITE/log/nginx/error_log;
gzip on;
gzip_disable «msie6»;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
root $root_path;
index index.php index.html index.htm;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {
expires modified +1w;
}
}
EOF
* где /var/www/$TMP_SITE — каталог, в котором будет размещаться сайт.
** все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
б) Для HTTPS:
cat <<EOF > /etc/nginx/sites-enabled/$TMP_SITE.conf
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
if ($scheme = ‘http’) {
return 301 https://$host$request_uri;
}
server_name $TMP_SITE www.$TMP_SITE;
set $root_path /var/www/$TMP_SITE/www;
access_log /var/www/$TMP_SITE/log/nginx/access_log;
error_log /var/www/$TMP_SITE/log/nginx/error_log;
gzip on;
gzip_disable «msie6»;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
root $root_path;
index index.php index.html index.htm;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {
expires modified +1w;
}
}
EOF
* ssl_certificate и ssl_certificate_key — пути к публичному и приватному ключам соответственно.
** для получения бесплатного сертификата читайте статью Получение бесплатного SSL сертификата Let’s Encrypt .
Теперь создаем виртуальный домен в Apache:
cat <<EOF > /etc/apache2/sites-enabled/$TMP_SITE.conf
<VirtualHost *:8080>
Define root_domain ${TMP_SITE}
Define root_path /var/www/${TMP_SITE}
ServerName ${root_domain}
ServerAlias www.${root_domain}
DocumentRoot ${root_path}/www
ErrorLog ${root_path}/log/apache/error_log
TransferLog ${root_path}/log/apache/access_log
php_admin_value upload_tmp_dir ${root_path}/tmp
php_admin_value doc_root ${root_path}
php_admin_value open_basedir ${root_path}:/usr/local/share/smarty:/usr/local/share/pear
php_admin_value session.save_path 0;0660;${root_path}/tmp
</VirtualHost>
EOF
Создаем каталоги для сайта:
mkdir -p /var/www/$TMP_SITE/{www,tmp}
mkdir -p /var/www/$TMP_SITE/log/{nginx,apache}
Создаем индексный файл со следующим содержимым:
vi /var/www/$TMP_SITE/www/index.php
<?php echo «<h1>Hello from site1</h1>»; ?>
Задаем права на папки:
chown -R www-data:www-data /var/www/$TMP_SITE
chmod -R 775 /var/www/$TMP_SITE
Проверяем корректность настроек конфигурационных файлов:
nginx -t
apachectl configtest
Перезапускаем веб-сервер:
systemctl reload nginx
systemctl reload apache2
Открываем сайт в браузере по нашему домену site1.local (он должен быть прописан в DNS или можно его задать в локальном файле hosts того компьютера, с которого мы открываем сайт в браузере). Мы должны увидит фразу «Hello from site1».
Создаем базу данных для сайта командами:
mysql
> CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;
> GRANT ALL PRIVILEGES ON site1.* TO dbuser@localhost;
> quit
* данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password .
Для возможности подключения к сайту по FTP, создаем отдельного пользователя:
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=site1.local —uid=33 —gid=33 —home=/var/www/$TMP_SITE —shell=/usr/sbin/nologin
* тут мы создадим пользователя site1.local , который будет иметь доступ к каталогу /var/www/$TMP_SITE .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…