Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk11 min

How to Restart a Rails Server on a Linux VPS

A practical guide to restarting Rails and Puma on a Linux VPS, with exact systemd commands, foreground-process steps, log checks, troubleshooting, and lower-downtime deployment options.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a production Rails application, restart the supervisor-managed Puma service rather than launching a second Rails process. SSH into the VPS, identify the exact systemd unit, then run sudo systemctl restart puma.service (or the configured application-specific unit) and verify it with sudo systemctl status puma.service.

If the systemd unit file changed, run sudo systemctl daemon-reload before the restart. A foreground process started with bin/rails server is different: stop it with Ctrl+C and start it again from the Rails application directory. The method you choose determines whether listeners briefly close, whether requests can continue, and whether your old and new application versions must work together.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

First identify what is actually running

“Restart the Rails server” can mean several different operations on a Linux VPS. A production deployment usually has Puma supervised by systemd, while a development shell may have a foreground process started with bin/rails server. Restarting the wrong process can leave the public application unchanged, create a second process competing for the same port, or terminate a service that systemd immediately starts again.

Before issuing a command, determine these four details:

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
  • Supervisor: Is systemd managing Puma, or was the process launched manually?
  • Unit name: Is it puma.service, or an application-specific name such as myapp-puma.service?
  • Application directory: Which release or deployment path is configured as the service’s working directory?
  • Restart objective: Do you need a routine process replacement, a code reload with minimal interruption, or a phased deployment?

On a VPS, systemd is commonly the process supervisor and runs as PID 1. The service unit, rather than the command you might use locally, is the authoritative definition of how Puma starts: executable path, working directory, environment, user, sockets, and restart policy.

Discover a Puma unit safely

List loaded services whose names contain “puma”:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
systemctl list-units --type=service | grep -i puma

If that returns nothing, inspect the deployment configuration or unit files under /etc/systemd/system/ and /usr/lib/systemd/system/ (the exact directory varies by distribution). Use the complete unit name shown by systemd, including any application prefix and the .service suffix when you write commands.

Do not infer the name from your domain name. A service may be called myapp-puma.service, puma_myapp.service, or something entirely different. If multiple Rails applications share a VPS, restarting a generic puma.service may affect only one of them—or the wrong one.

Restart Puma under systemd

Once you know the unit, the routine production command is:

sudo systemctl restart puma.service

Replace puma.service with the exact configured unit. Immediately check the result:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo systemctl status puma.service

A successful command means systemd accepted the request; it does not prove that Puma finished booting, bound the expected socket, loaded the correct release, or can serve a request. Read the status output for an active state, recent process identifiers, and the last log lines. If the status is not active, stop testing the public site and inspect the journal.

Reload systemd when the unit file changed

Systemd reads unit definitions into its manager. Editing a file does not automatically make the manager use the new contents. After changing /etc/systemd/system/<unit>.service, run:

Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
sudo systemctl daemon-reload
sudo systemctl restart <unit>.service
sudo systemctl status <unit>.service

daemon-reload is needed for changes to settings such as ExecStart, WorkingDirectory, Environment, dependencies, users, restart policies, or socket relationships. It is not a substitute for restarting the service: it refreshes systemd’s configuration, while restart replaces the running Puma process.

Use a complete production sequence

  1. Connect to the VPS over SSH with an account allowed to manage the unit:

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
    ssh [email protected]
  2. Change to the deployment directory if you need to inspect Rails configuration, release files, or application logs:

    cd /srv/myapp/current

    The directory is only an example; use the path configured by your deployment.

  3. Reload the manager if the unit was edited:

    sudo systemctl daemon-reload
  4. Restart the exact unit:

    sudo systemctl restart myapp-puma.service
  5. Verify the unit:

    sudo systemctl status myapp-puma.service
  6. If it is inactive or failed, capture the boot-session journal and application log before trying again:

    sudo journalctl -u myapp-puma.service -b

Correct the error identified in the output—often a path, permission, environment variable, executable, working-directory, or bind configuration problem—then restart. Repeating the same restart command without addressing the reported failure rarely changes the outcome.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Restarting a foreground Rails process

A process started directly from a shell with bin/rails server is not the same as a systemd-managed production service. The Rails command line runs in the context of the application, and the server command starts the Rails server using the application’s configuration.

To restart that kind of process, return to the terminal where it is running and press Ctrl+C. Wait for the process to exit, then from the Rails application directory start it again:

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
cd /path/to/your/app
bin/rails server

If the original terminal is gone, find the specific process and terminate it deliberately rather than killing every Ruby process on the host. A manually launched process may have a different Ruby version, bundle, environment, port, or credentials from the production service. Starting it as a replacement for Puma can therefore produce misleading results even when the command appears to work.

Use this foreground procedure for development, diagnosis, or a deployment explicitly designed around a manually managed process. For a production VPS, restart the supervisor-managed unit so systemd retains responsibility for the process and its failure policy.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check that the restart really succeeded

Verification has three layers: the service manager, the application process, and the externally reachable endpoint. Check them in that order.

1. Service-manager state

sudo systemctl status <unit>.service

Look for an active service and a recent “started” transition. A unit that is repeatedly restarting, marked failed, or exiting immediately needs log analysis before any browser test.

2. Journal and Rails logs

sudo journalctl -u <unit>.service -b

The -b option limits the view to the current boot. Add a time filter or follow the journal during a controlled restart when the output is large:

sudo journalctl -u <unit>.service -f

Also inspect the Rails application log in the deployment’s configured log directory. The journal commonly reveals systemd-level failures; the Rails log can expose boot exceptions, missing secrets, failed initializers, migration errors, or connection problems that occur after Puma starts.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Public request

Only after the service is healthy should you test the endpoint through the normal proxy or load balancer. Confirm a representative page, an authenticated route if appropriate, and a write operation only when it is safe in your environment. A successful systemd status does not validate reverse-proxy routing, TLS, database access, background jobs, or application-level health.

What a Puma systemd unit must provide

Puma’s documented systemd pattern uses an absolute Puma executable in ExecStart, a WorkingDirectory that points to the Rails application, and a restart policy such as Restart=always. These fields explain many restart failures:

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Unit setting Purpose Typical failure when wrong
ExecStart Absolute command and arguments used to launch Puma “No such file or directory,” wrong Ruby or Bundler version, or an invalid option
WorkingDirectory Directory from which the Rails application boots Missing application files, incorrect relative paths, or inability to load the environment
User Unix account that owns the Puma process Permission failures reading releases, writing sockets, or accessing credentials
Environment and environment files Runtime values such as Rails environment, secrets, paths, and ports Boot errors, wrong database, missing credentials, or binding to an unexpected socket
Restart Whether systemd starts Puma again after an exit Unexpected downtime or a crash loop that hides the original error
Socket or port settings Where Puma accepts traffic Reverse proxy reports connection refusal or serves a different process

Inspect the effective unit rather than relying only on the file you remember editing:

sudo systemctl cat <unit>.service

This displays the loaded unit and any drop-in overrides. If a deployment tool generated the unit, make changes in its source configuration when possible; otherwise a later deployment may overwrite manual edits.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Normal, hot, and phased Puma restarts

A systemd restart is convenient, but it is not automatically a zero-downtime deployment. Puma documents three built-in restart mechanisms, each with different behavior.

Method How it is triggered Interruption characteristics Important prerequisite
Normal restart systemctl restart <unit> The old process is replaced; listener sockets may close while the new process initializes Correct systemd unit and a healthy boot configuration
Hot restart Puma receives SIGUSR2 The server socket remains open while new code loads, so requests are less likely to be lost; requests can still wait during initialization Puma configuration and deployment must support the signal-based restart
Phased restart Puma receives SIGUSR1 in cluster mode Workers are replaced one at a time, reducing interruption and avoiding a full worker stop Old and new application versions must coexist safely
Status-server restart A /restart request to Puma’s status server Depends on the configured status server and restart mode Status server must be enabled and protected

A hot restart keeps the server socket open, but it is not a guarantee that every request completes instantly. New code still has to load, workers still have to initialize, and long-running requests may experience latency.

A phased restart is useful for cluster mode because workers turn over individually. It is safe only when the old workers can run against the code, schema, and data written by the new workers. A migration that removes a column immediately, renames a field without compatibility code, or changes a serialized format can break the workers that have not yet been replaced.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Sending a signal deliberately

Signal-based restarts require the correct Puma master-process PID and a deployment that expects them. Obtain the PID from the service status or the process management configuration, then send only the documented signal to that process:

kill -USR2 <puma-master-pid>

For a phased restart in cluster mode:

kill -USR1 <puma-master-pid>

Do not send signals to an arbitrary Ruby process. If systemd owns Puma, confirm the process belongs to the target unit before acting. A systemd restart is easier to audit and recover; use a signal when the Puma configuration and deployment procedure specifically call for it.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How to reduce or avoid downtime

Choose the restart strategy based on listener behavior, cluster mode, code compatibility, and socket configuration—not merely on the desire for a shorter command.

Use phased restarts for compatible deployments

  1. Deploy code that can run with both the current and incoming database schema.
  2. Apply additive database changes first, such as creating a new column while retaining the old one.
  3. Release application code that can read and write both representations when necessary.
  4. Perform the phased restart in Puma cluster mode.
  5. Remove obsolete schema or compatibility code only after all old workers are gone and the new release is established.

This expand-and-contract approach is the practical consequence of Puma’s compatibility requirement: old and new workers overlap during a phased restart.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use socket activation when configured

With systemd socket activation, systemd owns the listening socket and passes it to Puma. The socket can remain listening while one Puma process is replaced, allowing a hot-style handoff with less listener interruption. Puma’s documentation notes that socket activation is not currently available on JRuby.

Socket activation is not created by running daemon-reload or by adding a random socket unit. The VPS must already have a matching .socket unit, the Puma service must be configured to receive the inherited socket, and the reverse proxy must point to that endpoint. Verify the actual units and dependencies before relying on this behavior.

Understand the limits of “zero downtime”

No restart method removes every deployment risk. Requests can wait while code loads; health checks can fail during boot; database locks can delay workers; and a bad release can leave every replacement worker unhealthy. A realistic goal is to keep the listener available while maintaining a tested rollback path, compatible migrations, and an independent health check.

Decision guide: which restart should you use?

Situation Recommended action Why
Routine production restart; no unit changes sudo systemctl restart <unit>.service, then status and logs Uses the existing supervisor and deployment settings
Unit file or drop-in was edited sudo systemctl daemon-reload, then restart and verify Loads the new systemd definition before replacing Puma
Application started in a terminal Ctrl+C, then bin/rails server from the app directory Controls the foreground process that actually owns the terminal
Cluster deployment with backward-compatible schema Puma phased restart with SIGUSR1 Replaces workers individually
Deployment configured for a hot restart Puma hot restart with SIGUSR2 Keeps the server socket open while the new process loads
Socket activation already configured Use the service’s documented restart procedure Systemd can keep the listening socket while Puma is replaced
Service is failed or crash-looping Read journalctl and application logs, fix the reported cause, then restart Repeated restarts do not correct configuration or boot errors

Troubleshoot common restart failures

“Unit not found”

The name is wrong, the unit is not installed, or systemd has not loaded a newly created file. Search loaded services and unit directories, confirm the spelling, and run daemon-reload if the file was just added. Do not create a second unit until you know how the application was deployed.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Permission denied”

Check the account in the unit, ownership of the release and shared directories, permissions on the Puma socket, and access to credentials or environment files. Running the command as root can mask an ownership error that will recur when systemd launches Puma as its configured service user.

Puma exits immediately

Read the service journal and Rails log for the first boot exception. Common categories include an invalid Ruby or Bundler path, missing secret, wrong WorkingDirectory, unavailable database, malformed configuration, or an occupied socket. Fix the first reported error, then perform one controlled restart.

Reverse proxy returns 502 or connection refused

Confirm that Puma is listening on the socket or port expected by the proxy, that the socket exists with the right owner and mode, and that the proxy targets the same application instance you restarted. A healthy systemd state alone does not prove that the proxy endpoint matches Puma’s bind setting.

The old code is still being served

Check the unit’s WorkingDirectory, ExecStart, release symlink, and environment. A restart can be perfectly successful while pointing at an older release path. Inspect the effective unit with systemctl cat and compare it with the deployment’s current release.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The service keeps restarting

Use the journal to identify whether systemd is applying Restart=always after a clean-looking but unsuccessful boot. Temporarily stop the loop if necessary while preserving logs, correct the application or unit error, and then start the service deliberately. A restart policy is recovery automation, not evidence that the application is healthy.

A safe restart checklist

  • Identify whether Puma is systemd-managed or foreground.
  • Confirm the exact unit name and target application.
  • Check whether the unit or a drop-in changed.
  • Use daemon-reload before restarting changed systemd configuration.
  • Restart only the intended service.
  • Read systemctl status immediately.
  • Inspect journalctl -u <unit>.service -b and Rails logs if anything is abnormal.
  • Confirm the configured working directory, executable, user, environment, and bind endpoint.
  • Test the application through its normal proxy only after the service is healthy.
  • For minimal interruption, verify cluster mode, migration compatibility, and socket activation before choosing a signal-based or socket-preserving restart.

Key distinction to remember

The command that starts Rails is not necessarily the command that operates your production application. A foreground bin/rails server process belongs to the shell that launched it; a production Puma process belongs to its supervisor and unit definition. Restart the owner of the running process, verify the new process through systemd and logs, and select hot or phased behavior only when the deployment has been configured to support it.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.