Ajouter les sources du dépôt PHP
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo tee /etc/apt/sources.list.d/php.sources <<EOF
Types: deb
URIs: https://packages.sury.org/php/
Suites: $(lsb_release -sc)
Components: main
Signed-By: /usr/share/keyrings/debsuryorg-archive-keyring.gpg
EOF
sudo apt update
Installer PHP et son module Apache
sudo apt install -y php8.5-cli libapache2-mod-php8.5
Installer les modules supplémentaires requis par Pixelfed
sudo apt install -y php8.5-{bcmath,ctype,curl,exif,gd,iconv,imagick,intl,mbstring,mysqli,redis,tokenizer,xml,zip}
sudo apt install -y php8.5-fpm
Configurer un pool
sudo cp /etc/php/8.5/fpm/pool.d/www.conf /etc/php/8.5/fpm/pool.d/pixelfed.conf
sudo nano /etc/php/8.5/fpm/pool.d/pixelfed.conf
Modifier les lignes non commentées
; pool name ('www' here)
[pixelfed]
; Unix user/group of the child processes
user = pixelfed
group = pixelfed
; The address on which to accept FastCGI requests.
listen = /run/php/pixelfed.sock
; Set permissions for unix socket, if one is used.
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
pm.max_children = 4
Éditer le fichier de configuration PHP
sudo nano /etc/php/8.5/apache2/php.ini
Modifier les valeurs de ces paramètres
; Maximum execution time of each script, in seconds
max_execution_time = 120
; Maximum amount of time each script may spend parsing request data
max_input_time = 120
; Maximum amount of memory a script may consume
memory_limit = 1024M
; Maximum size of POST data that PHP will accept.
post_max_size = 256M
; Maximum allowed size for uploaded files.
upload_max_filesize = 256M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 500
post_max_size à la taille maximale que devrait avoir une archive Instagram*, la variable upload_max_filesize à la taille maximale que devraient avoir les photos Instagram individuelles, et la variable max_file_uploads au nombre maximal de photos (et non de publications) qu'une archive Instagram devrait contenir.
Source : Pixelfed Docs
* l'archive est le fichier exporté de données personnelles envoyé par Meta, habituellement nommé instagram-user_name-YYYY-MM-DD-hash.zip
Modifier ces mêmes lignes dans la configuration de PHP-FPM
sudo nano /etc/php/8.5/fpm/php.ini
Redémarrer le service PHP-FPM
sudo systemctl restart php8.5-fpm.service
cd ~/
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
HASH=`curl -sS https://composer.github.io/installer.sig`
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Si ces commandes affichent Installer verified, installer Composer:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer