====== EPP-DRS Installation and Configuration ====== #intro_start# This document is a detailed guide to [[http://epp-drs.com|EPP-DRS]] installation, configuration and customization.\\ #intro_end#\\ #toc# ===== Introduction ===== EPP-DRS (EPP Domain Registration System) is a the most powerfull domain selling and management system in the world. It allows you to run your own full-cycle domain registration service, with ability for your clients to register, renew, transfer domain names. System web interface consists of 3 areas: Domain Order Wizard, Registrant Control Panel and Registrar Control Panel. The system communicates with various registries and SRS via [[Currently available modules|modules]] and is handling over 50 domain extensions (and counting). API allows developers to easily build and plug custom modules. Software is made by registrars for registrars - it's a result of tigh collaboration with respected domain business players. Please visit [[http://epp-drs.com|EPP-DRS product website]] for latest information and updates. ===== Pricing and licensing ===== For latest pricing and licensing options, please check [[http://epp-drs.com|EPP-DRS website]] ==== System requirements ==== To quickly check either your server meets EPP-DRS system requirements, use [[http://downloads.epp-drs.com/EPP-DRS.TestEnvironment.zip|this script]]\\ Simply upload php file on your host and open it in browser. It should find most of major issues. EPP-DRS requires a webserver and can run on any posix-compatible (Linux, BSD etc.) operating system, as long as the following requirements are met: * PHP 5.2.5 or higher (5.2.6 preferred), * MySQL 4.1 or higher (MySQL 5.0 or higher preferred) === Required PHP configuration options === * PHP must be able to execute command-line programs, thus safe_mode must be set to Off * register_globals must be Off === Required PHP extensions === * [[http://php.net/mysqli|mysqli]] * [[http://www.zend.com/products/zend_optimizer|Zend Optimizer]] 3.3 or higher * [[http://php.net/curl|cURL + SSL]] * [[http://php.net/curl|Sockets (--enable-sockets) with SSL support (--with-openssl)]] * [[http://php.net/gettext|GetText]] * [[http://php.net/SimpleXML|SimpleXML]] * [[http://php.net/manual/en/xsl.installation.php|XSL]] (EPP-DRS v3 and higher) * [[http://php.net/mcrypt|mcrypt]] * [[http://php.net/mhash|mhash]] * [[http://php.net/pcntl|pcntl]] * [[http://php.net/posix|posix]] * [[http://php.net/ssh2|ssh2]] (Only if you are going to use Managed DNS and domain parking) * [[http://php.net/dom|DOM]] (EPP-DRS v3 and higher) === Module-specific requirements === Some modules may require additional components on your server. See [[Module-Specific-Requirements|Module-specific requirements]] ===== Installation ===== ==== Installing from tar.gz package ==== :!: If you think that you do not have enough skills to perform installation, Webta provides an installation service for its customers for a flat fee. Installation service is also included in premium support package. See [[http://webta.net/docs/epp-drs/EPP-DRS-Lifecycle-Support-Policy.pdf|Support Policy]] and product pricing for more details. Before you proceed to installation, you must know paths to some files on your server. \\ One of these is a PHP command-line binary (CLI), which is needed to execute cronjobs. The following shell commands will help you to find PHP binary on your server: which php whereis php You may also make sure that you are using the right binary by checking it's version: /path/to/php -v === Copy files === :!: Note: If you are using FTP to upload files, make sure that you are uploading in binary mode! Copy contents of app folder on your webserver. \\ Only app/www folder must be readable by webserver, all other folders must be underneath web root. \\ Hereinafter, let's assume that: * you are installing your copy in **/home/srsbox/** folder * your domain is **http://srsbox.com** * apache is configured so **http://srsbox.com/index.php** maps to **/home/srsbox/www/index.php** * the path to your your PHP command-line birnary is **/usr/bin/php** In this case, you will have the following folder structure at the end: /home/srsbox/cron /home/srsbox/etc /home/srsbox/lang /home/srsbox/modules /home/srsbox/src /home/srsbox/templates /home/srsbox/www === Set folders permissions === Set permissions on **cache** folder (and subfolders) to 777 (world-writable), On Unix systems you can run in console: sh preinstall.sh === Create database === - Create new MySQL database - Import database dump from sql/database.sql file. - Edit database connection details in etc/config.ini file. The contents of config.ini file must look like this: [database] dsn="mysqli://USER:PASSWORD@HOST/DBNAME?persist&fetchmode=ADODB_FETCH_ASSOC#pear:extend:date:transaction" where USER - database user, \\ PASSWORD - password, \\ DBNAME - database name. === Set Cron jobs === For system to work properly, it needs to run a few tasks periodicaly.\\ EPP-DRS has a single cron/cron.php file that must be executed with various command-line switches.\\ The following recurring tasks must be sheduled: ^ Switch ^ Frequency ^ Doing what ^ | --Autoupdate | Hourly | Checks for available software updates. If update is approved by admin, installs it | | --LogRotate | Nightly | Cleans old entries in logs database table | | --CleanZombyUsers | Weekly | Deletes users that don't have active domains or paid invoices | | --DNSPush | Hourly | Commits DNS zones updates to al nameservers. This is for Managed DNS feature | | --PollQueueEvent | Every 5 minutes | Retrieves messages from poll message queue on registry server and calls appropriate handlers | | --Renew | Nightly | Sends notifications to registrants about expiration of their domains. Issues invoices for renew | Sample crontab file would look like: 16 * * * * /usr/bin/php -q /home/srsbox/cron/cron.php --Autoupdate 34 3 * * * /usr/bin/php -q /home/srsbox/cron/cron.php --LogRotate 34 4 * * 0 /usr/bin/php -q /home/srsbox/cron.php --CleanZombyUsers 12 5 * * * /usr/bin/php -q /home/srsbox/cron.php --DNSPush */2 * * * * /usr/bin/php -q /home/srsbox/cron.php --PollQueueEvent 18 2 * * * /usr/bin/php -q /home/srsbox/cron.php --Renew :!: Cronjobs must be executed under real system user. The user must have access for overwriting all EPP-DRS files, create new files and directories, and [[#Configuring EPP-DRS|execute ''tar'' command-line tool]]. Installation complete! You may now proceed to configuration. ==== Installing VMWare Virtual Appliance ==== [[http://epp-drs.com/|EPP-DRS]] is also distributed as a VMWare virtual appliance.\\ It's a VMWare virtual machine with 512 MB RAM and 1.5 GB of disk space, running Ubuntu JEOS. EPP-DRS is already installed and fully configured (installation path is /var/www) [[Installing EPP-DRS as VMWare Virtual Appliance]] ===== Configuration ===== ==== EPP-DRS Configuration ==== === Obtaining and installing license file === Before you can proceed to EPP-DRS configuration, you must install a trial license file that was send to you after purchase. EPP-DRS uses [[http://zend.com/products/zend_optimizer|Zend Optimizer]] internal licensing. To install license, follow these simple steps: - Save license.zl somewhere on your server. /etc/epp-drs/ folder would be a good choice. - Open your php.ini file and add the following line into it: zend_optimizer.license_path="/etc/epp-drs/" - Restart web server. \\ To obtain a permanent license, you will need to send an email to licensing@epp-drs.com and include your Zend HostID.\\ To obtain HostID, you need to log in to your EPP-DRS Registrar Control Panel (http://srsbox/admin) with default username and password (admin/admin) and check ''Settings=>Product info'' page. ---- {{obtaining-hostid.gif|}} ---- Make sure to delete a trial license before installing permanent one. === Core settings === You must change few essential settings of your system immediately after installation.\\ Log in to Registrar CP (/admin) using default username/password (admin/admin) and go to **Settings ยป Core settings**\\ == Change default admin password == == Change E-Mail delivery settings == Sample SMTP connection setting should look like: ''info+srsbox'':''password''@''mail.srsbox.com'':''25'' ==Service owner email settings== These are email address and name (as it will appear in To: field of service owner (admin)). ==Registry options== These are your default nameservers that will be assiged to newly registered domains. == Binary tools == You must properly set paths to tar and zendid command-line tools. \\ Setting correct path to tar is important because it is used to extract updates.\\ If zendid will be not found in specified path, EPP-DRS will try to use bundled zendid binary (that is distributed with EPP-DRS). Bundled binaries for different platforms reside in ''bin'' folder. Basic configuration is now complete (athough it is a good idea to check through all remaining settings). You can now proceed to modules configuration. ==== Registry modules Configuration ==== See the full list of [[currently available modules]] ==== Payment modules Configuration ==== Please follow instructions in inline help for each specific module. Make sure that you have inline help enabled. ---- {{inlinehelp.gif|}} ---- ==== Managed DNS Configuration ==== Managed DNS allows you to provide DNS hosting for your clients. Your clients are able to edit DNS records for their domains in Client CP.\\ See [[Managed DNS Configuration]] for configuration guide. ===== Keeping EPP-DRS up-to-date ===== Assuming that you have correctly configured all cronjobs, you do not need to do anything to keep your EPP-DRS copy up-to-date. It updates itself periodically via Webta proprietary auto-update system. Each time new update is published, you will receive email notification. You then need to log in, revise an update, probably backup your files and approve update. ===== Design customization and localization ===== ==== Customizing look and feel ==== EPP-DRS look and feel is fully configurable. If you do not like the slick and user-friendly default EPP-DRS design, you may change all aspects of presentation by simply editing HTML templates ([[http://smarty.php.net/|Smarty]]), CSS files, images and even JavaScript files. You do not have to make any edits in PHP files, since no HTML is generated or prepared inside PHP code. === HTML Templates and CSS styles === All templates are in ''templates'' folder, with .tpl file extension. In previous versions, we had several copies of all templates for each language. Since EPP-DRS 600, there is only one copy of templates, and they are translateable via language files. :!: Strings that are surrounded with {t}{/t} tag, should not be changed. These are language-dependent strings that will be automatically translated on the fly (see next topic for translation tips). CSS stylesheets can be found in ''www/css'' (for Order Wizard), ''www/client/css'' (for Registrant Control Panel), ''www/admin/css'' (for Registrar Control Panel). ==== Translating ==== EPP-DRS platform is designed to support multiple languages. All source codes and templates are being developed with the use of [[http://www.gnu.org/software/gettext/|gettext]] To translate a system on a new language follow these steps: === Essentials === - Copy ''lang\en_US\'' folder to ''lang\ll_CC\'', where ll is a two-letter language code, according to [[http://www.w3.org/WAI/ER/IG/ert/iso639.htm|ISO 639 standard]], CC is two-letter country code, according to [[http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm|ISO 3166 standard]]. You can find [[a list of major locales]] \\ \\ - Translate strings in ''LC_MESSAGES/default.po'' file, - Generate a binary ''LC_MESSAGES/default.mo'' file. We recommend using [[http://www.poedit.net/|poedit]] for this. - ''Create www/images/lang/ll_CC.gif'' - This is used as a flag icon for your locale. You can find templates for flag icons in [[EPP-DRS SDK]], inside ''resources/www/images/lang'' folder.\\ \\ .po and .mo files must be readable by web server (''chmod +r''). If you are using FTP, .mo file must be uploaded in binary mode. \\ \\ :!: The above steps **must** be performed to make your language be recognized by the system. === Translating and customizing emails === Each email template is a simple text file with ''.eml'' extension. The format of the file is the following: [settings priority=3 charset=UTF-8 type=html] [subject]This is a subject[/subject] The body of the message. ''[settings]'' section is optional and each setting is optional. priority: 1 = High, 3 = Normal, 5 = Low. Default: 3\\ charset: charset of the message. Default: ''UTF-8''\\ type: ''html'' or ''text'' Default: ''text''\\ \\ === Optional actions === - Translate email templates in ''email_templates'' folder. You may now go to Registrar Control Panel -> Settings -> Languages and see if the system recognises new language. If it was recognized fully, new flag icon will appear at the top of order wizard pages. When visitor clicks on a flag icon, information about selected language is stored in a cookie on his computer. === Separating static resources for each language === What if you have images with text on them, like graphical buttons, and want them to be translated too? www/.htaccess contains a set of [[http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html|mod_rewrite]] rules that will solve this problem. Say you have two languages enabled in Registrant CP - English (en_US) and Russian (ru_RU). You have two copies of button.png - one with engish text on it and one with russian. You create two subfolders inside images folder - ''en_US'' and ''ru_RU'' (these folder names are the same as folder names in ''lang'' folder), and place your button copies in each folder, respectively. Now, if your visitor, who previously clicked on russian flag icon, will request http://srsbox.com/images/button.png, image from ''images/ru_RU/button.png'' will be loaded.\\ By default, if no cookies were set, ''www/images/button.png'' will be returned. Thus it's a good idea to have a 3rd, default copy in images folder.\\ All these rules apply to ''www/client/images'' as well. You can also localize CSS files using the same approach (applies to ''www/css'' and 'www/client/css'). \\ === Adding custom text to templates === If you need some text added to templates, you have two possible ways to achieve this: - Good for massive additions. - Use ''bin/tsmarty2c.php'' from command line to scan templates and generate a .c file. php bin/tsmarty2c.php ./templates > smarty.c - Then generate a .PO a .c file using this command: xgettext -j --no-location --language=C --omit-header --no-wrap -o "default.po" "smarty.c" - Good for small additions. Use {$smarty.const.LOCALE} variable inside template to determine the current user's language. Then copy your text for each language: {if $smarty.const.LOCALE == "en_US"} English text. {elseif $smarty.const.LOCALE == "el_GR"} Greek text. {/if} EPP-DRS v4 will support web-based language creation and translation.