automatic start up for dspace front end at reboot

570 views
Skip to first unread message

Joshua Kim

unread,
Jan 8, 2024, 4:15:07 PM1/8/24
to DSpace Technical Support
Hello,

Does anyone use automatic start for dspace front end at reboot by using service ? If so, would you share with us? The 7.x documentation shows only manual start like pm2 start dspace-ui.json. 

Bizuayehu Hussien

unread,
Jan 11, 2024, 8:17:20 AM1/11/24
to Joshua Kim, DSpace Technical Support
Dear all
the error happened when I changed localhost file by local ip address.
the error becomes    500 internal server unavailable

Best Regards,

Bizuayehu Hussien Mohammed
BSc Degree In: Information System
Master In: Computer Science
Senior System Administrator
Cell: +251-983-188217 ||+251-919-980962
Samara University, Afar, Ethiopia


On Tue, Jan 9, 2024 at 12:15 AM Joshua Kim <jos...@udel.edu> wrote:
Hello,

Does anyone use automatic start for dspace front end at reboot by using service ? If so, would you share with us? The 7.x documentation shows only manual start like pm2 start dspace-ui.json. 

--
All messages to this mailing list should adhere to the Code of Conduct: https://www.lyrasis.org/about/Pages/Code-of-Conduct.aspx
---
You received this message because you are subscribed to the Google Groups "DSpace Technical Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dspace-tech...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dspace-tech/2b8f0685-8327-4eac-9f0e-683c7d8c22ben%40googlegroups.com.

Alan Orth

unread,
Jan 17, 2024, 8:42:04 AM1/17/24
to Joshua Kim, DSpace Technical Support
Dear Joshua,

I am starting pm2 via a systemd service unit, /etc/systemd/system/dspace-angular.service:

[Unit]
Description=DSpace Angular (PM2)
After=network.target tomcat9.service
Wants=tomcat9.service

[Service]
User=dspace
Group=dspace
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=NODE_ENV=production
Environment=PM2_HOME=/home/dspace/.pm2
Restart=on-failure
WorkingDirectory=/home/dspace/src/git/dspace-angular
ExecStart=/home/dspace/.node_modules/lib/node_modules/pm2/bin/pm2 start ./dist/server/main.js --name dspace-ui -i 4 --no-daemon
ExecReload=/home/dspace/.node_modules/lib/node_modules/pm2/bin/pm2 reload dspace-ui
ExecStop=/home/dspace/.node_modules/lib/node_modules/pm2/bin/pm2 stop dspace-ui
# Don't log pm2 to the systemd journal! Use pm2 logs instead.
StandardOutput=null

[Install]
WantedBy=multi-user.target

Then start and enable the service like you would any other system service. Works well, but I'm surprised at how pm2 makes this difficult. I find pm2's ergonomics very strange. In the service file above you can see I tell pm2 to not start its own management daemon. How can so much of the insanely massive Node.js ecosystem depend on this random package for clustering? And how can there be no other alternatives? Bizarre...

Hope that helps,

On Tue, Jan 9, 2024 at 12:15 AM Joshua Kim <jos...@udel.edu> wrote:
Hello,

Does anyone use automatic start for dspace front end at reboot by using service ? If so, would you share with us? The 7.x documentation shows only manual start like pm2 start dspace-ui.json. 

--
All messages to this mailing list should adhere to the Code of Conduct: https://www.lyrasis.org/about/Pages/Code-of-Conduct.aspx
---
You received this message because you are subscribed to the Google Groups "DSpace Technical Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dspace-tech...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dspace-tech/2b8f0685-8327-4eac-9f0e-683c7d8c22ben%40googlegroups.com.


--

Jorge Torres

unread,
Jan 17, 2024, 11:46:10 AM1/17/24
to DSpace Technical Support
PM2 docs have a section for start on reboot, it creates a service based on the system service manager.
https://pm2.keymetrics.io/docs/usage/startup/

Tomas Hajek

unread,
Jan 17, 2024, 11:57:08 AM1/17/24
to DSpace Technical Support

I think that was the approach that I followed and it seemed to take some gymnastics to make work.  I think I might have to revisit what I did as the configuration that Alan posted might fix some of the oddities I run into.   I suspect my approach was not optimal.  In either case I think I did something like the following.  I have it all in an Ansible playbook and once I got it working I kind of left it.
My systemd unit file (/etc/systemd/system/pm2-dspace.service) looks like the following (running RHEL 8.9):
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=dspace
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/dspace/.local/bin:/home/dspace/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/dspace/.pm2
PIDFile=/home/dspace/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

To get this to work though I believe I needed to "sudo npm install --global pm2"
Then as the dspace user I created /opt/dspace-angular/dspace-ui.json with
{
    "apps": [
        {
           "name": "dspace-ui",
           "cwd": "{{ dspace_ui_deploy_dir }}",
           "script": "dist/server/main.js",
           "instances": "max",
           "exec_mode": "cluster",
           "env": {
              "NODE_ENV": "production"
           }
        }
    ]
}

And then as the dspace user:
/usr/local/bin/pm2 start dspace-ui.json /
/usr/local/bin/pm2 save
/usr/local/bin/pm2 stop dspace-ui.json
/usr/local/bin/pm2 kill
At this point on a reboot systemd will start the pm2  dspace-ui but using systemd to stop pm2 leaves things in a odd state, possibly because PM2 God Daemon is running.  As the dspace use I am able to pm2 stop dspace-ui and do some of the various other pm2 commands (I just added another cpu and just did a pm2  scale dspace-ui +1 and then a pm2 save and on a reboot systemd resurrected the saved config so I went from 2 workers to 3.  I admit though that I do not and did not fully understand what pm2 was doing.  I was just happy that I was able to make it work on a reboot.
Reply all
Reply to author
Forward
0 new messages