Easy Way: Ubuntu 15, Install ZoneMinder API from Package - 3esmit/zmNinja GitHub Wiki
#####These instructions are for a brand new ubuntu 15.04 system which does not have ZM installed.
Step 1: Make sure we add the correct packages
sudo add-apt-repository ppa:iconnor/zoneminder
sudo apt-get update
if you don't have mysql already installed:
sudo apt-get install mysql-server
This will ask you to set up a master password for the DB (you are asked for the mysql root password when installing mysql server).
Step 2: Install ZoneMinder
sudo apt-get install zoneminder
(Note this step will result in a zmuser error - please ignore it)
Step 3: Configure the Database
sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysql -uroot -p -e "grant select,insert,update,delete,create,alter,index,lock tables on zm.* to 'zmuser'@localhost identified by 'zmpass';"
You don't really need this, but no harm (needed if you are upgrading)
sudo /usr/bin/zmupdate.pl
Step 4: Configure systemd to recognize ZoneMinder and configure Apache correctly:
sudo systemctl enable zoneminder
sudo a2enconf zoneminder
sudo a2enmod cgi
sudo chown -R www-data:www-data /usr/share/zoneminder/www/api
We need this for API routing to work:
sudo a2enmod rewrite
This is probably a bug with iconnor's PPA as of Oct 3, 2015 with package 1.28.107. After installing, zm.conf
does not have the right read permissions, so we need to fix that. This may go away in future PPA releases:
sudo chown www-data:www-data /etc/zm/zm.conf
We also need to install php5-gd (as of 1.28.107, this is not installed)
sudo apt-get install php5-gd
Step 5: Edit Timezone in PHP
vi /etc/php5/apache2/php.ini Look for [Date] and inside it you will see a date.timezone that is commented. remove the comment and specific your timezone. Please make sure the timezone is valid (see this)
In my case:
date.timezone = America/New_York
Step 6: Restart services
sudo service apache2 reload
sudo systemctl restart zoneminder
Step 7: If you have changed your DB login/password
If you changed the DB password after installing ZM, the APIs will not be able to connect to the DB.
If you have, go to zoneminder/www/api/app/Config & Edit database.php
There is a class there called DATABASE_CONFIG
- change the $default
array to reflect your new details. Example:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'mynewDBusername',
'password' => 'mynewDBpassword'
'database' => 'zm',
'prefix' => '',
//'encoding' => 'utf8',`
);
You are done. Lets proceed to make sure everything works:
####Making sure ZM and APIs work:
- open up a browser and go to
http://localhost/zm
- should bring up ZM - (OPTIONAL - just for peace of mind) open up a tab and go to
http://localhost/zm/api
- should bring up a screen showing CakePHP version with some green color boxes. Green is good. If you see red, or you don't see green, there may be a problem (should not happen). Ignore any warnings in yellow saying "DebugKit" not installed. You don't need it - open up a tab in the same browser and go to
http://localhost/zm/api/host/getVersion.json
If it responds with something like:
{
"version": "1.28.107",
"apiversion": "1.28.107.1"
}
Then your APIs are working
###Make sure you can view Monitor View
- Open up ZM, configure your monitors and verify you can view Monitor feeds.
- If not, open up ZM console in your browser, go to
Options->Path
and make surePATH_ZMS
is set to/zm/cgi-bin/nph-zms
and restart ZM
###Make sure ZM and APIs work with security:
- Enable OPT_AUTH in ZM
- Log out of ZM in browser
- Open a NEW tab in the SAME BROWSER (important) and go to
http://localhost/zm/api/host/getVersion.json
- should give you "Unauthorized" along with a lot more of text - Go to another tab in the SAME BROWSER (important) and log into ZM
- Repeat step 3 and it should give you the ZM and API version
Congrats you now have ZM working with APIs and with security. The APIs tie into ZM security -- if you are not logged into ZM, the APIs won't work (hence the need to try it from the same browser instance)