# Installation ## Dependencies : This Debian packages have to be installed : - git *(only for deployment only)* - composer (and unzip or zip) - php-cli - php-mail - php-mail-mine - php-net-smtp - php-auth-sasl - php-json - php-mbstring - php-pgsql *(for PostgreSQL DB backend)* - php-sqlite3 *(for sqlite DB backend, sqlite3 tool (provided by the same name package) is also used to create the DB file)* - smarty3 ## Deployment : To deploy this application, for instance in */var/www/eesyphp*, run this commands : cd /var/www adduser --home /var/www/eesyphp --no-create-home --disabled-password --gid 33 eesyphp git clone https://gogs.example.org/example/eesyphp.git /var/www/eesyphp chown eesyphp: /var/www/eesyphp ln -s /var/www/eesyphp/bin/items.wrapper /usr/local/bin/eesyphp ln -s /var/www/eesyphp/docs/eesyphp.cron /etc/cron.d/eesyphp ln -s /var/www/eesyphp/docs/eesyphplogrotate /etc/logrotate.d/eesyphp ## Install PHP dependencies : su - eesyphp composer install ## Initialize database : ### SQLite To initialize SQLite database, run this commands : cd /var/www/eesyphp/data sqlite3 db.sqlite3 < sqlite.init-db.sql ### PostgreSQL To initialize PostgreSQL database, run this commands : su - postgres createuser -P items createdb -O items items psql items < /var/www/eesyphp/data/pgsql.init-db.sql ### MariaDB / MySQL To initialize MariaDB / MySQL database, run this commands : sudo mysql << EOF CREATE DATABASE items; GRANT ALL ON items.* TO items@localhost IDENTIFIED BY 'items'; EOF sudo mysql items < /var/www/eesyphp/data/mariadb-mysql.init-db.sql ## Configure PHP FPM pool : You could configure a dedicated *PHP FPM pool*. ***Example :*** ``` [eesyphp] user = eesyphp group = www-data listen = /run/php7.0-fpm_eesyphp.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = / php_value[error_log] = /var/www/eesyphp/data/logs/php.log php_value[upload_max_filesize] = 10M php_value[post_max_size] = 10M php_value[memory_limit] = 10M php_value[default_charset] = 'UTF-8' php_value[date.timezone] = Europe/Paris ``` ## Configure Apache VirtualHost : You could configure a dedicated *VirtualHost*. ***Example :*** ``` ServerName eesyphp.example.org DocumentRoot /var/www/empty RewriteEngine on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] ErrorLog /var/log/apache2/eesyphp.example.org-error.log CustomLog /var/log/apache2/eesyphp.example.org-access.log combined ServerName eesyphp.example.org DocumentRoot /var/www/eesyphp/public_html SSLEngine On SSLCertificateFile /etc/letsencrypt/live/eesyphp.example.org/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/eesyphp.example.org/privkey.pem SetHandler "proxy:unix:/run/php7.0-fpm_eesyphp.sock|fcgi:///" # Acceptable overrides: # - FileInfo (.htacces-based rewrite rules) # - AuthConfig (.htaccess-based basic auth) AllowOverride FileInfo AuthConfig # Compress most static files AddOutputFilterByType DEFLATE text/html text/xml text/css application/javascript ErrorLog /var/log/apache2/eesyphp.example.org-error.log CustomLog /var/log/apache2/eesyphp.example.org-access.log combined ```