Code42 server does not restart after Linux reboots or upgrades
Overview
If your Code42 server does not restart when its Linux machine reboots or upgrades, follow these instructions to determine whether a new or revised restart script will solve the problem. If so, follow the instructions to create a Code42 server restart script in /etc/systemd/system/proserver.service or to modify the existing script at /etc/init.d/proserver.
Affects
Code42 servers installed on Linux. When Linux reboots, the Code42 server fails to restart. Or a Linux upgrade process reports an error.
Causes
A Code42 server writes its restart script to a file in /etc/init.d, a long-time standard for Linux systems. At least two Linux variations require a new or revised script.
The same fixes that allow a Code42 server to restart when a system reboots may also cause the server upgrade process to fail, because it does not find the init.d script that it expects and it cannot shut down the server.
If you installed a systemd script, follow the instructions to implement an LSB-compliant init.d script.
Missing systemd script
Some Linux systems (see the list below) look for restart scripts in /etc/systemd rather than /etc/init.d. To make those systems restart a Code42 server when they reboot, you need to create a restart script at /etc/systemd/system/proserver.service.
- Supported by Code42
- Red Hat Enterprise Linux (RHEL)
- Ubuntu
- Unsupported by Code42
- CentOS
- Debian
- Fedora
- openSUSE
- SUSE Linux Enterprise Server
For details, see Wikipedia's article on systemd.
Non-compliant init.d script
In addition, some Linux systems that use init.d scripts, or both systemd and init.d, require compliance with a standard called Linux Standard Base (LSB). To meet that standard, you need to add some header information to the file /etc/init.d/proserver.
- Supported by Code42
- Red Hat Enterprise Linux (RHEL)
- Ubuntu
- Unsupported by Code42
- CentOS
- Debian
Diagnose and solve
A Code42 server may fail to restart after its Linux machine reboots for either or both of the causes described above. Follow the instructions in the order presented below to:
- Determine whether your Linux machine uses systemd.
If it does, install the systemd script, then reboot the machine.
If your Code42 server restarts, the problem is solved. You are finished. - Determine whether your Linux distribution requires LSB compliance.
If it does, edit the init.d script.
Note that an LSB problem may not show up until after a systemd problem is solved and the system rebooted.
Verify and use systemd
Determine whether your Linux machine uses systemd
At the Linux command line, enter the command:
sudo stat /proc/1/exe | head -1
If the command returns a reference to a systemd directory, as in the example below, then your Linux distribution does use systemd to manage services. Proceed with Install the systemd script, immediately below.
>$ sudo stat /proc/1/exe | head -1 >$ File: '/proc/1/exe' -> '/usr/lib/systemd/systemd'
If your Linux distribution does not use systemd, skip ahead to Diagnose and implement LSB compliance.
Install the systemd script
- Copy the script below into a new file /etc/systemd/system/proserver.service.
- Server installed for root user:
[Unit] Description=Code42 Server After=network.target [Service] Type=forking PIDFile=/opt/proserver/proserver.pid WorkingDirectory=/opt/proserver ExecStart=/opt/proserver/bin/proserver start ExecStop=/opt/proserver/bin/proserver stop [Install] WantedBy=multi-user.target
- Server installed for user proserver:
[Unit] Description=Code42 Server After=network.target [Service] User=proserver Type=forking LimitNOFILE=409600 PIDFile=/home/proserver/proserver/server/proserver.pid WorkingDirectory=/home/proserver/proserver/server ExecStart=/home/proserver/proserver/server/bin/proserver start ExecStop=/home/proserver/proserver/server/bin/proserver stop [Install] WantedBy=multi-user.target
- Server installed for root user:
- Edit the file paths in the script, if necessary.
The scripts above points to the default paths. Only a nonstandard installation needs changes to the script. - At the Linux command line, enter two commands:
sudo systemctl daemon-reload
sudo systemctl enable proserver.service - Verify that the second command returns results that report creating the symlink:
Created symlink from /etc/systemd/system/multi-user.target.wants/proserver.service to /etc/systemd/system/proserver.service
Do not create the symlink manually because it may lead to problems of ownership and privileges.
- Restart your Code42 server with the new proserver.service script. The command is:
sudo systemctl restart proserver.service
- Reboot your machine with this command:
sudo shutdown -r now
- Test whether the Code42 server restarted with this command:
sudo systemctl status proserver.service
If the Code42 server restarts, the problem is solved.
If the Code42 server does not restart, proceed with Diagnose and implement LSB compliance.
Diagnose and implement LSB compliance
Determine whether your Linux machine requires LSB compliance
Search through your system logs using a command like the following:
sudo grep -r proserver /var/log/*
Look for a message like this one:
insserv: warning: script 'proserver' missing LSB tags and overrides
If you find such a message, edit the existing init.d script to comply with the LSB standard.
Edit init.d script to comply with LSB
- Open /etc/init.d/proserver with a text editor.
- Copy the following 13 lines to the top of the file.
#!/bin/sh # Linux Standard Base comments ### BEGIN INIT INFO # Provides: proserver # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: PROserver service # Description: PROserver service ### END INIT INFO
- Reboot your machine with this command:
sudo shutdown -r now
- Verify that the Code42 server restarted by connecting with a web browser, or with a command like the following:
service --status-all
If the Code42 server restarts, the problem is solved.
If the Code42 server does not restart, contact our Customer Champions for Code42 for Enterprise support.