servers:nginx:friendica
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
servers:nginx:friendica [2023/09/01 20:05] – Sean Rhone | servers:nginx:friendica [2024/08/13 22:20] (current) – removed Sean Rhone | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Information ====== | ||
- | |||
- | * Friendica ((https:// | ||
- | * [[Information: | ||
- | * https:// | ||
- | |||
- | ===== Prerequisites ===== | ||
- | |||
- | * [[distros: | ||
- | * [[servers: | ||
- | * [[servers: | ||
- | * [[servers: | ||
- | |||
- | ====== Dependencies ====== | ||
- | |||
- | **** | ||
- | |||
- | sudo zypper install php8-posix php8-gmp openssl php8-pcntl php8-xdebug | ||
- | |||
- | ====== Download Source ====== | ||
- | |||
- | **** | ||
- | |||
- | sudo git clone --branch ' | ||
- | |||
- | ====== PHP Dependencies ====== | ||
- | |||
- | sudo su ' | ||
- | |||
- | cd '/ | ||
- | |||
- | ====== Database ====== | ||
- | |||
- | sudo mysql | ||
- | |||
- | CREATE DATABASE friendica; | ||
- | |||
- | GRANT ALL PRIVILEGES ON friendica.* to ' | ||
- | |||
- | FLUSH PRIVILEGES; | ||
- | |||
- | EXIT | ||
- | |||
- | sudo mysql ' | ||
- | |||
- | ====== nginx + PHP-FPM Configuration ====== | ||
- | |||
- | ===== PHP-FPM Socket ===== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [social] | ||
- | |||
- | ; User/Group | ||
- | user = nginx | ||
- | group = nginx | ||
- | |||
- | ; Socket | ||
- | listen = 127.0.0.1: | ||
- | listen.acl_users = nginx | ||
- | listen.allowed_clients = 127.0.0.1 | ||
- | |||
- | ; Process Management | ||
- | pm = ondemand | ||
- | pm.max_children = 4 | ||
- | pm.process_idle_timeout = 30 | ||
- | |||
- | ; openSUSE TW php.ini Defaults | ||
- | php_value[session.save_path] = "/ | ||
- | |||
- | ; General | ||
- | php_value[date.timezone] = " | ||
- | php_value[max_execution_time] = " | ||
- | php_value[memory_limit] = " | ||
- | php_value[post_max_size] = " | ||
- | php_value[upload_max_filesize] = " | ||
- | php_value[max_file_uploads] = " | ||
- | php_value[register_argc_argv] = " | ||
- | php_value[upload_tmp_dir] = "/ | ||
- | |||
- | ; End</ | ||
- | |||
- | ===== FastCGI ===== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | # PHP-FPM | ||
- | location ~ \.(php|phar)(/ | ||
- | fastcgi_split_path_info ^(.+\.(?: | ||
- | |||
- | fastcgi_intercept_errors on; | ||
- | fastcgi_index | ||
- | include | ||
- | fastcgi_param | ||
- | fastcgi_param | ||
- | fastcgi_pass 127.0.0.1: | ||
- | }</ | ||
- | |||
- | ==== Test ==== | ||
- | |||
- | < | ||
- | # PHP-FPM | ||
- | location ~* \.php$ { | ||
- | # fastcgi_intercept_errors on; | ||
- | # fastcgi_param | ||
- | fastcgi_pass 127.0.0.1: | ||
- | fastcgi_buffers 8 16k; | ||
- | fastcgi_buffer_size 32k; | ||
- | fastcgi_connect_timeout 60; | ||
- | fastcgi_send_timeout 300; | ||
- | fastcgi_read_timeout 300; | ||
- | fastcgi_split_path_info ^(.+? | ||
- | try_files $uri =404; | ||
- | fastcgi_index index.php; | ||
- | include fastcgi_params; | ||
- | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
- | }</ | ||
- | |||
- | ===== Server Block ===== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | server { | ||
- | listen ' | ||
- | server_name ' | ||
- | root '/ | ||
- | index ' | ||
- | |||
- | include '/ | ||
- | include '/ | ||
- | |||
- | client_max_body_size ' | ||
- | |||
- | add_header Content-Security-Policy " | ||
- | |||
- | # access_log | ||
- | # error_log | ||
- | |||
- | location / { | ||
- | try_files $uri / | ||
- | } | ||
- | |||
- | location ^~ / | ||
- | allow all; | ||
- | rewrite ^ / | ||
- | } | ||
- | |||
- | location ~* \.(tpl|md|tgz|log|out)$ { | ||
- | deny all; | ||
- | } | ||
- | |||
- | location ~ /\. { | ||
- | deny all; | ||
- | } | ||
- | }</ | ||
- | |||
- | ==== Test ==== | ||
- | |||
- | < | ||
- | if (!-e $request_filename) { | ||
- | rewrite ^(.*)$ / | ||
- | } | ||
- | |||
- | client_max_body_size 50M; | ||
- | client_body_buffer_size 128k; | ||
- | |||
- | location ^~ / | ||
- | allow all; | ||
- | if (!-e $request_filename) { | ||
- | | ||
- | } | ||
- | }</ | ||
- | |||
- | ====== Initial Setup ====== | ||
- | |||
- | ===== Config File ===== | ||
- | |||
- | nano '/ | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | <?php | ||
- | return [ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ], | ||
- | |||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ], | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ], | ||
- | ];</ | ||
- | |||
- | ===== Config ===== | ||
- | |||
- | sudo su ' | ||
- | |||
- | cd '/ | ||
- | |||
- | ===== Website ===== | ||
- | |||
- | * https:// | ||
- | |||
- | ====== Services ====== | ||
- | |||
- | ===== Worker ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=nginx | ||
- | Group=nginx | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * Every 5 minutes | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=friendica Worker Daemon | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnBootSec=5m | ||
- | OnUnitActiveSec=5m | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Updater ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=nginx | ||
- | Group=nginx | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | Environment=" | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=friendica Updater | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:00:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Maintenance ===== | ||
- | |||
- | ==== Service ==== | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Service] | ||
- | User=nginx | ||
- | Group=nginx | ||
- | Type=oneshot | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | ==== Timer ==== | ||
- | |||
- | * '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=friendica Maintenance | ||
- | After=network-online.target | ||
- | Wants=network-online.target | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-01 02:20:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ===== Backup ===== | ||
- | |||
- | ==== Files ==== | ||
- | |||
- | === Service === | ||
- | |||
- | mkdir -p ~/' | ||
- | |||
- | < | ||
- | [Service] | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | === Timer === | ||
- | |||
- | * '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=friendica Files Backup | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-01 02:50:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ==== Database ==== | ||
- | |||
- | === Database Auth === | ||
- | |||
- | sudo mkdir -p '/ | ||
- | |||
- | < | ||
- | [mysqldump] | ||
- | user=friendica | ||
- | password=x</ | ||
- | |||
- | === Service === | ||
- | |||
- | mkdir -p ~/' | ||
- | |||
- | < | ||
- | [Service] | ||
- | Type=oneshot | ||
- | WorkingDirectory=/ | ||
- | ExecStartPre='/ | ||
- | ExecStart='/ | ||
- | ExecStart='/ | ||
- | ExecStartPost='/ | ||
- | |||
- | === Timer === | ||
- | |||
- | * Every day at '' | ||
- | |||
- | sudo -e '/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description=friendica Database Backup | ||
- | After=mariadb.service | ||
- | |||
- | [Timer] | ||
- | OnCalendar=*-*-* 02:15:00 | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target</ | ||
- | |||
- | ====== Backup ====== | ||
- | |||
- | * Create backup archive on server and transfer to client computer | ||
- | |||
- | ===== Server ===== | ||
- | |||
- | ==== Stop Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl stop nginx php-fpm | ||
- | |||
- | ==== Backup Folder ==== | ||
- | |||
- | **** | ||
- | |||
- | cd '/ | ||
- | |||
- | ==== Backup Database ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo mysqldump --defaults-extra-file='/ | ||
- | |||
- | ==== Start Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl start nginx php-fpm | ||
- | |||
- | ===== Client ===== | ||
- | |||
- | ==== Transfer Files To Client ==== | ||
- | |||
- | **** | ||
- | |||
- | scp espionage724@192.168.1.152: | ||
- | |||
- | ====== Restore ====== | ||
- | |||
- | ===== Client ===== | ||
- | |||
- | ==== Uncompress Database ==== | ||
- | |||
- | * This is only needed if restoring an **automated** database backup ((manual doesn' | ||
- | |||
- | gunzip ~/' | ||
- | |||
- | ==== Transfer Files To Server ==== | ||
- | |||
- | **** | ||
- | |||
- | scp ~/' | ||
- | |||
- | ==== Remove Files ==== | ||
- | |||
- | **** | ||
- | |||
- | rm -f ~/' | ||
- | |||
- | ===== Server ===== | ||
- | |||
- | ==== Stop Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl stop nginx php-fpm | ||
- | |||
- | ==== Remove Previous Folder ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo rm -Rf '/ | ||
- | |||
- | ==== Restore friendica Folder ==== | ||
- | |||
- | **** | ||
- | |||
- | cd '/ | ||
- | |||
- | ==== Drop Previous Database ==== | ||
- | |||
- | sudo mysql | ||
- | |||
- | DROP DATABASE friendica; | ||
- | |||
- | FLUSH TABLES; | ||
- | |||
- | EXIT | ||
- | |||
- | ==== Re-create Databases ==== | ||
- | |||
- | sudo mysql | ||
- | |||
- | CREATE DATABASE friendica; | ||
- | |||
- | EXIT | ||
- | |||
- | ==== Restore Database ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo mysql ' | ||
- | |||
- | ==== Reapply Permissions ==== | ||
- | |||
- | sudo mysql | ||
- | |||
- | GRANT ALL PRIVILEGES ON friendica.* to ' | ||
- | |||
- | FLUSH PRIVILEGES; | ||
- | |||
- | EXIT | ||
- | |||
- | ==== Start Services ==== | ||
- | |||
- | **** | ||
- | |||
- | sudo systemctl start nginx php-fpm | ||
- | |||
- | ==== Remove Backups ==== | ||
- | |||
- | * Verify that friendica works before running | ||
- | |||
- | rm ~/' | ||
/srv/www/wiki/data/attic/servers/nginx/friendica.1693613107.txt.gz · Last modified: (external edit)