3 - Настройка приложения и веб сервера
Создать папку /var/www/<имя сайта>
.....................................................................
Скопировать туда архив с сайтом из https://nbics.net/SiteResurses/BaseProject/school-sample.nbics.net.zip и разархивировать, далее - настройка.
.....................................................................
Доустанавлеваем необходимые экзотические библиотеки (пока одну нашел):
sudo apt-get install libgdiplus
и в папку с сайтом, или папку usr/lib/ кладем файл "SkiaSharp.dll" (лежит https://nbics.net/SiteResurses/BaseProject/SkiaSharp.dll) и дать на него права:
Перейти в cd /usr/lib/
sudo chmod +x SkiaSharp.dll
Выйти в домашнюю папку (cd)
....................................................................
Права для nginx на папку и файлы приложения:
sudo chown -R www-data:www-data /var/www/
sudo chmod -R 755 /var/www/
...................................................................
Создать сервис Kestrel (файл) для автозапуска сайта (touch <filename>) https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-6.0:
/etc/systemd/system/kestrel-<имя сайта>-service.service
с таким содержимым:
[Unit]
Description=vsm veb core <имя сайта> application (ну, или все равно что, лишь бы потом в логе об ошибках его найти)
[Service]
WorkingDirectory=/var/www/<имя сайта>
ExecStart=/usr/bin/dotnet /var/www/<имя сайта>/VSM.Web.Core.dll #(мало вероятно, что у нас другой пускач будет, но для других веб приложений - запускающая приложение dll)
Restart=always
RestartSec=10
SyslogIdentifier=<имя сайта>
User=www-data # лучше не менять!
Environment=ASPNETCORE_ENVIRONMENT=Production #Development - и вместо "response 500" будет "stack trace..."
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false # дабы не слал в Microsoft телеметрию
[Install]
WantedBy=multi-user.target
..................................................................
Запуск сервиса:
systemctl enable kestrel-<имя сайта>-service.service (sudo systemctl enable kestrel-school-sample.nbics.net-service.service)
systemctl start kestrel-<имя сайта>-service.service (sudo systemctl start kestrel-school-sample.nbics.net-service.service)
..................................................................
Проверить статус сервиса:
systemctl status kestrel-<имя сайта>-service.service (systemctl status kestrel-school-sample.nbics.net-service.service)
..................................................................
Настройка nginx (http) (если домен один, настраиваем в файле: /etc/nginx/sites-available/default, если несколько, создать файлы конфигурации для каждого доменного имени)
Если доменов несколько, можно сделать сертификат сразу на 2 имени, или настраивать 2 разных файла:
удалить (закомментировать) default из /etc/nginx/sites-available и /etc/nginx/sites-enabled
Настроить NGINX config (/etc/nginx/sites-available/<server1.Name>.conf):
Создать файл конфигурации (touch <filename>) следующего содержания:
server {
listen 80;
server_name <server1.Name> www.<server1.Name>;
root /var/www/<server1.Name>;
keepalive_timeout 60;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 100s;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
=------------------------------=
server {
listen 80;
server_name school-sample.nbics.net;
root /home/ok/school-sample.nbics.net;
keepalive_timeout 60;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 100s;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
server {
listen 80;
server_name school-sample-d.nbics.net;
root /home/ok/school-sample-d.nbics.net;
keepalive_timeout 60;
location / {
proxy_pass http://localhost:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 100s;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
...................................................................
Настроить NGINX config (/etc/nginx/sites-available/<server2.Name>.conf) для каждого сайта:
server {
listen 80;
server_name <server2.Name> www.<server2.Name>;
root /var/www/<server2.Name>;
keepalive_timeout 60;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache off;
proxy_buffering off;
proxy_read_timeout 100s;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
..................................................................
Cоздать линки для каждого сайта (можно файлы копировать, но так надежнее, при изменении исходник, меняется ссылка):
ln -s /etc/nginx/sites-available/<server2.Name> /etc/nginx/sites-enabled/<server2.Name>
ln -s /etc/nginx/sites-available/<server1.Name> /etc/nginx/sites-enabled/<server1.Name>
..................................................................
Проверка работоспособности:
sudo nginx -t # (смотрим ошибки, если надо, исправляем) - НЕ ЗАБЫВАТЬ ПРО sudo
---------------------------------------------------------
!!! Можно вернуть localhost в исходное состояние, для этого нужно восстановить оригинальный файл default для Nginx, и перезапустить службу nginx.
Не используйте комментарии в конце строки после параметров systemd, иначе модуль не сможет активироваться.