- Web server
- PHP 8.2 with apcu, curl, gmp, iconv, json, mbstring, tidy, xml
- Composer
- MySQL 8
Configure a vhost with the document root set to the public
folder (ie /var/www/feed/public)
Add the vhost below
<VirtualHost *:80>
DocumentRoot "/var/www/feed/public"
ServerName your-domain-or-sub-domain
ErrorLog ${APACHE_LOG_DIR}/feed-error.log
CustomLog ${APACHE_LOG_DIR}/feed-access.log combined
<Directory /var/www/feed/public>
AllowOverride None
DirectoryIndex index.php index.html
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule .* - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 307 ^/$ /index.php/
</IfModule>
</IfModule>
</Directory>
</VirtualHost>
If you can't edit a vhost, add the Apache pack to get the .htaccess
file in the public
folder
composer require symfony/apache-pack
Add the server definition below
server {
listen [::]:8080 default_server;
listen 8080 default_server;
server_name your-domain-or-sub-domain;
sendfile off;
root /var/www/feed/public;
index index.php index.html;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
}
mysql -u root -p
CREATE USER 'your-user'@'your-host' IDENTIFIED WITH mysql_native_password BY 'your-password';
CREATE DATABASE IF NOT EXISTS feed DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON feed.* TO 'your-user'@'your-host';
FLUSH PRIVILEGES;
Copy .env.dist
to .env
Edit DATABASE_URL=mysql://your-user:your-password@your-host:3306/feed?serverVersion=8&charset=utf8mb4
mkdir config/jwt-keys
openssl genrsa -out config/jwt-keys/application.key 2048
openssl rsa -in config/jwt-keys/application.key -pubout -out config/jwt-keys/application.pub
composer install
bin/console doctrine:schema:create
bin/console app:setup
bin/console app:member:create
bin/console asset-map:compile
Edit parameters VAPID_*
bin/console app:generate-vapid
Edit parameters ELASTICSEARCH_*
bin/console app:elasticsearch:create
crontab -e
# minute (0 - 59) | hour (0 - 23) | day of month (1 - 31) | month (1 - 12) | day of week (1 - 7) | command
0 * * * * cd /path-to-installation && bin/console app:collection
#20 * * * * cd /path-to-installation && bin/console app:notifications
#30 * * * * cd /path-to-installation && bin/console app:elasticsearch
#0 0 * * 7 cd /path-to-installation && bin/console app:maxmind:update
git fetch origin
git reset --hard origin/main
composer install
bin/console doctrine:migrations:migrate -n
bin/console asset-map:compile