Oily Rag 1: Dedicated drive USB
|Oily Rag: Be prepared to get your hands dirty.|
Running Uniform Server on a dedicated drive is extremely easy. No need to run as a service, removes the need for a virtual drive. This gives it a slight speed advantage when run on a USB stick or separate partition on a hard drive or even a separate hard drive.
I like to think in terms of operating modes the current download of Uniform Server 3.5-Apollo by default provides standard and service modes with a little tweaking CD and dedicated drive modes are possible.
The following table list the main differences.
The servers can be run on any read/write device (Hard disk, USB stick) from any folder.
The servers can be run as a service on any hard disk, from any folder.
The servers and sites can be run from a CD
The servers can be run on any read/write device (Hard disk, USB stick) from it’s top level (root).
Root relative paths
With the exception of service mode (absolute paths), all paths within Uniform Server are root relative meaning they are referenced from the top of the drive. It’s this in association with a virtual drive that gives Uniform Server its portability.
If Uniform Server is forced to run at root level there is no need to create a virtual drive so long as the drive letter it is running on is passed down to its scripts.
Sounds complicated! All that is required are minor modifications to both the start and stop batch files as follows:
Note 1: This assumes you have applied the complete bug fix! (See summary)
Note 2: These new batch files are independent of the main batch files allowing them to be included as enhancements.
New batch files
The new batch files hdusb_server_start.bat and hdusb_server_stop.bat are based on originals only minor modification are required. These two new batch files are placed in folder *\Uniform Server\udrive this makes installing the servers extremely easy.
Set the current drive letter
rem set current drive letter set Disk=%~d0 set Disk=%Disk:~0,1%
No need to check drive letter in use or create a drive or provide an hint remove these lines:
rem ### Apache not running. Check for drive letter if not set (%1) use default. set Disk=%1 if "%Disk%"=="" set Disk=w rem ### Create the virtual disk, if it fails go to Hint subst %Disk%: "udrive" if errorlevel 1 goto :HINT :HINT CLS echo The disk %Disk% is busy. Use start.bat [disk letter] goto :PAUSE
There is a single line now with an incorrect path remove this udrive\ from the path.
The modified batch file as follows:
@echo off rem working directory current folder pushd %~dp0 rem set current drive letter set Disk=%~d0 set Disk=%Disk:~0,1% rem Command line parameters: rem Server_Start.bat %1 %2 %3 rem %1 = Drive letter to use - Use a dummy drive letter rem %2 = mysql (run MySql server) or nomysql (do not run MySql server) rem %3 = console (Open a command prompt at folder MySQL Bin) rem Note: If using %2 you must set a value for %1 rem Note: If using %3 you must set values for %1 and %2 rem Note: Default, uses drive W, runs the MySQL server and does not a command prompt. rem ### Is Apache running if it is jump to STARTED rem ### First check for system error jump to Pause allows error message to be displayed. home\admin\program\pskill.exe Apache.exe if errorlevel 2 goto :PAUSE if not errorlevel 1 goto :STARTED rem ### Create variables for paths and programs set apachepath=\usr\local\apache2\ set apacheit=%Disk%:%apachepath%bin\Apache.exe -f %apachepath%conf\httpd.conf -d %apachepath%. set programit=%Disk%:\home\admin\program\ set closeit=%programit%close.bat %Disk% rem ### Change path to PHP - Required for running scripts %Disk%: cd \usr\local\php rem ### Provide feedback to user CLS echo The server is working on the disk %Disk%:\ [http/127.0.0.1/apanel/] rem ### Start Apache server start %programit%uniserv.exe "%apacheit%" "%closeit%" rem ### Start Apanel start \home\admin\www\redirect.html rem ### Start MySQL server - skip if requested not to start (%2) if "%2"=="nomysql" goto :NOMYSQL start \usr\local\mysql\bin\mysqld-opt.exe --defaults-file=/usr/local/mysql/bin/my-small.cnf :NOMYSQL rem ### Does user want to run a command prompt, if not END if "%3"=="console" goto :CONSOLE goto :END :CONSOLE rem ### User wants to run a command prompt. Opens in MySQL bin rem ### Allows command clients to be used (musql.exe and mysqladmin.exe ) %Disk%: cd \usr\local\mysql\bin start cmd.exe goto :END :STARTED CLS echo ERROR!!! echo One of the instances of Apache server is started. Use hdusb_server_stop.bat :PAUSE echo . pause :END rem restore original working directory popd
This batch file requires only a path change as follows:
pushd %~dp0 rem Stop Apache indirectly stops MySQL :udrive\home\admin\program\pskill.exe Apache.exe c rem Stop Apache indirectly stops MySQL changed path home\admin\program\pskill.exe Apache.exe c rem ### Check for system error jump to Pause allows error message to be displayed. if errorlevel 2 goto :PAUSE goto :END :PAUSE echo . pause :END rem restore original working directory popd
I have included these two batch files in the combined bug fix they make a niece enhancement to Uniform Server.
How to install
- Extract Uniform Server 3.5-Apollo to a folder of your choice
- Download a copy of the combined bug fix save it to folder Uniform Server
- Run the file downloaded.
- Copy contents of folder udrive to top level of your dedicated drive or USB stick.
Any batch files that are normally placed in folder Uniform Server need to be moved, either to udrive before copying to root alternatively copied directly to root. If these batch files contain udrive in any path remove it the same applies to plugins.