You can host several independent websites on one Linux VPS by treating every site as a separate Unix account: give it its own document root, PHP-FPM pool, private socket, virtual host and disk quota. The web server remains shared, but files and PHP workers are separated by Linux ownership and process credentials.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
This is a practical multi-site layout, not a complete security boundary. PHP-FPM pools share parts of the operating system and one OPcache instance, so a compromised kernel, web server or privileged service can still affect every site. Use the design when you need controlled separation on a server you administer, and verify each command against your distribution before applying it to production.
As an Amazon Associate I earn from qualifying purchases.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →What “shared hosting on a VPS” actually means
In this arrangement, one VPS runs the operating system, web server and PHP-FPM service for multiple domains. Each domain is assigned a different Linux user, such as siteuser1 and siteuser2. That user owns the site’s files and runs its PHP-FPM workers. A separate virtual host receives requests for the domain and forwards PHP files to the matching pool socket.
The important distinction is between convenience and isolation. A single account that owns every website is easy to configure, but a writable vulnerability in one application can expose all of the others. Separate accounts limit ordinary file access. Separate pools add process and resource controls, but pools alone do not create a complete security boundary: pools share the host kernel and the OPcache service, and PHP-FPM should never listen on a publicly reachable address.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
| Layout | File isolation | Operational effort | Resource controls |
|---|---|---|---|
| One Unix user for every site | Weak; a compromised site can usually read or modify sibling sites owned by that user | Lowest | One shared PHP-FPM configuration |
| One Unix user and PHP-FPM pool per site | Strongest practical separation in this manual design; access is constrained by Unix ownership and permissions | Moderate; every site needs a user, pool, socket and virtual host | Per-site worker limits plus filesystem quotas |
| Separate pools without separate users | Still weak at the file layer; pool credentials are effectively shared | Moderate | Per-pool process settings, but no real account-level separation |
Plan the server before creating accounts
Choose the filesystem that will hold site data
Decide whether site directories will live under /home, /srv/www or a dedicated filesystem. Quotas apply to a filesystem, not an arbitrary directory. If every site is beneath /home, enabling user quotas there is straightforward. A separate filesystem can make accounting and recovery easier, but it must be mounted and maintained independently.
Confirm the software versions and service names
The paths below use Debian/Ubuntu conventions and show PHP 8.3 as an example. Your distribution may use another PHP version, a different service unit, or a different web-server layout. Check the installed package names, the PHP-FPM pool directory and the service status before copying a path verbatim.
- Root or
sudoaccess to the VPS. - A supported Linux distribution with a web server, PHP-FPM and the quota tools.
- DNS records for each domain pointing to the VPS address.
- A filesystem whose quota implementation matches its type, such as ext4 or XFS.
- A plan for TLS certificates, updates, logs and backups; those operational tasks are separate from quota setup.
Create one Unix account and web root per site
Create the account without an interactive login
Use a system account for each site and give it a home directory that contains the document root. The exact useradd flags vary by distribution; the following illustrates the intended result for a site called siteuser1.
sudo useradd --system --home-dir /home/siteuser1 --create-home --shell /usr/sbin/nologin siteuser1
sudo mkdir -p /home/siteuser1/public_html
sudo chown -R siteuser1:siteuser1 /home/siteuser1
sudo chmod 750 /home/siteuser1
sudo chmod 750 /home/siteuser1/public_html
The account should own application files, upload directories and any files PHP must write. Avoid making the tree globally writable. If the web server needs to traverse a parent directory, grant only the execute permission required for traversal rather than opening the directory to everyone.
Repeat the pattern for every domain
For a second site, create siteuser2, /home/siteuser2/public_html and matching ownership. Keep names, logs and sockets unambiguous; predictable naming reduces the chance that a virtual host points at the wrong account.
Build a PHP-FPM pool for each site
Place the pool file in the distribution’s pool directory
On Debian/Ubuntu installations using PHP 8.3, pool files are commonly stored in /etc/php/8.3/fpm/pool.d/. Create a file such as siteuser1.conf. The pool name, Unix user, group and socket must be unique to the site.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches[siteuser1]
user = siteuser1
group = siteuser1
listen = /run/php/php8.3-siteuser1.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[open_basedir] = /home/siteuser1:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen
The pm.max_children = 10 value is an example from a community configuration, not a universal recommendation. Ten workers can be excessive on a small VPS or insufficient for a busy site. Measure memory use and set a limit that leaves room for the operating system, web server, database and other pools.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
open_basedir can restrict PHP file access to the site’s directory and /tmp. The listed execution functions are commonly disabled in shared-style configurations. These directives are policy choices from community examples, not official safe defaults; test the application’s requirements and verify the directive syntax for the PHP build you installed. Some applications legitimately need a function that you disable, while disabling a function does not repair a vulnerable extension or kernel.
Keep the socket private
A Unix socket under /run/php keeps PHP-FPM off the network. The web server needs permission to connect, which is why the example sets the socket group to www-data and mode 0660. Do not replace the socket with a publicly bound TCP address merely to simplify configuration. If a TCP listener is unavoidable for a controlled internal design, firewall it and bind it to a private interface; never expose PHP-FPM directly to the Internet.
Repeat the pool with site-specific values
Create a second file for siteuser2, changing the pool name, account, document path and socket:
Free tools Windows power users keep installed
One-click scans. No signup required.
[siteuser2]
user = siteuser2
group = siteuser2
listen = /run/php/php8.3-siteuser2.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[open_basedir] = /home/siteuser2:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen
After creating or changing pools, validate the configuration and reload PHP-FPM using your distribution’s service name. A typical Debian/Ubuntu sequence is:
sudo php-fpm8.3 -t
sudo systemctl reload php8.3-fpm
sudo systemctl status php8.3-fpm
If your binary is named differently, use the installed version. A failed reload usually indicates a typo in a pool directive, a duplicate pool name or a socket path that the service cannot create.
Point each virtual host at its own socket
Use one server block per domain
The web server must map the requested hostname to the corresponding document root and PHP socket. The following nginx-style example demonstrates the relationship; adapt the syntax if you use Apache with its FastCGI module.
server {
listen 80;
server_name game-one.example.com www.game-one.example.com;
root /home/siteuser1/public_html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.3-siteuser1.sock;
}
}
A second server block should use /home/siteuser2/public_html and /run/php/php8.3-siteuser2.sock. The most damaging configuration mistake is a mismatched pair: the right domain serving the wrong root, or both domains forwarding to one pool. Check the hostname, root and socket as a set.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
Enable and test the virtual hosts
- Create the site configuration in the web server’s enabled-sites mechanism.
- Run the web server’s configuration test, such as
nginx -tor the equivalent command for your server. - Reload the web server only after the test succeeds.
- Place a small PHP diagnostic file owned by the site account, request it through the domain, and confirm that it reports the expected PHP version and pool behavior. Remove the diagnostic file immediately after testing.
- Review the access and error logs for permission errors, a missing socket or requests reaching the wrong virtual host.
Use HTTPS in production and configure certificates separately from the account and pool layout. Do not grant the web server write access to the whole document root just to make an installer work; identify the specific upload or cache directory that needs write permission.
Enforce disk limits with Linux quotas
Understand what quotas count
User quotas limit blocks and, optionally, inodes consumed by a Unix account on a filesystem. They work only when files are actually owned by that account. Uploads and files created by PHP must therefore run under the site user; if a deployment job or administrator creates them as another account, that usage may be charged elsewhere and the site’s limit will not behave as expected.
Install the quota tools
On Debian/Ubuntu, install the package named quota:
sudo apt update
sudo apt install quota
Other distributions use a different package manager or split the utilities into multiple packages.
Add quota options to the correct mount
Inspect the mount containing the site directories:
findmnt /home
findmnt -no FSTYPE,OPTIONS /home
For an ext4 filesystem, an illustrative /etc/fstab entry is:
/dev/sda3 /home ext4 defaults,usrquota,grpquota 0 2
Use the real device or UUID and the real filesystem type from your server. The usrquota option enables per-user accounting; grpquota enables group accounting. Remount after editing, or reboot during a planned maintenance window:
sudo mount -o remount /home
findmnt -no OPTIONS /home
Do not copy ext4 options onto XFS. XFS uses options such as uquota/usrquota, gquota/grpquota and project-quota forms such as pquota/prjquota. An invalid option can prevent the next boot, so consult the documentation for the exact distribution and filesystem.
Create quota metadata and turn accounting on
On a fresh setup, the commonly used workflow is:
sudo quotacheck -vguma
sudo quotaon -avug
Quota files may appear at the filesystem root with names such as aquota.user, quota.user, aquota.group or quota.group. Journaled quota modes on ext3/ext4 can avoid a full quotacheck after an unclean shutdown, but the required mount syntax depends on the kernel and distribution. Newer ext4 filesystems can also use the filesystem’s built-in quota feature; published guidance differs on combining that feature with traditional mount options. Follow one method supported by your distribution instead of mixing recipes.
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Verify that quotas are active:
sudo quotaon -pug /home
findmnt -no OPTIONS /home
Assign soft and hard limits
setquota is convenient for scripts; edquota opens an interactive editor. The command takes the user, block soft limit, block hard limit, inode soft limit, inode hard limit and filesystem. Values are commonly expressed in filesystem quota units, so confirm the unit shown by your local man page before choosing numbers.
sudo setquota siteuser1 0 0 0 0 /home
sudo setquota siteuser2 0 0 0 0 /home
The all-zero example clears limits; it is shown only to demonstrate argument order. Replace the zeros with policy values appropriate to your VPS, and document whether your chosen tool interprets block values as kilobytes or another unit. Set both block and inode limits when you need to prevent a site from exhausting the filesystem with millions of tiny files.
Audit usage and troubleshoot quota reports
Use repquota to inspect usage and limits. On a large system, repquota -n skips name lookups and can return faster:
sudo repquota /home
sudo repquota -n /home
- If the quota is never exceeded, verify that the site directory is on the filesystem where quotas were enabled.
- If usage is attributed to the wrong account, inspect ownership with
find /home/siteuser1 -xdev -printf '%u:%g %pn' | headand correct deployment or upload permissions. - If
quotaonfails, check the filesystem type, mount options and quota-file names rather than adding random options from another filesystem. - If a hard limit blocks an update, remove unnecessary files or raise the limit deliberately; do not disable quotas globally as a workaround.
Control CPU and memory pressure with PHP-FPM
Disk quotas do not stop a site from consuming CPU or RAM. PHP-FPM’s process manager settings are the first per-site control in this design. pm.max_children caps concurrent PHP workers; the dynamic mode also uses start and spare-worker settings. Estimate a worker’s real memory footprint under the site’s workload, multiply by the maximum workers across all pools, and leave headroom for the database, web server, kernel and filesystem cache. If the VPS begins swapping, lower pool limits or move the workload before adding more sites.
Recommended Free Tools
Watch for slow requests and worker saturation in PHP-FPM and web-server logs. A low worker limit can produce a queue and timeouts; an excessively high limit can make every site unstable. Change one pool at a time and reload safely.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Security boundaries and their limits
What separate accounts protect
When siteuser1 owns only its own tree and siteuser2 owns another, normal Unix permission checks prevent one PHP process from reading the other’s private files. A compromise is therefore less likely to become an immediate compromise of every site’s source code and credentials.
What they do not protect
- All pools share the host kernel, web server and other privileged services.
- PHP-FPM pools are not a full virtualization boundary, and they share one OPcache instance.
- A root compromise, vulnerable kernel, malicious administrator or unsafe setuid program can cross account boundaries.
- Weak file permissions, shared database credentials and world-readable backups can undo the isolation.
Keep the VPS patched, restrict administrative SSH access, use unique database credentials per application, and store secrets outside directories that a different site can read. Treat open_basedir and disabled functions as defense-in-depth, not a substitute for updates and least privilege.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Operate and expand the hosting layout
Adding a new site
- Create a new Unix account and its document root.
- Set ownership and restrictive directory permissions.
- Create a PHP-FPM pool with a unique name and socket.
- Validate and reload PHP-FPM.
- Create a virtual host whose root and socket both reference the new account.
- Validate and reload the web server, then test the domain over HTTPS.
- Apply a user quota and record the policy in your administration notes.
Removing or suspending a site
Disable the virtual host first, then stop accepting traffic before archiving or deleting files. If you only need a temporary suspension, remove the site from the web server’s enabled configuration while retaining the account and quota. Do not delete an account until you have verified that its logs, uploads and application data are no longer required.
Keep a repeatable inventory
Maintain a simple mapping of domain, Unix user, document root, PHP version, pool file, socket, quota and log location. Most multi-site failures are naming or ownership mistakes; an inventory makes audits and migrations substantially safer.
Common failure symptoms
“502 Bad Gateway” or “Connection refused”
Check that PHP-FPM is running, the socket exists, the virtual host names the same socket as the pool, and the web-server account can access the socket. A pool reload may have failed even though the web server reloaded successfully.
“Permission denied” for every PHP request
Confirm that the site user owns the document root, parent directories are traversable, and the socket group and mode allow the web server to connect. Avoid solving this with chmod -R 777; it removes the separation you created.
One domain displays another site’s files
Inspect the selected virtual host, its server_name or hostname match, document root and socket. Test each domain with a unique index file so an accidental default host is obvious.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchAn application breaks after hardening
Review the application error log and identify the exact file path or PHP function it needs. Adjust the narrowest directory permission or PHP policy necessary, then retest. Do not remove all restrictions simply because one plugin expects shell execution.
Quota commands disagree with the filesystem
Run findmnt -no FSTYPE,OPTIONS /home, read the distribution’s quota documentation for that filesystem, and use only its supported mount and accounting method. ext4 and XFS do not accept interchangeable quota options.
When this design is the right fit
Manual per-site users, pools, sockets and quotas suit an administrator who wants transparent configuration and is comfortable maintaining Linux services. It gives each site a clear ownership boundary and predictable controls without hiding the mechanism behind a panel.
It is not equivalent to separate virtual machines or containers, and it does not by itself provide billing, abuse handling, monitoring, backup retention or provider-policy guidance. Add those operational systems separately if you intend to offer hosting to other people. The architecture remains sound only when every new site follows the same account, pool, socket, virtual-host and quota discipline.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Quick Recap
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.




