Installing Xoops on 5.0-Nano

Revision as of 05:52, 11 October 2012 by Olajideolaolorun (talk | contribs) (Text replace - "sourceforge.net/projects/miniserver" to "sourceforge.net/projects/uniformserver")

Installing Xoops on 5-Nano Series

Introduction

This step-by-step guide shows how to install Xoops on Uniform Server V5-Nano and resolve a portability issue.

After installation you can optionally move the servers to non-standard ports allowing UniServer to coexist with a server running on standard ports.

Pre-Installation

Install Uniform server

  1. A) Create a new folder named xoops_b (Can be any name)
  2. Extract a new copy of Uniform Server V5-Nano to this folder

Download Xoops

  1. B) Create a new folder xoops_a (Can be any name its only a temporary folder)
  2. Download the latest version (xoops-2.4.2.zip) of Xoops from www.xoops.org
  3. Copy the file dowloaded (xoops-2.4.2.zip) to xoops_a
  4. Unzip xoops-2.4.2.zip into this folder.

Copy files to Uniform Server

  1. C) Expand the folder xoops-2.4.2
  2. D) Copy folder htdocs to Uniform Servers's root folder www
  3. E) Rename the copied folder htdocs to xoops (can be any name)
  4. E1) Expand this folder (xoops)
  5. F) Move (do not copy) the two folders:
    xoops_data and xoops_lib to UniServer's home folder
  6. While in folder xoops remove the read only attribute for the following folders:
    (right click properties uncheck read only box click apply)
  • G1) uploads/
  • G2) cache/
  • G3) templates_c/

Still in folder xoops locate file mainfile.php and mainfile.dist.php check they are writeable if not remove read only atribute.

  1. H) Expand folder "home" remove the read-only attribute
    for the following folder and all its sub-folders:
  • xoops_data/
  • xoops_data/configs/
  • xoops_data/caches/
  • xoops_data/caches/xoops_cache/
  • xoops_data/caches/smarty_cache/
  • xoops_data/caches/smarty_compile/

 

Top

Create a Xoops Database

Creating the Xoops database is straight forward, tables are automatically inserted during installation

  1. Start Uniform Server
  2. Left click tray icon > click phpMyAdmin - This opens phpMyAdmin in your browser
  3. We want to create a new database. Name it xoops (or something easy to remember if you change name make sure you use this name during installation.)
  4. Click on Create to create the database


Note:

  • You can start phpMyAdmin from Apanel, start Apanel by typing http://localhost/apanel/ into your browser address bar.
  • From Apanel click on the phpMyAdmin link. (left menu under tools)

Top

Install Xoops

  1. Assumes Uniform Server is running. Xoops installation is mostly a click through exercise.
  2. Type the following into a browser: http://localhost/xoops/
  3. Choose your language: Click Next
  4. Welcome to the XOOPS installation assistant: Click Next
  5. Checking your server configuration: Click Next
  6. Paths settings: This will fail on xoops_data and xoops_lib these were moved for security.
  • Change the path from: C:/xoops_b/UniServer/www/xoops/xoops_data to C:/xoops_b/UniServer/home/xoops_data
    (Note when you click in the next text box the above path will be found)
  • Change path from: C:/xoops_b/UniServer/www/xoops/xoops_lib to C:/xoops_b/UniServer/home/xoops_lib
    (Click in one of the other text boxes the path will be found)
  • Website location (URL) http://localhost/xoops no need to change
  • Click Next
  1. Database connection: Enter root for user name and root for password click Next
  2. Database configuration:
    • For database name enter xoops
    • Table prefix delete xf55
    • Database character leave default
    • Database collation leave default
    • click Next
  3. Saving your system configuration: Click Next
  4. Database tables creation: Click Next
  5. Please enter your initial settings:
    • Admin login: admin
    • Admin e-mail: fred@someone.com -- use a real e-mail address
    • Admin password: root66 -- use a real password (red indicates weak however is accepted)
    • Confirm password: root66
    • Click Next
  6. Saving your settings to the database: Click Next
  7. Site configuration:
    • Accept default
    • Click Next
  8. Choose the default theme
    • Default OK - change as required
    • Click Next
  9. Modules installation
    • All defaults no OK
    • Click Next
  10. Modules installation Click Next
  11. Welcome to your XOOPS site:
    • You can now access the home page of your site." -- don't click the link.
    • Click Next
  12. You are currently logged in as admin
    • Make any changes
    • Click Log out

Note 1:

You can access your site by typing the following into a browser: http://localhost/xoops/

Top

Portability

Xoops’s configuration file UniServer\www\xoops\mainfile.php contains various functions to define paths.

These are set during installation. There are three variables that contain absolute paths:

  • XOOPS_PATH
  • XOOPS_VAR_PATH
  • XOOPS_TRUST_PATH

Absolute paths are not consistent with portability these require converting to dynamic absolute paths (Updated when the server is moved).

Edit file C:\xoops_b\UniServer\www\xoops\mainfile.php (you will need to remove read only attribute)

Locate this section of code:

 // Physical path to the XOOPS documents (served) directory WITHOUT trailing slash
 define( 'XOOPS_ROOT_PATH', 'C:/xoops_b/UniServer/www/xoops' );

 // For forward compatibility
 // Physical path to the XOOPS library directory WITHOUT trailing slash
 define( 'XOOPS_PATH', 'C:/xoops_b/UniServer/home/xoops_lib' );
 // Physical path to the XOOPS datafiles (writable) directory WITHOUT trailing slash
 define( 'XOOPS_VAR_PATH', 'C:/xoops_b/UniServer/home/xoops_data' );
 // Alias of XOOPS_PATH, for compatibility, temporary solution
 define("XOOPS_TRUST_PATH", XOOPS_PATH);

Replace with:

    // XOOPS Physical Paths

// ===  Set base path ========================================================
$path_array = explode("www", dirname( __FILE__ ));  // Split pat at www
$base           = "$path_array[0]";            // absolute path to ..UniServer/
// =====================================================  End Set base path ===    

    // Physical path to the XOOPS documents (served) directory WITHOUT trailing slash
    define( 'XOOPS_ROOT_PATH', $base.'/www/xoops' );

    // For forward compatibility
    // Physical path to the XOOPS library directory WITHOUT trailing slash
    define( 'XOOPS_PATH', $base.'/home/xoops_lib' );
    // Physical path to the XOOPS datafiles (writable) directory WITHOUT trailing slash
    define( 'XOOPS_VAR_PATH', $base.'/home/xoops_data' );
    // Alias of XOOPS_PATH, for compatibility, temporary solution
    define("XOOPS_TRUST_PATH", XOOPS_PATH);


Note 1: After saving the file set it’s file attribute back to read only.

Note 2: Copy folder UniServer and all its content to a USB stick and you have fully portable Xoops server.

Top

Move Servers - Optional

One of Uniform Server’s unique features is the capability to run more than one complete server on the same PC. When running a server from a USB memory stick you can use this to great advantage and prevent server clashes. You will have noticed UniTray’s icon displays one (meaning standard ports). Moving UniServer increments this digit and so on for each server move. In reality it’s not just a port change but a complete server update, running server status displays the server characteristics.

Move Servers:

  1. Assumes you have installed Xoops as above and made the modifications for portability.
  2. Stop all running Uniform Servers
  3. Start UniTray, in folder UniServer double click on Start.exe tray icon created.
  4. Move servers, Left click tray icon > Advanced > click Move Servers multi-server operation.
  5. In the pop-up window at all prompts press enter to accept defaults.
  6. The tray icon will display 2, if you already use a server with this number repeat steps 4 and 5 each server must have a unique number.
  • Before proceeding you need to use the new server ports.
  • To find these: Left click tray icon > Server Status

I moved the servers to icon 3 hence Apache port = 82 and MySQL port = 3308

These new values need to be changed in Xoops configuration file.

Edit file C:\xoops_b\UniServer\www\xoops\mainfile.php (you will need to remove read only attribute)

Change this line:

From:

 // XOOPS Virtual Path (URL)
 // Virtual path to your main XOOPS directory WITHOUT trailing slash
 // Example: define( 'XOOPS_URL', 'http://localhost/xoops' );
 define( 'XOOPS_URL', 'http://localhost/xoops' );

To:

 // XOOPS Virtual Path (URL)
 // Virtual path to your main XOOPS directory WITHOUT trailing slash
 // Example: define( 'XOOPS_URL', 'http://localhost/xoops' );
 define( 'XOOPS_URL', 'http://localhost:82/xoops' );


Change this line:

From:

 // Database Hostname
 // Hostname of the database server. If you are unsure, "localhost" works in most cases.
 define( 'XOOPS_DB_HOST', 'localhost' );

To:

 // Database Hostname
 // Hostname of the database server. If you are unsure, "localhost" works in most cases.
 define( 'XOOPS_DB_HOST', 'localhost:3308' );

Note 1: After saving the file set it’s file attribute back to read only.

Note 2: Copy folder UniServer and all its content to a USB stick.

Note 3: To access Xoops remember to add the port number in the url

Foe example: Type this into a browser: http://localhost:82/xoops/

You now have a fully portable Xoops server that will run alongside an existing hosts server.

Top

Plugin

The above instructions are generic allowing you to install the latest version of Xoops.

If you prefer a click and go solution go to SourceForge

  • Under Plugins
  • Navigate to sub-folder Uniform Server 5-Nano Plugins
  • Download file V55_Xoops_2_4_2a.exe

Save this to folder UniServer, to install double click on file. Xoops is pre-configured and ready to go. Check out the read me file for latest information.

Note: This plugin is intended to quickly get Xoops up and running allowing you to explore the software. If you intend running a production server delete the folders installed and perform a manual install this allows you to tailor Xoops and include any missing modules.

Plugin modifications

The plugin includes changes for absolution paths and automatic port detection

The following section was added:

// === Set base path ==========================================================
$path_array = explode("www", dirname( __FILE__ ));  // Split pat at www
$base           = "$path_array[0]";            // absolute path to ..UniServer/
// ====================================================== End Set base path ===

// === Get MYSQL port =========================================================
// Use port from configuration file - because user can change this file 
$file_conf  = $base.'usr\\local\\mysql\\my.ini'; // Config file 

if ($filearray=file($file_conf)) {              // read file into array
 foreach ($filearray as $txt) {                 // scan array for port
  if(preg_match("/^\s*port\s*=\s*(\d+)/", $txt,$match)){ // check save matches 
   $mysql_port =  $match[1];                    // match found save port number 
   break;                                       // give up nothing else to do
  }
 }
}
else {                                      // failed to read file
 echo "Cannot read the file";
}
// ===================================================== END Get MySQL Port ===

// === Get Apache port ========================================================
// Use port from configuration file - because user can change this file 
$file_conf  = $base.'usr\\local\\apache2\\conf\\httpd.conf'; // Config file 

if ($filearray=file($file_conf)) {              // read file into array
 foreach ($filearray as $txt) {                 // scan array for port
  if(preg_match("/^\s*Listen\s*(\d+)/", $txt,$match)){ // check save matches 
   $apache_port =  $match[1];                    // match found save port number 
   break;                                       // give up nothing else to do
  }
 }
}
else {                                      // failed to read file
 echo "Cannot read the file";
}
// ======================================================= Get Apache Port ===

The following section was changed as shown:

    // XOOPS Physical Paths

    // Physical path to the XOOPS documents (served) directory WITHOUT trailing slash
    define( 'XOOPS_ROOT_PATH', $base.'www/xoops' );

    // For forward compatibility
    // Physical path to the XOOPS library directory WITHOUT trailing slash
    define( 'XOOPS_PATH', $base.'home/xoops_lib' );
    // Physical path to the XOOPS datafiles (writable) directory WITHOUT trailing slash
    define( 'XOOPS_VAR_PATH', $base.'home/xoops_data' );
    // Alias of XOOPS_PATH, for compatibility, temporary solution
    define("XOOPS_TRUST_PATH", XOOPS_PATH);

The following section was changed as shown:

// XOOPS Virtual Path (URL)
// Virtual path to your main XOOPS directory WITHOUT trailing slash
// Example: define('XOOPS_URL', 'http://localhost/xoops');
define('XOOPS_URL', "http://localhost:$apache_port/xoops");

The following section was changed as shown:

// Database Hostname
// Hostname of the database server. If you are unsure, "localhost" works in most cases.
define('XOOPS_DB_HOST', "localhost:$mysql_port");


Top

MySQL Security

The above installation guide and associated downloadable plugin are intended to get the application up and running purely for testing.

If you are intending to put the application on line make sure to read any security advice provided with the application and check providers web site.

More impotently the above installation is an extreme security risk if put online as is. Its imperative you secure the MySQL server before putting your servers online.

Please read the following page MySQL Security and restrict privileges to any user that has connection access to your server.

Top

Conclusion

From the above you have seen how easy it is to install Xoops and make it fully portable.

Top