Benjamin Renard
6fdc5447f1
* Code cleaning and fix some small errors using Phpstan * Configure pre-commit to run Phpstan before each commit * Some little improvments and logging, mail, smarty & URL libs * Add Sentry integration * Add Webstat JS code inclusion * Install Smarty dependency using composer Breaking changes: * Rename Event class as HookEvent to avoid conflict with PECL event * URL with refresh GET parameter now automatically trigger redirection without it after page loading to avoid to keep it in URL
142 lines
3.5 KiB
Markdown
142 lines
3.5 KiB
Markdown
# Installation
|
|
|
|
## Dependencies :
|
|
|
|
Some Debian packages have to be installed :
|
|
|
|
```bash
|
|
apt install git composer php-cli php-mail php-mail-mine php-net-smtp php-auth-sasl php-json php-mbstring php-intl
|
|
# for PostgreSQL DB backend
|
|
apt install php-pgsql
|
|
# for MySQL/MariaDB DB backend
|
|
apt install php-mysql
|
|
# for sqlite DB backend
|
|
apt install sqlite3 php-sqlite3
|
|
```
|
|
|
|
## Deployment :
|
|
|
|
To deploy this application, for instance in */var/www/eesyphp*, run this commands :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
su - eesyphp
|
|
composer install
|
|
```
|
|
|
|
## Initialize database :
|
|
|
|
### SQLite
|
|
|
|
To initialize SQLite database, run this commands :
|
|
|
|
```bash
|
|
cd /var/www/eesyphp/data
|
|
sqlite3 db.sqlite3 < sqlite.init-db.sql
|
|
```
|
|
|
|
### PostgreSQL
|
|
|
|
To initialize PostgreSQL database, run this commands :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
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/php/php7.3-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/php/php7.3-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>
|
|
```
|