Мир Профтеха 2019

На ежегодном фестивале «Мир профтеха» студенческий клуб «Эврика» вел «стрим» на youtube, организовал фотопечать с использованием разработанного приложения на Unity, способное распознавать лица и накладывать «маски» профессий, а также раздавал буклеты с QR-кодами нашего android-приложения дополненной реальности.

Большое спасибо Фомину Андрею и Лоншакову Владимиру. Готовлю благодарственные письма с уникальными номерами, которые мы занесём в нашу базу учета грамот и благодарностей (gramota.makson.ru)

Фотографии с мероприятия по традиции находятся в нашем виртуальном музее: http://gapk.ru/mir-profteha-2019/

Видеонарезки здесь: http://gapk.ru/videonarezki-mir-profteha-2019/

Измеряем реальную ёмкость поддельной китайской флешки.

Как-то физически сломалась у меня флешка на 64 гигабайта, заказанная на Aliexpress. Ну что ж, случается. Закажем другую. Тем более, что и по привлекательной цене нашёл со скидкой (288 рублей за 64 Gb), и компактная такая, и даже usb 3.0. Ладно, заказываю, через три недели приходит.

Всё работает, определяется, начинаю скидывать информацию, доходит до определённого момента — стоп. Дальше не копирует. Странно. Отформатировал — нет эффекта. Попробовал программу для низкоуровневого «форматирования» — HDD Low Level Format Tool. Не помогло.

Ладно, скачиваю программу H2testw 1.4 (https://www.usbdev.ru/files/h2testw/) для того, чтобы узнать реальный размер флешки (очень рекомендую эту программу), и что же я вижу? Всего 16 гигабайт, вместо 64! Ну и по скорости передачи USB 3.0, естественно, никаким и не пахнет.

Открыл спор на Aliexpress, приложил скриншоты. В местном магазине coxo.ru flash-накопитель A-DATA UD230 стоит 219 рублей. При этом не надо ждать три недели и тратить своё время на выяснение ёмкости. Привоз вторник и пятница. Есть над чем задуматься.

Но что делать с китайской флешечкой? Преобразовать её в 16-гиговую и ждать положительного решения по спору. Для преобразования нам понадобится бесплатная программа MiniTool Partition Wizard (https://www.partitionwizard.com/free-partition-manager.html).

Запускаем её и выбираем Disk & Partition manager. 

В открывшемся окне нажимаем правой кнопкой мышки на наименовании флешки и выбираем Delete, тем самым удалив раздел.

Далее снова нажимаем правой кнопкой по флэхе и выбираем Create New Partition. Указываем размер, который выяснили при тестах программой H2testw. На всякий случай я указал чуть меньше, чем есть.

Единственное что, наверное лучше выбрать fat32 вместо ntfs в качестве файловой системы. NTFS — журналируемая и больше изнашивает флэшку, хотя в ней нет ограничения на 4 гигабайта файла, как в Fat32. Можно выбрать нежурналируемый extfat, в котором нет ограничения на 4 гб, но не все устройства его понимают.

Далее нажимаем кнопку Apply, ждём. Всё, готово. У нас теперь есть флэшка чуть меньше, чем на 16 гигабайт. Проверяем её снова программой H2testw — на этот раз никакие ошибки не обнаружены, ура.

Я попытался вынуть микросхему (уверен там как раз таки есть пометка о 16 гигабайтах ёмкости, но она сидит настолько плотно, что даже пинцетом не удалось. В общем опасайтесь подделок и мошенников. В заключении ссылка на продавца, где ни в коем случае ничего нельзя покупать. Мошенники. https://ru.aliexpress.com/item/33007154231.html?spm=a2g0s.9042311.0.0.3bef33edzUzbi9 

Unity Vuforia и кнопочка «выход»

Случилось сегодня приложение для дополненной реальности тестировать на смартфоне, семейства Samsung, у которого сенсорные кнопки для закрытия приложения, отображения списка открытых приложений отсутствовали как класс. Может быть каким-то хитрым жестом руки это всё и работает, но я так сходу не разобрался.

А стало быть срочно следует добавить в приложение кнопочку «Выход». И сделать это очень просто — создаём C# «Exit» скрипт со следующим кодом:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Exit : MonoBehaviour
 {
void OnGUI()
          {
if (GUI.Button(new Rect(10, 70, 50, 30), «Выход»)) {
Debug.Log(«Clicked the exit button»);
Application.Quit();
          }
     }

 }

Теперь перетащим его на ARCamera в Unity и перекомпилируем приложение. Готова кнопочка, даже работает. 🙂

 

Размещаем сайт на VPS с нуля. Часть 7. Получаем SSL: не очевидная проблема.

В настоящее время сайты массово переходят на протокол https. HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

Если сайт не использует HTTPS, то современный браузер выдаёт сообщение «подключение к сайту не защищено». Кроме то в кабинете вебмастера нам будут настойчиво использовать шифрование. Для использования HTTP нам понадобится SSL-сертификат. Сертификат можно купить (оплата ежегодная) или взять свободно предоставляемый от компании https://letsencrypt.org/.

Мы воспользуемся вторым вариантом. Нам понадобится certbot. В Debian 9 он уже должен быть в репозиториях, а значит соединяемся с нашим сервером по putty и вводим команду:

apt-get install certbot

После установки бота получим сертификат на домен virtuatouch.ru командой (соответственно домен virtuatouch.ru меняется на ваш)

certbot certonly —webroot -w /var/www/virtuatouch.ru -d virtuatouch.ru -d virtuatouch.ru

у нас запросят e-mail и… всё это может закончиться былинным отказом. А дело в правилах ЧПУ, которые мы прописывали в 6-й часте.

У меня бот заработал только после того, как открыл lighttpd.conf — nano /etc/lighttpd/lighttpd.conf и убрал правила, удалил этот блок:

$HTTP[“host”] =~ “virtuatouch.ru” {
url.rewrite-final = (
# Exclude directories
“^/(wp-admin|wp-includes|wp-content)/(.*)” => “$0”,
# Exclude root php files
“^/(.*.php)” => “$0”,
# Handle permalinks and feeds
“^/(.*)$” => “/index.php/$1”
)
}

Перезапустил lightttpd командой systemctl restart lighttpd после чего снова запустил

apt-get install certbot

Всё прошло хорошо и в папке /etc/letsencrypt/live/virtuatouch.ru появились файлы сертификатов. Однако к этому каталогу мы должны предоставить доступ для lightttpd. Пропишем следующие команды:

chown :www-data /etc/letsencrypt
chown :www-data /etc/letsencrypt/live
chmod g+x /etc/letsencrypt
chmod g+x /etc/letsencrypt/live

ighttpd требует, чтобы сертификат и закрытый ключ были в одном файле. Стало быть их нужно объединить командой:

cat /etc/letsencrypt/live/virtuatouch.ru/privkey.pem /etc/letsencrypt/live/virtuatouch.ru/cert.pem > /etc/letsencrypt/live/virtuatouch.ru/merged.pem

Файлы privkey.pem и cert.pem будут объединены и сохранены как merged.pem.

Возвращаемся к редактированию конфигурационного файла lighttpd.conf

nano /etc/lighttpd/lighttpd.conf

прописываем

$SERVER[«socket»] == «:443» {
ssl.engine = «enable»
ssl.ca-file = «/etc/letsencrypt/live/virtuatouch.ru/chain.pem»
ssl.pemfile = «/etc/letsencrypt/live/virtuatouch.ru/merged.pem»

$HTTP[«host»] == «virtuatouch.ru» {
ssl.ca-file = «/etc/letsencrypt/live/virtuatouch.ru/chain.pem»
ssl.pemfile = «/etc/letsencrypt/live/virtuatouch.ru/merged.pem»
}

}

Опционально можно задать принудительное использование HTTPS.

$HTTP[«scheme»] == «http» {
$HTTP[«host»] =~ «.*» {
url.redirect = («.*» => «https://%0$0»)
}
}

Можно также вернуть наши правила для ЧПУ ссылок для WordPress. !Да решение ну очень «не промышленное», но иного я пока что не нашёл. Как найду — обязательно напишу, или напишите Вы в комментариях!. 

Сохраняем файл и перезапускаем lightttpd.

systemctl restart lighttpd

Сертификат выдаётся на 90 дней! После чего, где-то за неделю, нужно обновление. Это осуществляется командой:

certbot renew

После чего вновь используем команду:

cat /etc/letsencrypt/live/virtuatouch.ru/privkey.pem /etc/letsencrypt/live/virtuatouch.ru/cert.pem > /etc/letsencrypt/live/virtuatouch.ru/merged.pem

По большому счету надо бы обновления сертификатов автоматизировать, используя crontab. Но из-за конфликта с правила для ЧПУ-ссылок WordPress пока оставляю так.

 

C#-скрипт для дополненной реальности. Автофокусировка камеры.

Если Вы работаете с плагином Vuforia для дополненной реальности в Unity, то этот скрипт может оказаться весьма полезен. Он отвечает за автофокусировку камеры. Выбираем ARCamera — AddComponent — New script, добавляем под именем, например, CameraFocusController и вводим этот код:

 

using UnityEngine;
using System.Collections;
using Vuforia;

public class CameraFocusController : MonoBehaviour
{

// code from Vuforia Developer Library
// https://library.vuforia.com/articles/Solution/Camera-Focus-Modes
void Start()
{
var vuforia = VuforiaARController.Instance;
vuforia.RegisterVuforiaStartedCallback(OnVuforiaStarted);
vuforia.RegisterOnPauseCallback(OnPaused);
}

private void OnVuforiaStarted()
{
CameraDevice.Instance.SetFocusMode(
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}

private void OnPaused(bool paused)
{
if (!paused) // resumed
{
// Set again autofocus mode when app is resumed
CameraDevice.Instance.SetFocusMode(
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
}
}

Компилируем, пробуем под ОС Андроид. Всё должно получиться. 🙂

Размещаем сайт на VPS с нуля. Часть 6. Установка WordPress.

Ну что ж, теперь у нас есть web-сервер lighttpd, интерпретатор php, сервер-баз данных maridb, ftp, припаркованное доменное имя. Всё готов для установки WordPress!

Заходим на ru.wordpress.org и скачиваем архив с вышеуказанной cms. Распакуем скачанный архив и перейдём внутрь распакованной папки. Перейдём в папку WordPress. Собственно всё вот эти файлы сейчас уже можно «залить» по ftp, но мы сделаем немного не так. Выделим их и снова сожмём в архив tar. Для этого я воспользуюсь программой 7-zip.

Далее через FileZilla отправляем архив tar по ftp в папку virtuatouch.ru. Открываем putty, подключаемся к нашему серверу. Переходим в директорию virtuatouch.ru

cd /var/www/virtuatouch.ru

Далее распаковываем tar-архив:

tar -xvf wordpress.tar

Заходим по адресу virtuatouch.ru и видим стандартную установку WordPress. Сервер базы данных оставляем как localhost. Имя пользователя — phpmyadmin. Пароль пользователя — тот, который мы указывали в этой заметке: https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-4-ustanavlivaem-mysql-mariadb-i-phphmyadmin/

А вот имя базы… Базу придётся создать, можно через phpmyadmin. Опять же мы это делали здесь: https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-4-ustanavlivaem-mysql-mariadb-i-phphmyadmin/

 

После соединения с базой данных wordpress попросит указать логин и пароль администратора сайта. Вводим данные ии.. установка закончена? Ну почти..

Ссылки на новости/статьи по умолчанию вордпресс формирует как http://имясайта/?p=1, а если мы хотим, чтобы в ссылки было название статьи, типа https://makson.ru/razmeshhaem-sajt-na-vps-s-nulya-chast-5-parkovka-domennogo-imeni/ — это уже называется Человеко-Понятные УРЛ (ЧПУ). Отвечают за это правила, прописанные в файле .htaccess системы WordPress. Вот толкьо правила эти воспринимаются веб-сервером apache, а у нас lighttpd.

Но нас это не остановит. Заходим через putty в наш веб-сервер и прописываем:

nano /etc/lighttpd/lighttpd.conf

Находим

server.modules = (
«mod_access»,
«mod_alias»,
«mod_compress»,
«mod_redirect»,
«mod_rewrite»,
)

Добавляем внутри фигурных скобок строку «mod_rewrite», чтобы получилось так:

server.modules = (
«mod_access»,
«mod_alias»,
«mod_compress»,
«mod_redirect»,
«mod_rewrite»,
)

далее в конце файла прописываем такие правила:

#Permalink settings

$HTTP[«host»] =~ «virtuatouch.ru» {
url.rewrite-final = (
# Exclude directories
«^/(wp-admin|wp-includes|wp-content)/(.*)» => «$0»,
# Exclude root php files
«^/(.*.php)» => «$0»,
# Handle permalinks and feeds
«^/(.*)$» => «/index.php/$1»
)
}

Сохраняем файл и перезапускаем lighttpd.

systemctl restart lighttpd

 

Теперь в WordPress можем перейти в Настройки — Постоянные ссылки. В группе Общие настройки выбираем Произвольно. В строке ввода вводим /%postname%/ Всё должно заработать.

Ну и что на этом всё? Сайты открываются, php работает, MySQL есть, phpmyadmin тоже.. Ан нет. Во-первых у нас еще нет SSL-сертфиикатов для протокола HTTPS, а они нужны. И нет автоматического резервного копирования. А оно тоже очень требуется.

Так что ещё будут как минимум две статьи.

Размещаем сайт на VPS с нуля. Часть 5. Парковка доменного имени.

То, что наши php-файлы открываются по Ip-адресу сервера — это, конечно, хорошо. Но ещё лучше, если наши странички будут открывать по доменам.

При покупки доменного имени следует обращать внимание не только на непосредственно его стоимость регистрации, но и на стоимость продления. Многие компании (например 2domains, nethouse и др.) условно регистрирует имя в зоне ru за 100 р, а продлевают за 500.

Благо сейчас довольно безболезненно можно перенести домен от одного регистратора к другому (я так и сделал, перейдя от 2domains.ru к atname.ru).

По наиболее приемлемым ценам доменные имена продлевает уже упомянутый выше atname.ru и вполне адекватные цены у eternalhost.net

Домен можно вообще бесплатно зарегистрировать в зоне tk, через сайт freenom.com О том, как это сделать можно посмотреть, к примеру, у меня на Youtube: https://youtu.be/e7vhV6oHdWM

Но как «прикрепить» его к нашему VPS? Для начала создадим директорию отдельного сайта. В качестве примеру я буду использовать имя virtuatouch.ru

Соединяемся с нашим vps через putty и открываем для редактирования файл  lighttpd.conf

nano /etc/lighttpd/lighttpd.conf

в самом конце файла прописываем:

$HTTP[«host»] == «virtuatouch.ru» {
server.document-root = «/var/www/virtuatouch.ru»
}

Теперь создадим директорию:

mkdir /var/www/virtuatouch.ru

Перезапустим lighttpd

systemctl restart lighttpd

На всякий случай

chown www-data:web /var/www/ -R

Далее нам нужно сделать так, чтобы при наборе virtuatouch.ru пользователю предоставлялся ip-адрес нашего сервера. Я предлагаю использовать DNS Yandex.

DNS (англ. Domain Name System «система доменных имён») — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства).

Нам понадобится почта от yandex.ru. Авторизовываемся в почте и переходим по ссылке https://connect.yandex.ru

Во вкладке Вебмастер выбираем «Добавить домен» Далее я ввожу virtuatouch.ru

После чего вхожу в личный кабинет того регистратора, через которого была произведена регистрация. В моём случае это atname.ru. В личном кабинете выбираю перейти к управлению — virtuatouch.ru — управление ДНС-серверами/делегирование. В графе ДНС1 ввожу: ns1.reg.ru ДНС2: ns2.reg.ru

Теперь, когда мы нажмём на наименование домена в личном кабинете регистратора, в почявившемся окне станет доступен пункт Управление зоной ДНС. Нажмём по нему.

Yandex-connect Требует подтверждения прав на домен, возвращаемся в https://connect.yandex.ru нашего добавленного домена и выбираем способ подтверждения DNS. Добавьте в DNS-записи сайта virtuatouch.ru TXT-запись yandex-verification: тут код

Воспользуемся этим. Для этого в Управление зоной ДНС регистратора пропишем примерно так:

Теперь в connect.yandex.ru нажимаем «проверить». Однако для обновления ns-записей домена должно пройти определённое время. Следует набраться терпения.

После подтверждения в дальнейшем мы изменим dns от reg на dns yandex и настроим домен на ip-адрес нашего vpn.

После подтверждения делегируем домен на серверы Яндекса. Для этого в кабинете регистратора (в моём случае atname.ru) следует выбрать «мои домены» — virtuatouch.ru — управление ДНС-серверами/делегирование. В графе ДНС1 ввожу: dns1.yandex.net в графе ДНС2: dns2.yandex.net

В Яндекс.Коннект перейдём в раздел управление DNS нашего домена. Выберем «Добавить DNS-запись». Введём следующие значения:

Добавим также запись CNAME, чтобы наш домен открывался и с www.

Странно, но корректно виртуальные хосты у меня заработали только после перезагрузки, командой reboot.

 

Размещаем сайт на VPS с нуля. Часть 4. Устанавливаем MySQL (MariaDB) и Phphmyadmin.

Без базы данных никуда. Можно, конечно, информацию и в файлах хранить, но мы воспользуемся системой MySQL. Точнее её «форком» MariaDB. Прописываем:

apt-get -y install mariadb-server

Далее запускаем MySQL-сервер командой:

systemctl start mariadb

Вводим следующую команду, чтобы MySQL автоматически запускалась при каждой перезагрузке:

systemctl enable mariadb

Дополнительно настроим параметры безопасности, введя команду:

mysql_secure_installation

На вопрос системы Enter current password for root (enter for none):  просто нажмём Enter.

Далее на все вопросы отвечаем Y.

Также нам нужно будет установить root-пароль суперпользователя MariaDB. Это не тот root, под которым мы входим в систему!


Консоль — это хорошо, а визуальные окошки лучше. Поэтому далее мы поставим крайне полезную штуку — phpmyadmin. Вводим команду:

apt-get install phpmyadmin

В следующем окне стрелками передвигаем указатель на пункт lighttpd и нажимаем пробел (ставим точку напротив соответствующего пункта:

В следующем окне выбираем Yes.

Далее у нас спросят пароль. Введём и запомни его. Это пароль пользователя phpmyadmin. В процессе инсталляции система может выдать некую ошибку. Игнорируем её.

Теперь переместим пакет phpmyadmin из  /usr/share/phpmyadmin в /var/www командой

mv /usr/share/phpmyadmin /var/www/html

Отредактируем lighttpd.conf

nano /etc/phpmyadmin/lighttpd.conf

заменим соответствующий путь к phpmyadmin

# Alias for phpMyAdmin directory

alias.url += (

«/phpmyadmin» => «/var/www/html/phpmyadmin»,

)

Сохраним изменения и перезапустим lighttpd.

systemctl restart lighttpd

 

Теперь в браузере можем открыть: ип-адрес нашего сервера/phpmyadmin/

В открывшемся окне введём имя пользователя: phpmyadmin

Пароль: тот, что мы указывали ранее. Всё должно открыться. НО! Если мы перейдём в пункт «Базы данных» система нам выдаст, что для создания новой базы у нас нет привилегий. Не порядок. Возвращаемся в консоль и вводим команду:

mysql

Появится сообщение вида

MariaDB [(none)]>

Вводим:

GRANT ALL PRIVILEGES ON *.* TO ‘phpmyadmin’@’localhost’ WITH GRANT OPTION;

Нажимаем Enter. Далее вводим:

FLUSH PRIVILEGES;

Нажимаем Enter, далее вводим exit и снова Enter.

Снова входим в phpmyadmin через браузер.

Вводим phpmyadmin в поле пользователь и соответствующий пароль. Входим в пункт «базы данных». Теперь мы можем создать базу. Назовём её, к примеру, test. В поле «сравнение» выберем utf8_general_ci.

Теперь создадим файл db.php со следующим содержанием:

<?php
$host = ‘localhost’; // адрес сервера
$database = ‘test’; // имя базы данных
$user = ‘phpmyadmin’; // имя пользователя
$password = ‘пароль пользователя’; // пароль

// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database)
or die(«Ошибка » . mysqli_error($link));

if (mysqli_connect($host, $user, $password, $database)) {
echo «Всё хорошо»;
}
// закрываем подключение
mysqli_close($link);
?>

Отправим его по ftp на наш хостинг и перейдём в браузере по адресу: ип-адрес сервера/db.php

Если мы всё сделали верно, то получим сообщение «Всё хорошо«.

Отлично! В следующий раз мы начнём парковать доменные имена к нашему серверу.

Размещаем сайт на VPS с нуля. Часть 3. Устанавливаем интерпретатор PHP.

Продолжаем разговор. Web-сервер есть, ftp есть, пришло время установиться интерпретатор PHP, как fast cgi.

Подключаемся через putty к нашему серверу и вводим команду

apt-get -y install php-fpm php-mysql 

ждём. Далее нам нужно отредактировать файл php.ini, вводим:

nano /etc/php/7.0/fpm/php.ini

раскомментируем (уберем точку с запятой) строку cgi.fix_pathinfo=1

Для поиска можно нажать комбинацию CTRL+W. А вообще по редактору Нано есть отличная заметка здесь: https://habr.com/ru/post/106554/

Далее отредактируем файл www.conf, введя команду:

nano /etc/php/7.0/fpm/pool.d/www.conf

В нашем случае мы будем использовать не Unix Socket, а TCP Socket.

Находим строку listen = /run/php/php7.0-fpm.sock

и меняем её на listen = 127.0.0.1:9000

Перезапускаем сервис PHP-FPM

systemctl restart php7.0-fpm

Отредактируем файл 15-fastcg-php.conf нашего веб-сервера

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf

Находим строки

«bin-path» => «/usr/bin/php-cgi»,
«socket» => «/var/run/lighttpd/php.socket»,

и меняем их на

«host» => «127.0.0.1»,
«port» => «9000»,

Сохраняем файл (CTRL+X, потом соглашаемся со внесёнными изменениями, нажав клавишу Y) Активируем модули FastCGI and FastCGI-PHP командами в консоле:

lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php

Перезапускаем web-сервер.

systemctl restart lighttpd

 

Создаём php-файл.

nano /var/www/html/info.php

В открывшемся окне редактора nano вводим:

<?php

phpinfo();

?>

Сохраняем (Ctrl+X, Y). Открываем в браузере ip-адрес нашего сервера/info.php — если всё нормально, появятся сведения о PHP.

Очень хорошо, но давайте теперь подправим нашу загрузку по ftp. Как я и говорил, предыдущие настройки, когда пользователь имеет доступ ко всем файлам системы, очень не безопасен. Кроме того lighttpd запущен под пользователем www-data, который входит в группу www-data. Php-файлы должны исполнятся именно под www-data.

Создадим пользователя web.

adduser web

зададим ему пароль и на все остальные вопросы системы можно просто нажать enter.

Внесём web в группу www-data и дадим права на запись в каталог /var/www/

chown www-data:web /var/www/ -R

Изменим конфигурационный файл vsftpd.conf таким образом, чтобы в нём остались следующие параметры:

nano /etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
ftp_username=www-data
chmod_enable=YES
chown_uploads=YES
chown_username=www-data
guest_username=www-data
force_dot_files=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=1024
pasv_max_port=65535
max_clients=10
max_per_ip=10
port_promiscuous=YES
port_enable=YES
listen_port=21
ftp_data_port=20
user_sub_token=$USER
hide_ids=YES
user_config_dir=/etc/vsftpd
chroot_local_user=YES
allow_writeable_chroot=YES

Сохраним изменения (Ctrl+X, Y) и создадим директорию

mkdir /etc/vsftpd

перейдём в неё:

cd /etc/vsftpd

Создадим и откроем в nano файл с именем нашего нового пользователя (web)

nano web

Внесём следующую запись в редакторе nano

local_root=/var/www/

Сохраняем файл.

service vsftpd restart

Запускаем FileZilla и соединяемся с нашим сервером уже под пользователем web и указанным при создании пользователя паролям. Можно создать файл, например, test.php со следующим содержанием:

<?php

echo «Я файл, отправленный по ftp!»;

?>

Отправим его через filezilla на наш VPS и перейдём в браузере по ip-адрес-сервера/test.php

Должна появится соответствующая надпись.

В следующий раз мы будем устанавливать MariaDB и phpmyadmin.