iZend is distributed in several variants. The base software program is called iZend Core or just iZend. The version which is specialized for a blog is called iZend Blog. With a different look, iZend Less integrates the CSS generator Less and the Font Awesome icons. iZend Bootstrap is entirely written with the graphical environment of Bootstrap by Twitter. All versions are installed with the same procedure, only the name of the deposit changes: izend for iZend Core, izendblog for iZend Blog, izendless for iZend Less, izendbs for iZend Bootstrap.
Click on an image to try the initial site
Once iZend is installed, you'll have a fast and functional website looking perfect on a PC, a tablet or a smartphone which you will be able to edit and program at will.
An iZend website is normally hosted by an Apache server with MySQL or PostgreSQL but it can work without a database. Choose this configuration only to put on-line a site with limited resources. Note that iZend can occupy very little space on disk.
IMPORTANT: iZend Blog requires a database.
For a professional
In a professional environment, you will most certainly want a local web server on which you will be able to develop and validate the website. Follow the entire installation procedure with care, particularly the configuration of the Apache virtual site.
For a regular person
If you don't have any particular skills in web technologies, you can simply download the last version of the software, probably iZend Blog, directly copy the whole folder of the site on the disk space of your internet provider and move on to the configuration of the site.
$ sudo apt install apache2
$ sudo apt install mysql-client mysql-server
$ sudo apt install php php-mcrypt php-gd php-curl php-mysql libapache2-mod-php7.0
NOTE: iZend is now validated with PHP 8, PHP 7 and MySQL 8 but still works with PHP 5.3 and MySQL 5.5.
During the installation of MySQL, choose a password for the DB administrator. Write it down.
If the installation of MySQL didn't set a password for the user
root, try this:
$ sudo mysql -u root -p
Press Enter without typing a password.
Since version 8 of MySQL, enter the following order:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
For a previous version of MySQL, enter the following orders:
mysql> USE mysql;
mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('password');
mysql> FLUSH PRIVILEGES;
In another window, try the command
mysql -u root -p and enter the new password.
If access is granted, enter
quit to exit.
Add your account to the group
$ sudo adduser izend www-data
NOTE: replace izend by your account name.
Install phpMyAdmin for more comfort:
$ sudo apt install phpmyadmin
During the installation, use the arrows to choose to reconfigure Apache, press the space bar then Enter. Use the password you have given to the DB administrator when configuring MySQL.
Check that everything is in place by launching phpMyAdmin:
enter localhost/phpmyadmin in the address bar of your navigator
then identify yourself with the name
root and the password you have assigned to the DB administor.
Adminer is an alternative to phpMyAdmin:
$ sudo mkdir /usr/share/adminer
$ sudo wget "http://www.adminer.org/latest.php" -O /usr/share/adminer/latest.php
$ sudo ln -s /usr/share/adminer/latest.php /usr/share/adminer/adminer.php
$ echo "Alias /adminer.php /usr/share/adminer/adminer.php" | sudo tee /etc/apache2/conf-available/adminer.conf
$ sudo a2enconf adminer
$ sudo service apache2 reload
Enter localhost/adminer in the address bar of your navigator.
To install PostgreSQL as an alternative to MySQL:
$ sudo apt install postgresql
The installation procedure has created a user account
postgres and a group
This account is associated to the administrator of the DB:
$ sudo -s
# su - postgres
Type "help" for help.
Protect the DB administrator's account with a password:
postgres=# ALTER USER postgres with encrypted password 'your_password';
Restart the server:
$ sudo service postgresql restart
Install phpPgAdmin for more comfort:
$ sudo apt install phppgadmin
Edit the file /etc/apache2/conf-available/phppgadmin.conf to comment out the order
Make sure this configuration file is enabled:
$ sudo a2enconf phppgadmin
Edit the file /etc/phppgadmin/config.inc.php and modify the following parameters:
$conf['extra_login_security'] = false;
$conf['show_advanced'] = true;
To connect to the DB with Adminer, edit the file /etc/postgresql/*/main/pg_hba.conf :
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Restart the server :
$ sudo service postgresql restart
IMPORTANT: When configuring the connector to the DB, to access a local PostgreSQL server, use the IP address
127.0.0.1 instead of
Install Xampp for Windows in the folder C:\xampp.
Enter localhost in the address bar of your navigator.
IMPORTANT: You must protect the root account of the DB by a password.
Click on the tab phpMyAdmin and in User accounts, add the same password to all the root accounts. Don't forget it.
Edit the file C:\xampp\phpMyAdmin\config.inc.php and set the configuration parameter
$cfg['Servers'][$i]['auth_type'] to the value
Restart the MySQL and the Apache servers from the Xampp console.
Check if you can identify as an administrator of the DB with phpMyAdmin.
iZend relies on Git to distribute new releases. With Git, you will be able to modify the original code, which you are encouraged to do, while tracking changes in the official repository, and upgrading your website will be amazingly simple and robust.
IMPORTANT: You can directly download an iZend archive from GitHub but if you edit the code, updates will be more difficult.
$ sudo apt install git-core
Install Git for Windows.
Run Git Bash from the shortcut on the desk to start the command processor and run
git in a
To run git in the command processor of Windows, create a file called env.bat in your home folder with the following content:
Adds the folder with the
git command to the PATH variable.
If you have a 64-bit PC, replace
The HOME variable is useful to programs ported from Unix, like
Create a shortcut in the same folder. Configure the target so that it executes the order
%comspec% /k env.bat. This line launches the command processor and tells it to start by running the content of the file env.bat.
Rename the shortcut to Git Prompt.
If you prefer a graphical interface, you can also install TortoiseGit.
Initialize the directory of your site:
$ git init /var/www/sitename.net
$ cd /var/www/sitename.net
NOTE: Xampp puts the documents in the folder htdocs of the installation folder, e.g. C:\xampp\htdocs. Replace /var/www/sitename.net by C:\xampp\htdocs\sitename.net.
IMPORTANT: With Git Bash, you are in a Linux like command processor. Enter the following commands:
$ git init /c/xampp/htdocs/sitename.net
$ cd /c/xampp/htdocs/sitename.net
NOTE: Don't type the $ which is the prompt character of the command processor.
Declare your identity:
$ git config user.name yourname
$ git config user.email email@example.com
Pull out the current version of iZend Core, iZend Blog, iZend Less or iZend Bootstrap in a branch called izend:
$ git remote add izend https://github.com/izend/izend
$ git remote add izend https://github.com/izend/izendblog
$ git remote add izend https://github.com/izend/izendless
$ git remote add izend https://github.com/izend/izendbs
$ git fetch izend
$ git checkout -b izend izend/master
To pull out iZend Blog, iZend Less or iZend Bootstrap in a branch called respectively izendblog, izendless or izendbs:
$ git remote add izendless https://github.com/izend/izendless
$ git fetch izendless
$ git checkout -b izendless izendless/master
Go to your master branch:
$ git checkout -b master
$ git branch
Make sure the Apache server is allowed to read all the files and to write the configuration files includes/config.inc, includes/db.inc and includes/aliases.inc, the directories log and avatars and the file sitemap.xml:
$ cd /var/www/sitename.net
$ sudo chgrp -R www-data .
$ find . -type d -print0 | xargs -0 chmod 775
$ find . -type f -print0 | xargs -0 chmod 664
NOTE: The name of the execution group of the server
www-data is defined by the Group directive, generally in the file /etc/apache2/apache2.conf.
Protect the configuration files:
$ cd /var/www/sitename.net/includes
$ chmod 660 config.inc db.inc aliases.inc paypal.inc payline.inc
Create a link to the file /etc/apache2/mods_available/rewrite.load in the directory /etc/apache2/mods_enabled:
$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/rewrite.load .
Under Windows, check that the
rewrite module is activated by Apache.
Look for the following line in httpd.conf:
LoadModule rewrite_module modules/mod_rewrite.so
Add a file called sitename.net.conf in the directory /etc/apache2/sites-available with the following content:
## ServerAlias sitename.net
## php_admin_value open_basedir /var/www/sitename.net
## php_admin_value upload_tmp_dir /var/www/sitename.net/tmp
Require all granted
IMPORTANT: Since Apache 2.4, the name of the configuration file of a virtual host must end with .conf and you must add the directive
Require all granted.
NOTE: The directive
php_admin_value open_basedir limits the access to files in PHP to the directory of the site.
php_admin_value upload_tmp_dir defines the directory where files which are uploaded are copied temporarily.
Create the directory /var/www/sitename.net/tmp and make it writable by the Apache group:
$ mkdir /var/www/sitename.net/tmp
$ chmod g+sw /var/www/sitename.net/tmp
$ sudo chgrp www-data /var/www/sitename.net/tmp
Create a link to the file /etc/apache2/sites-available/sitename.net in the directory /etc/apache2/sites-enabled:
$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/sitename.net.conf .
$ sudo /etc/init.d/apache2 reload
NOTE: Xampp defines the virtual sites in the file httpd-vhosts.conf in the folder apache\conf\extra of its installation folder, e.g. C:\xampp\apache\conf\extra. Copy the directives VirtualHost and Directory in this file. Replace /var/www/ by C:\xampp\htdocs. Don't forget to create the directory C:\xampp\htdocs\sitename.net\tmp. Restart Apache from the control panel.
IMPORTANT: Make sure that the directive
NameVirtualHost *:80 is defined in the file /etc/apache2/ports.conf under Linux or in the file C:\xampp\apache\conf\extra\http-vhosts.conf forXampp.
If you have installed Apache 2.4, this directive is no longer necessary.
Edit the configuration file of PHP, /etc/php/7.4/apache2/php.ini under Linux, C:\xampp\php\php.ini for Xampp, to define the name of the mail server of your internet provider.
NOTE: If you have a local mail server, specify
; For Win32 only.
SMTP = smtp.gmail.com
smtp_port = 25
; For Win32 only.
;sendmail_from = postmaster@localhost
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off
Add the following line in /etc/hosts:
NOTE: Windows keeps the hosts file in the folder C:\Windows\System32\drivers\etc.
If you have a database server, add an alias for its host system:
127.0.0.1 local.sitename.net dbhostname
NOTE: In order to facilitate the synchronization of your development site with the production site, the local DB server and the on-line DB server are designated by the same host name.
Start your web navigator and enter
local.sitename.net in the address bar to run the configurator.
In case of a problem, check the following points:
- Apache is allowed to read all the directories and all the files in /var/www/sitename.net.
rewritemodule is properly loaded by Apache.
- The host name local.sitename.net has the IP address 127.0.0.1.
- The host name local.sitename.net is properly listed by the command
sudo apache2ctl -S.
To check the Apache configuration, add a file called phpinfo.php with the following content in the document directory of the server:
localhost/phpinfo.php in the address bar of your navigator and look for the list of modules loaded by Apache.
ping command to check if the host name local.sitename.net is resolved to the local IP address:
$ ping local.sitename.net
IMPORTANT: If the website isn't configured in HTTPS, edit the file includes/settings.inc and set the parameter
'Lax' or leave it to
Set this parameter to
'None; Secure' only if the connection is secured.
Secure blocks the exchange of the session cookie if the connection isn't encrypted.
Without a session, all the forms which use a token, like the installation form, will not work.
You are now ready to create the initial website. Enter local.sitename.net in the address bar of your navigator. The Installation page takes care of all the details. Read the introduction and prepare the necessary information:
- The site name without a
wwww.prefix such as
- The email address of the person in charge of the website such as
- The default language of the website such as
- The manager of the database such as
- The name of the database such as
sitenamedb1. If you want to dedicate a specific database to the website, you will need the name and the password of the user allowed to create a database.
- The host name of the database server of the production site.
Use the name you have associated to
local.sitename.netin the file /etc/hosts.
- The user name and the password used to access the database.
- The prefix used to uniquely name the tables in the database such as
- The name and the password of the administrator of the website. This special user with number 1 has all the privileges.
IMPORTANT: Use the same database host name, user name and password for your development site and the production site.
Fill in the form and press Configure. The configurator writes the configuration files of the website and offers to load the home page.
In case of error, check that the database connector in the file includes/db.inc matches the expected configuration.
$db_prefix = 'sitename_';
$db_debug = false;
Alternatively, check the tables
db in the
If the configurator isn't allowed to modify some files, an error message is displayed followed by some instructions to correct the problem.
The server isn't allowed to modify the following files in the folder /var/www/sitename.net:
To modify the access rights, try the following command:
$ cd /var/www/sitename.net; chmod a+w includes/aliases.inc logos/sitelogo.png sitemap.xml avatars log
Commit this initial version:
$ git status
$ git add --all
$ git commit -m"Initial website by iZend"
$ git status
$ git log --graph --oneline
Go to the
$ git branch izend
Pull out the current version of iZend:
$ git pull
Return to the master branch:
$ git branch master
izend branch with the
$ git merge --no-commit izend
Solve possible conflicts and commit this version of your site up-to-date with iZend:
$ git commit -m"Merges izend/master"
If the site uses a new DB, create it on the host system with an
If the site connects to the DB with a new user, create it in the table
user of the DB
mysql. Set the field
localhost and the fields
Password to the values specified during the configuration - see the file includes/db.inc.
Don't give any privileges to the user. Only
root has the right to execute all operations on all the databases.
NOTE: Decode the password in the URL with the function
IMPORTANT: Remember to encode the field
password with the PASSWORD function or the password which is sent during the connection, which is always encrypted, will not match.
Add an entry in the table
db of the DB
mysql with the field
Host set to
localhost, the fields
User to the values specified during the configuration and the privileges
Export all the tables of the DB of your local site and import them in the DB of the host system.
Copy the directory of your local site on the host system of your site on-line. If the parameters for the DB connection are different, edit the file includes/db.inc on the host system.