ActiveReports 19 .NET Edition
DevOps / Deployment / Deploy Applications in Non-Windows Environment / Linux
Linux

ActiveReports supports Linux environment with only .NET Core environment installed. WinForms and WPF controls are not supported.

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.

Publish your .Net Core application

Once you have created a .Net core application on Visual Studio, open the project and follow the steps to publish the application.

  1. Right-click on your project.
  2. Click on Publish button.
  3. Now create a new publish profile, and browse the folder where you want to publish your project dll.
  4. Click on Publish so it will create your dll in the folder.

Install required .Net Module on Linux

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,

This will install all the required .Net packages


Install and configure Apache Server

Install the Apache server

 Next, we need to make a conf file to set up our proxy on Apache. Create the file by running the following command:

 Now copy the following configuration in that file:

netcore.conf
Copy Code
<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:

Configure and Start Service  

   
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,

Copy Code
[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,

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,