Update dotnet.md

This commit is contained in:
RadinPirouz
2024-03-29 13:25:38 +03:30
committed by GitHub
parent 1cd75eec7e
commit 7b4eb86a23

View File

@@ -1,150 +1,113 @@
# Deploying .NET on Linux
# <div dir="rtl">آموزشDeploy Dotnet روی لینوکس</div> This tutorial has been tested only on .NET 7 and Ubuntu 22.04.
این آموزش فقط روی دات نت ۷ و اوبونتو ۲۲.۰۴ تست شده است
## <div dir="rtl"> خروجی گرفتن</div> ## Getting the Output
<div dir="rtl"> First, let's install .NET:
نخست دات نت را نصب کنیم ```bash
</div> sudo apt install dotnet-sdk-7.0
```
sudo apt install dotnet-sdk-7.0 *Note: You can create a .NET project using `dotnet new mvc` command.*
<div dir="rtl">
<b>نکته: می توانید با دستور dotnet new mvc پروژه دات نت بسازید </b>
</div>
<br>
<div dir="rtl">
سپس باید از پروژه خود خروجی بگیریم پس دستور زیر را اجرا کنید
</div>
dotnet publish
<div dir="rtl">
مکان خروجی فایل بعد از اتمام دستور به شما نشان داده خواهد شد معمولا خروجی پروژه در مکان زیر قرار خواهد گرفت
</div>
Then, we need to publish our project:
```bash
dotnet publish
```
The location of the output file will be displayed after the command finishes. Typically, the project output will be placed in:
**bin/Debug/net7.0/publish** **bin/Debug/net7.0/publish**
## <div dir="rtl"> نصب Ngnix</div> ## Installing Nginx
<div dir="rtl">
اِنجین‌اِکس (به انگلیسی: nginx) یک کارساز وب با حجم پایین و کارایی بالا است که تحت مجوز بی‌اس‌دی منتشر می‌شود. این کارساز وب در یونیکس، گنو/لینوکس، بی‌اس‌دی، مک او اس و ویندوز اجرا می‌شود. بر طبق گفتهٔ نت‌کرافت، در حال
حاضر ۱۲٫۰۷٪ از دامنه‌های اینترنت از این کارساز استفاده می‌کنند.
</div>
<br/>
<div dir="rtl">
<b>برای نصب Ngnix از طریق apt از دستور زیر استفاده کنید
</b>
</div>
sudo apt install ngnix **Nginx** is a high-performance web server with low resource usage, distributed under the terms of the BSD license. It runs on Unix-like operating systems and is widely used, currently powering 12.07% of the internet's domains.
<div dir="rtl"> To install **Nginx** via `apt`, use the following command:
سپس با استفاده از دستور sudo ufw disable فایروال را غیرفعال کنید ```bash
اگر با این دستور با خطا مواجه شد یعنی شما فایروال ندارد پس از روی این بخش رد شوید sudo apt install nginx
```
</div> Then, disable the firewall with:
<br> ```bash
<div dir="rtl"> sudo ufw disable
اگر نصب موفقیت آمیز بوده باشد با تایپ کردن localhost در مرورگر باید با پیام Welcome to Ngnix مواجه شوید ```
</div> If you encounter an error with this command, it means you don't have a firewall. In that case, skip this part.
## <div dir="rtl"> تنظیمات Ngnix</div> If the installation is successful, you should see "Welcome to Nginx" when typing `localhost` in your browser.
<div dir="rtl">
با دستور زیر یک پوشه برای سایت خود می سازیم
</div>
sudo mkdir /var/www/app1 ## Configuring Nginx
Create a directory for your site:
```bash
sudo mkdir /var/www/app1
```
<div dir="rtl"> Copy the contents of the `publish` directory to the newly created directory:
محتویات پوشه publish را به پوشه ای که ساختیم کپی کنید ```bash
</div> sudo cp yourprojectFolder/bin/Debug/net7.0/publish /var/www/app1
```
sudo cp yourprojectFolder/bin/Debug/net7.0/publish /var/www/app1 Then, navigate to the Nginx configuration:
```bash
sudo vim /etc/nginx/sites-available/default
```
<br> Replace the contents of the file with the following:
```nginx
<div dir="rtl"> server {
سپس با دستور زیر وارد کانفیگ Ngnix می شویم listen 80;
</div> server_name example.com *.example.com;
location / {
sudo vim /etc/nginx/sites-available/default proxy_pass http://localhost:5000;
proxy_http_version 1.1;
<div dir="rtl"> proxy_set_header Upgrade $http_upgrade;
و محتویات داخل فایل را با زیر عوض می کنیم proxy_set_header Connection keep-alive;
</div> proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
listen 80; proxy_set_header X-Forwarded-Proto $scheme;
server_name example.com *.example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
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;
}
} }
}
```
*Note: Replace `example.com` with your site address.*
<div dir="rtl"> Check the configuration file syntax:
<b>نکته: به جای example.com آدرس سایت خود را بگذارید ```bash
</b> sudo nginx -t
</div> ```
<br>
<div dir="rtl">
با دستور زیر محتویات فایلی را که تغییر دادیم را بررسی کنید
</div>
sudo ngnix -t If no errors are reported, reload Nginx to apply the changes:
```bash
sudo nginx -s reload
```
<br> ## Adding the Site as a Service
<div dir="rtl">
اگر با خطا مواجه نشدید دستور زیر را فراخوانی کنید تا تنظیمات Ngnix دوباره بارگذاری شود
</div>
sudo ngnix -s reload Create a service file for your site:
```bash
sudo vim /etc/systemd/system/app1.service
```
## <div dir="rtl"> افزودن سایت به عنوان سرویس</div> Copy the following code into the file:
<div dir="rtl"> ```plaintext
با دستور زیر فایلی برای سرویس خود درست می کنیم</div> [Unit]
Description=dotnet webapp
sudo vim /etc/systemd/system/app1.service [Service]
WorkingDirectory=/var/www/app1
<br> ExecStart=/usr/bin/dotnet /var/www/app/projectname.dll
Restart=always
<div dir="rtl"> RestartSec=10
کد زیر در فایل بالا کپی کنید SyslogIdentifier=projectname
</div> Environment=ASPNETCORE_ENVIRONMENT=Production
[Unit]
Description= dotnet webapp
[Service]
WorkingDirectory=/var/www/app1
ExecStart=/usr/bin/dotnet /var/www/app/projectname.dll
Restart=always
RestartSec=10
SyslogIdentifier=projectname
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
```
<div dir="rtl"> *Note: Replace `projectname` with your project's name.*
<b>
نکته: به جای projectname اسم پروژه خود را بگذارید
</b>
</div>
<br>
<div dir="rtl">
با دستور های زیر سایت را فعال کنید و از وضعیت آن مطلع شوید
</div>
sudo systemctl enable app1.service
sudo systemctl start app1.service
sudo systemctl status app1.service
Enable and start the site, and check its status:
```bash
sudo systemctl enable app1.service
sudo systemctl start app1.service
sudo systemctl status app1.service
```