Is it possible to deploy OJS3 on Digital Ocean with Laravel Forge?


#1

Hi. I am trying to deploy OJS 3 on a Digital Ocean Droplet using Laravel Forge.

I was able to clone the OJS repo to my Git Hub account and then to deploy it into Digital Ocean droplet via Laravel Forge.

However once there there seem to a be a problem with the routes, because the auto install never starts.

If I do the install configuration of OJS en my desktop server, then update the Git Hub repo and redeploy the app with Forge, the home page of OJS shows, but again nothing happens when I click on any link, the route changes accordingly but doesn’t redirect to the corresponding page. See http://206.189.181.6/#pkp_content_nav

I know Laravel Forge / Digital Ocean configure an Nginx server (not Apache). Would be that the reason why OJS is not running properly on this web server?
If so, is there any possible work arround I could get?

Below you could see the Nginx configuration file of Laravel Forge, maybe you can see there something I am missing.

Any advise will be appreciated! Regards

FORGE CONFIG (DO NOT REMOVE!)

include forge-conf/default/before/*;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name default;
root /home/forge/default;

# FORGE SSL (DO NOT REMOVE!)
# ssl_certificate;
# ssl_certificate_key;

ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparams.pem;

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";

index index.html index.htm index.php;

charset utf-8;

# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/default/server/*;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }

access_log off;
error_log  /var/log/nginx/default-error.log error;

error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

location ~ /\.(?!well-known).* {
    deny all;
}

}

FORGE CONFIG (DO NOT REMOVE!)

include forge-conf/default/after/*;


#2

@asmecher maybe you can tell if that deploy is possible?


#3

Hi @GabeLon,

I haven’t used Digital Ocean but I suspect the issue is related to URLs that use PATH_INFO, which don’t seem to be handled by your server setup properly. Try turning on disable_path_info to see if it fixes the issue. If so, I’d still recommend debugging why your server environment doesn’t support PATH_INFO URLs, as they’ll make your URLs much cleaner (and should be supported in pretty much any server environment, perhaps with some tweaking).

Regards,
Alec Smecher
Public Knowledge Project Team


#4

Thank you @asmecher turning on disable_path_info did the trick, and Now the deploy is running properly!!

Best regards :grinning::+1:


#5

Hi @GabeLon,

I’d still suggest seeing if you can get your environment working without needing disable_path_info – your URLs will be hideous and some features (like the OAI-PMH interface) will operate slightly out of specifications.

Regards,
Alec Smecher
Public Knowledge Project Team