InfixLMS – Laravel Octane (RoadRunner) Enablement Guide

  • /

26th Nov, 2025

InfixLMS — Laravel Octane (RoadRunner) Enablement Guide

This guide describes how to enable and run Laravel Octane with RoadRunner for InfixLMS. Follow the steps below carefully.

Quick overview
  • Install RoadRunner binary via Octane installer.
  • Set the required environment variables.
  • Ensure the project has index.php in /public.
  • Run Octane as a systemd service and configure Nginx as a reverse proxy.
1) Install RoadRunner Binary

Run the Octane installer which will download and install the RoadRunner binary for you:

php artisan octane:install
2) Add Required Environment Variables

Add the following to your .env file (or environment management):

HAS_PUBLIC_FOLDER=false OCTANE_SERVER=roadrunner OCTANE_HTTPS=false OCTANE_PORT=8000
3) Ensure index.php Exists

If your project has _index.php instead of index.php, rename it:

_index.php → index.php
4) Start Laravel Octane (Systemd Service)

Create a systemd service file to manage Octane for InfixLMS. Example service:

# Create the service file: sudo nano /etc/systemd/system/infixlms-octane.service # Paste the following: [Unit] Description=InfixLMS Octane Server After=network.target [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/var/www/infixlms.com ExecStart=/usr/bin/php artisan octane:start --host=127.0.0.1 --port=8000 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload sudo systemctl start infixlms-octane sudo systemctl status infixlms-octane sudo systemctl restart infixlms-octane

To follow logs:

sudo journalctl -u infixlms-octane -f
5) Setup Nginx Configuration

Use Nginx as a reverse proxy that forwards requests to Octane running on 127.0.0.1:8000. Example config:

sudo nano /etc/nginx/sites-available/infixlms.com # Paste the following: map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; listen [::]:80; server_name infixlms.com; server_tokens off; root /var/www/infixlms.com/public; index index.php; charset utf-8; client_max_body_size 1024M; client_header_timeout 3000; client_body_timeout 3000; fastcgi_read_timeout 3000; fastcgi_buffers 8 128k; fastcgi_buffer_size 128k; location /index.php { try_files /not_exists @octane; } location / { try_files $uri $uri/ @octane; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_page 404 /index.php; location @octane { set $suffix ""; if ($uri = /index.php) { set $suffix ?$query_string; } proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_pass http://127.0.0.1:8000$suffix; } listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/ssl/infixlms.com/cert.pem; ssl_certificate_key /etc/ssl/infixlms.com/key.pem; }

Enable and test Nginx, then reload:

sudo ln -s /etc/nginx/sites-available/infixlms.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
6) Permissions

Set correct write permissions for storage and cache directories:

sudo chmod -R 775 /var/www/infixlms.com/storage sudo chmod -R 775 /var/www/infixlms.com/bootstrap/cache

(Adjust owner/group to www-data:www-data if needed: sudo chown -R www-data:www-data /var/www/infixlms.com.)

Troubleshooting & Notes
  • Octane won't start: check journalctl -u infixlms-octane -b and the application log in storage/logs.
  • 502 / gateway errors: verify Octane is listening on 127.0.0.1:8000, check Nginx proxy_pass, and confirm firewall isn't blocking localhost ports.
  • Permissions: incorrect permissions cause file cache and session issues — ensure storage and bootstrap/cache are writable by the web user.
  • HTTPS: if using TLS termination at a load balancer, you may disable internal 443 in Nginx or adjust upstream headers accordingly.
  • Environment: ensure OCTANE_SERVER=roadrunner and port match the systemd ExecStart and Nginx proxy_pass.
  • Public folder handling: HAS_PUBLIC_FOLDER=false is provided because some deployments use different public folder handling — set appropriately for your deployment.
Categories