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.
Once you have created a .Net core application on Visual Studio, open the project and follow the steps to publish the application.
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,
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
sudo apt-get install dotnet-runtime-3.1
sudo apt-get install aspnetcore-runtime-3.1
This will install all the required .Net packages
Install the Apache server
sudo apt-get install apache2
sudo a2enmod proxy proxy_http proxy_html proxy_wstunnel
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:
sudo nano /etc/apache2/conf-enabled/netcore.conf
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:
sudo service apache2 restart
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,
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,
sudo systemctl enable {Service Name}
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,
sudo systemctl stop {Service Name}
sudo systemctl start {Service Name}