Step-by-step installation on Windows¶
Note
This installation page is not updated as frequently as the Debian one. If you have some issues, also check the debian installation page to see if there is some differences in the explanations.
This chapter covers the installation on a Windows 64-bit system. The process is in essence the same as in Step-by-step installation on Debian Linux but must be translated to the Windows world. PostgreSQL, Apache and PHP must be downloaded and installed separately. The location of their configuration files, how they are started/stopped is also vastly different.
The installation can be done on a Windows Server or Windows 7/8/10 installation.
In this procedure we assume that PiAnoS will be served as document root (i.e. on /
). Running multiple instances and/or using different paths is left as an exercise.
Note
This installation method is not recommanded. Use some OpenSource OS for philosophical purpouse. Moreover, the installation on a Linux box is way easier. The recommended method is to install the “Docker for windows” (via the docker toolkit) or, the better way, install a very small Debian (or any Linux) virtual machine (with VMware Player or Virtualbox for example), and make the installation as describe for the Linux OS (the “Docker” way or the “monolithique” way).
Downloading applications¶
Get the latest version of:
Note
It is possible to use for example WAMP, but since the MySQL server is not used in this case, a simple installation of Apache2 alone is more efficient.
Install the applications¶
Note
this will install services on your local system. These will load at startup and may eat memory and CPU time. If this is not what you want, turn them to manual mode, and start them only when needed. You can do so by going to the Services Management console (after Apache and PostgreSQL are installed, of course).
PostgreSQL
Launch the installer
Accept the default installation and data folders
Choose a password for the database administrator,
postgres
. This user will exist both a Windows account and as a role in the database cluster. If your system is somewhat public, or even worse, facing the Internet, please choose a strong password. In all cases, make sure you remember it.Accept the default port (5432)
Accept the default locale, or set it to the country you live in explicitly (e.g. “English, United States”). This will mostly affect how messages and dates are printed. Leave the checkbox below checked.
[Note: Not sure if and when this question is asked by the installer]. There may be a checkbox named “install PL/pgSQL in template1 database” (or something similar). If you see it, make sure it is checked.
Start the installation
After the installation is finished, uncheck the “Execute Stack Builder” box. (Stack Builder is a very handy program to install third-party tools for e.g. live replication, spatial databases, etc. We don’t need any of them now, but you may launch it at any time later)
Apache
Launch the installer
Use your ordinary process to go through the license steps
In the “Server Information” panel, you may accept the defaults - these will not prevent Apache from working if they are not set correctly. If you have sensible information to enter at this point, please do so.
In the same pane, make sure “for All users, on port 80, as a service” is checked
Choose a “Typical” setup, and accept the default installation path
Start the installation
When the installation is finished, point your web browser to the URL
http://localhost
. You should see the famous It works! message.
PHP, Part 1
PHP is actually a module for Apache and we need to make them live together. The installation should be done with the latest official installation guide provided by the PHP project. Here is a short summary:
Create a folder named
PHP
in yourProgram Files (x86)
, i.e.C:\Program Files (x86)\PHP
.Extract the content of the archive inside this folder
There is a file named
C:\Program Files (x86)\PHP\install.txt
. You may want to read it, and follow the “Manual installation” procedure, instead of reading this - your choice.Copy
C:\Program Files (x86)\PHP\php.ini-production
toC:\Program Files (x86)\PHP\php.ini
To easily modify the configuration file, we need to set the right permission 2. Right-click
C:\Program Files (x86)\PHP\php.ini
, select “Properties”. Go to the “Security” tab, click “Modify”, select “Users” in the list and click “Full control” in the permissions . Validate with OK.Use the same trick to allow the modification of Apache configuration file, named
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf
2Create a directory named
www
e.g. at the root of your drive (C:\www
). This is where we are going to store our web files.Open
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf
, go to the end of the file and append:LoadFile "C:/Program Files (x86)/PHP/libpq.dll" PHPIniDir "C:/Program Files (x86)/PHP/" LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_2_filter.dll" AddType application/x-httpd-php .phpAdapte the installation of the PHP module if using the PHP7 version.
Note the forward slashes in the paths - this is not a typo, Apache requires forward slashes. The version of the php module has to be patch.
Somewhere in the middle of this file, there is a section like the following (search for the “DocumentRoot” string using Ctrl+F)
# [ ... ] # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" # [ ... ] # # This should be changed to whatever you set DocumentRoot to. # <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"> # [ ... ]Replace references to
htdocs
towww
, so the block now looks like:# [ ... ] DocumentRoot "C:/www" # [ ... ] <Directory "C:/www"> # [ ... ]Finally, for convenience, set the DirectoryIndex to show index.php:
# DirectoryIndex: sets the file that Apache will serve if a directory # is requested. <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
Restart the Apache server (use either the Apache Monitor that sits in your notification area, or the program in Start Menu / Apache HTTP Server 2.2 / Control Apache Server / Restart)
Using explorer (the windows shell, not Internet Explorer), go to
C:\www
. Create a file namedindex.php
and put the following content in it:<?php phpinfo();
Save the file, and point your web browser to
http://localhost/index.php
. You should now see the PHP Information page.
PHP, Part 2
Note
If you have not seen the PHP Information page, you cannot proceed further. You probably have missed something somewhere, so please double-check everything. I cannot provide troubleshooting instructions here because the depdendency on your particular setup is too strong.
Now that PHP is active, we need to activate some required modules for PiAnoS (e.g. PostgreSQL, imaging libraries, etc.). Even if you used the automated installer (because it was available to you, while it was not when this procedure was written), you need to perform these steps.
You need to perform the following list of changes in your C:\Program Files (x86)\PHP\php.ini
file. Use Ctrl+F to find the key and set the value appropriately. If the line is commented (i.e. begins with a semicolon ;
) you should first uncomment it and then set the value. These settings are actually scattered all around the php.ini
file.
post_max_size = 32M
upload_max_filesize = 8M
extension_dir = "C:\Program Files (x86)\PHP\ext"
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_pgsql.dll
You can now restart the Apache server, and refresh the PHP Information page. If everything is correct, you should have all modules loaded - search for each module in the page to see if it was loaded (if the module does not appear, it was not loaded at all).
If some modules are missing, you need to investigate why. The best method is to turn off all modules, then restart Apache. Then, enable them one by one, restarting Apache each time, to see where things go wrong. When you have identified the culprit, use the web to find why the module will not load.
Note
We have used a trick in the previous step, namely the LoadFile "C:/Program Files (x86)/PHP/libpq.dll"
configuration directive, for Apache to load the DLLs of PostgreSQL. PHP will simply not load them by default because PHP is broken on Windows. The trick forces Apache to load the DLL earlier than PHP, and then PHP happily uses it. If you let PHP do this by itself, it will fail - silently. Using .msi
installation packages does not prevent the problem to happen, and worse, it will clutter your PATH with stupid values, making the issue even worse.
Configure the libraries¶
PiAnoS need multuples libraries to run. The different libraries need to be installed in the php_shared folder.
In this case, the libraires will be installed in the ./backend
folder. This installation can be done by cloning the Git repo OR downloading the released archive from the Git repo:
$ sudo git clone https://esc-md-git.unil.ch/PiAnoS/php_classes.git .
Note
The unil
folder has to be at the “root” of the shared folder!
PiAnoS need also some third-party libraries, like jquery, toast, TPSjs,… The installation is done by default in the /cdn
, but can be changed in the settings-local.php
file.
$ sudo mkdir cdn
$ cd cdn
$ sudo git clone https://esc-md-git.unil.ch/PiAnoS/cdn.git .
Configure the database¶
While we could use command-line utilities to create the database, we’ll use the nice pgAdmin 4
program. This is more Window-ish and you will have no excuses when asked how to backup the database (answer: start pgAdmin, right-click db, click backup).
Start pgAdmin 4 (from your start menu)
In the Object Browser, double-click “PostgreSQL <version> (localhost:5432)”
Enter the password you have defined earlier
In the tree that has expanded, right-click “Login Roles” and choose “New Login Role …”
Enter “pianos” as role name and choose a password (this password will be stored in plain text so it should be different from e.g. your mailbox password)
Validate with OK: the role is created
Right-click “Databases” and choose “New Database …”
Enter “pianos” for the name, select “pianos” for the owner, check that encoding is UTF8
Validate with OK: after a while, the database is created
Allow the web application to connect to the database in the pg_hba.conf
file. And near the end (order is important, pianos
must come before all
):
[...]
host pianos pianos 127.0.0.1/32 trust # <-- Add this line (and remove this comment)
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Download and unpack PiAnoS¶
Note
If your system does not know what to do with .tar.gz archives, we recommend you to use 7-zip, a free file archiver that handles all common formats (its own .7z but also .zip, .gz, .bz2, .rar, .iso, etc.)
Download src-latest.tar.gz and unpack the content in C:\www
. This will overwrite our test index.php
file - nothing to worry about.
Launch the installer¶
Using a web browser, open the URL http://localhost/install/
(replacing localhost
by the IP address or the hostname of your server, if not running on your local computer).
Follow the procedure detailed in Web Installer
Problems ?¶
Some known problems are listed in the Troubleshooting section. If you have a problem, make sure you read this chapter before attempting anything else.
Footnotes
- 1
even on x64 platforms, using 32-bit binaries for these is a safe bet for the moment
- 2(1,2)
there are alternatives to this, including switching to Administrator to edit the files (really boring: need to launch the text editor as Administrator and then open the file) and a cleaner version of my proposal (adding your user with full control instead of giving full control to everyone)