Skip to main content

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, иначе модуль не сможет активироваться.