Installing eZ Publish on Windows
The requirements for doing a normal installation must be met! Read the "Requirements for doing a normal installation" section first. Proceed only if you have access to a Windows based system with Apache, PHP, MySQL or PostgreSQL already installed and running. (Do not use Apache 2.x for Windows.) As mentioned earlier, the database server may run on a different computer than the web server. This section will guide you through the following steps:
- Setting up a database (MySQL or PostgreSQL)
- Downloading eZ Publish
- Unpacking eZ Publish
- Initiating the setup wizard
Setting up a database
Known issue with running PHP5.3 on MySQL: Some Windows users with both IPv4 and IPv6 installed experience problems connecting to the database server using host names like "localhost"... If you experience problems, try using IPv4 address like "127.0.0.1". This is due to a connectivity problem when running PHP5.3 on MySQL. So, please replace the database server name "localhost" with the IP address of the machine, or "127.0.0.1", which is reserved for the local host.
A database must be created before running the setup wizard. The following text explains how to set up a database using either MySQL or PostgreSQL.
MySQL
Log in as the root user (or any other MySQL user that has the CREATE, CREATE USER and GRANT OPTION privileges):
mysql --host=<mysql_host> --port=<port> -u <mysql_user> -p<mysql_password>
Note that if MySQL is installed on the same server, the "--host" parameter can be omitted. If the "--port" parameter is omitted, the default port for MySQL traffic will be used (port 3306).
The MySQL client should display a "mysql>" prompt.
- Create a new database:
mysql> CREATE DATABASE <database> CHARACTER SET utf8;
Grant access permissions:
mysql> GRANT ALL ON <database>.* TO <user>@<ezp_host> IDENTIFIED BY '<password>';
Note that if the specified user account does not exist, it will be created.
<mysql_host> |
The hostname of the MySQL database server. |
<port> |
The port number that will be used to connect to the MySQL database server. |
<mysql_user> |
The MySQL user (if no user is set up, use "root"). |
<mysql_password> |
The password that belongs to the <mysql_user>. |
<database> |
The name of the database, for example "my_new_database". |
<user> |
The username that will be used to access the database. |
<ezp_host> |
The hostname of the server on which eZ Publish will be running. (may be 'localhost' if MySQL is installed on the same server). |
<password> |
The password you wish to set in order to limit access to the database. |
PostgreSQL
Log in as the postgres user (or any other PostgreSQL user that has sufficient privileges to create roles and databases):
psql -h <psql_host> -p <port> -U <psql_user> -W
Note that if PostgreSQL is installed on the same server, the "-h" parameter can be omitted. If the "-p" parameter is omitted, the default port for PostgreSQL traffic will be used (in most cases, port 5432).
The PostgreSQL client will ask you to specify the password that belongs to the <psql_user>. If the password is correct, the client should display a "<psql_user>=#" prompt.
- Create a new database:
postgres=# CREATE DATABASE <database> ENCODING='utf8';
- Create a new user:
postgres=# CREATE USER <user> PASSWORD '<password>';
- Grant access permissions:
postgres=# GRANT ALL PRIVILEGES ON DATABASE <database> TO <user>;
- Import the "pgcrypto" module into the new database:
postgres=# \c <database> <database>=# \i '<path_to_pgcrypto>'
<psql_host> |
The hostname of the PostgreSQL database server. |
<port> |
The port number that will be used to connect to the PostgreSQL database server. |
<psql_user> |
The PostgreSQL user (if no user is set up, use "postgresql"). |
<database> |
The name of the database, for example "my_new_database". |
<user> |
The username that will be used to access the database. |
<password> |
The password you wish to set in order to limit access to the database. |
<path_to_pgcrypto> |
The path to the "pgcrypto.sql" file, for example "C:\\Program Files\\PostgreSQL\\8.2\\share\\contrib\\pgcrypto.sql". |
Downloading eZ Publish
The latest stable version of eZ Publish can be downloaded from http://share.ez.no/download-develop/downloads. Windows users should download the ".zip" archive.
Unpacking eZ Publish
Use your favorite utility to unpack the downloaded eZ Publish archive to a web-served directory (a directory that is reachable using a web browser). The extraction utility will unpack eZ Publish into a sub-directory called "ezpublish-4.x.y". Feel free to rename this directory to something more meaningful, for example "my_site".
Initiating the setup wizard
The setup wizard can be started using a web browser immediately after the previous steps (described in this section) are completed. It will be automatically run the first time someone tries to access/browse the index.php file located in the eZ Publish directory. Let's assume that we are using a server with the hostname "www.example.com" and that after unpacking, the eZ Publish directory was renamed to "my_site".
Document root example
If eZ Publish was unpacked into a directory called "my_site" under the document root, the setup wizard can be initiated by browsing the following URL: http://www.example.com/my_site/index.php.
Refer to "The setup wizard" section for a detailed description of the web based setup wizard.
Balazs Halasy (14/09/2010 9:01 am)
Geir Arne Waaler (30/08/2011 9:08 am)
Comments
Not with xampp
Saturday 20 June 2009 10:36:39 am
Biagio Paruolo
Is there other system to make install on Win?
Thanks
Not with xampp
Tuesday 24 November 2009 11:01:39 am
Arun
Xampp
Thursday 17 December 2009 9:38:47 pm
Ben
There are several walkthroughs online pertaining to how to pull it off.
Issues with eZ Publish and PHP 5.2 under Windows
Monday 12 July 2010 9:08:17 pm
Luis Ferro
http://php.net/manual/en/function.touch.php
"5.3.0 It became possible to change the modification time of a directory under Windows."
This limitation makes the installer to break with tons of "UTime permission denied" errors when installing the packages.
As a workaround, you can either use Linux as server OS, or upgrade to 5.3. Another alternative is add code to detect if the path is a file or a folder, and don't execute the touch if it is a folder.
This was reported as a bug.