[]
ActiveReports supports Linux environment with only .NET Core environment installed. WinForms and WPF controls are not supported.
type=info
Important: You should configure the Font Resolver (with config file or through code) to obtain consistent result. Check Troubleshooting to fix the missing fonts issue.
Once you have created a .Net core application on Visual Studio, open the project and follow the steps to publish the application.
Right-click on your project.
Click on Publish button.
Now create a new publish profile, and browse the folder where you want to publish your project dll.
Click on Publish so it will create your dll in the folder.
Now we have the web application dll and we need to host it on the Linux environment. .Net applications run on Kestrel servers and we run Apache or Nginx server in Linux environments, which acts as a proxy server and handles the traffic from outside the machine and redirects it to the Kestrel server so we will have Apache or Nginx server as the middle layer.
In this article, we will use Apache as a proxy server.
First, we would need to install the .Net core module in our Linux environment. For that run the following commands,
```auto
sudo apt-get update
```
```auto
sudo apt-get install apt-transport-https
```
```auto
sudo apt-get update
```
```auto
sudo apt-get install dotnet-sdk-3.1
```
```auto
sudo apt-get install dotnet-runtime-3.1
```
```auto
sudo apt-get install aspnetcore-runtime-3.1
```
This will install all the required .Net packages
Install the Apache server
```auto
sudo apt-get install apache2
```
```auto
sudo a2enmod proxy proxy_http proxy_html proxy_wstunnel
```
```auto
sudo a2enmod rewrite
```
Next, we need to make a conf file to set up our proxy on Apache. Create the file by running the following command:
```auto
sudo nano /etc/apache2/conf-enabled/netcore.conf
```
Now copy the following configuration in that file:
<VirtualHost *:80>
ServerName www.DOMAIN.COM
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000$1 [P]
ErrorLog /var/log/apache2/netcore-error.log
CustomLog /var/log/apache2/netcore-access.log common
</VirtualHost>
The <VirtualHost *:80> tag defines the IP and port it will bind Apache so we will access our application from outside our Linux environment through this Ip:Port.
Now restart the Apache server using the following the commands:
```auto
sudo service apache2 restart
```
```auto
sudo apachectl configtest
```
Move the dll to the defined path with the below command.
"sudo cp -a ~/release/ /var/netcore/"
Create a service file for our .Net application using the following command.
"sudo nano /etc/systemd/system/ServiceFile.service"
Copy the following configuration in that file and it will run our application,
[Unit]
Description=ASP .NET Web Application
[Service]
WorkingDirectory=/var/netcore
ExecStart=/usr/bin/dotnet /var/netcore/Application.dll
Restart=always
RestartSec=10
SyslogIdentifier=netcore-demo
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
In "ExecStart=/usr/bin/dotnet /var/netcore/Application.dll" line of code, replace Application.dll with your dll name that you want to run. For JSViewer MVC Core replace the Application.dll with JSViewer_MVC_Core.dll.
Now start the service. Instead of the service name in the below commands use the name of the file made above,
```auto
sudo systemctl enable {Service Name}
```
```auto
sudo systemctl start {Service Name}
```
Now your proxy server and kestrel server are running, and you can access your application through any ip with port 80.
To redeploy the code your need to replace the dll and stop and start your service again through the following commands,
```auto
sudo systemctl stop {Service Name}
```
```auto
sudo systemctl start {Service Name}
```