ActiveReports 18 .NET Edition
DevOps / Deployment / Deploy Applications in Non-Windows Environment / Linux
In This Topic
    Linux
    In This Topic

    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,