eesyphp/docs/install.md

3.6 KiB

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 :

<VirtualHost *:80>
        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
</VirtualHost>

<VirtualHost *:443>
        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

        <FilesMatch \.php$>
                SetHandler "proxy:unix:/run/php7.0-fpm_eesyphp.sock|fcgi:///"
        </FilesMatch>

        <Directory   /var/www/eesyphp/public_html>
                # Acceptable overrides:
                # - FileInfo (.htacces-based rewrite rules)
                # - AuthConfig (.htaccess-based basic auth)
                AllowOverride FileInfo AuthConfig
        </Directory>

        # 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
</VirtualHost>