User Tools

Site Tools


servers:linux:nginx:drupal

Information

Prerequisites

Notes

  • Loads pages slower than expected for some reason, may be a Git thing?

Download Source

****

sudo git clone -b '8.3.x' 'git://git.drupal.org/project/drupal.git' '/var/www/main' && sudo chown -R 'www-data':'www-data' '/var/www/main' && sudo -u 'www-data' composer install -d '/var/www/main' --no-dev && sync

Database

sudo mysql
CREATE DATABASE drupal;
GRANT ALL PRIVILEGES ON drupal.* to 'drupal'@'localhost' IDENTIFIED BY 'x';
FLUSH PRIVILEGES;

nginx + PHP-FPM Configuration

PHP-FPM Socket

sudo -e '/etc/php/7.0/fpm/pool.d/main.conf' && sudo systemctl restart 'php7.0-fpm'
[main]
user = www-data
group = www-data

listen = /run/php/main.sock
listen.owner = www-data
listen.group = www-data
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_value[max_execution_time] = 300
php_value[request_terminate_timeout] = 300

FastCGI

sudo -e '/etc/nginx/snippets/main.conf'
location ~ '\.php$|^/update.php' {
    fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
    try_files $fastcgi_script_name =404;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS on;
    fastcgi_pass unix:/run/php/main.sock;
    fastcgi_read_timeout 300;
}

Server Block

sudo -e '/etc/nginx/sites-available/main.conf'
server {
    listen '443' 'ssl' 'http2';
    server_name 'realmofespionage.xyz';
    root '/var/www/main';
    index 'index.php';

    include '/etc/nginx/snippets/main.conf';
    include '/etc/nginx/snippets/restrictions.conf';

    #access_log /var/log/nginx/main-access.log;
    #error_log /var/log/nginx/main-error.log;

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    location ~ ^/sites/.*/files/styles/ {
        try_files $uri @rewrite;
    }

    location ~ ^/system/files/ {
        try_files $uri /index.php?$query_string;
    }
}

Enable Server Block

****

sudo rm -f '/etc/nginx/sites-enabled/main.conf' && sudo ln -s '/etc/nginx/sites-available/main.conf' '/etc/nginx/sites-enabled' && sudo systemctl reload 'nginx'

Initial Setup

Plugins

T3 Framework

Purity III Template

Settings

Global Configuration

Site Meta Description

****

Realm of Espionage is an internet community with the main focus points of gaming, transparency, and the promotion of open-source technologies and security.

Site Meta Keywords

****

privacy,linux,floss,foss,free,open,open-source,gnu,secure,hardened,ubuntu,espionage724,gw2,wow,gaming,realm of espionage,roe,free and open-source software,transparent,transparency,letsencrypt,freedom,decentralized,self-host,self-hosted,in-house,decentralization

Content Rights

****

Creative Commons Attribution-ShareAlike 4.0 International

Articles

  • TODO (there's a lot of things to make hidden)

Purity III

Edit Style

  • Show T3 Logo = Off 3)
  • Logo Type = Text
  • Megamenu Animation = Fading (300ms)
  • Off-canvas Sidebar = Off 4)

Theme Magic

  • Brand Primary Color = #3D8BFF
  • Footer Background = #484848
  • Footer Text Color = #FFFFFF

Footer

****

sudo -u 'www-data' wget 'https://licensebuttons.net/l/by-sa/4.0/80x15.png' -O '/var/www/main/images/cc-by-sa-40.png'

Text

  • Place text within the <section class=“t3-copyright”> section underneath the Bootstrap by Twitter and Font Awesome mentions
  • Remove Bootstrap by Twitter and Font Awesome mentions
sudo -u 'www-data' -e '/var/www/main/templates/purity_iii/tpls/blocks/footer.php'
          <small>
            This site is powered by <a href="https://www.joomla.org" target="_blank">Joomla!</a>, <a href="http://www.t3-framework.org" target="_blank">T3 Framework</a>, <a href="https://www.joomlart.com/joomla/templates/purity-iii" target="_blank">Purity III</a>, <a href="https://getbootstrap.com" target="_blank">Bootstrap</a>, and <a href="http://fontawesome.io" target="_blank">Font Awesome</a>.
          </small>
          <small>
            Dark <a href="https://wiki.realmofespionage.xyz/servers:nginx:joomla" target="_blank">words of power</a> were used in order to spawn this site. <div style="display:none;">(beware of imps)</div>
          </small>
          <small>
            <img src="https://realmofespionage.xyz/images/cc-by-sa-40.png" width="80" height="15" /> All content and data available on Realm of Espionage is available under the <a href="https://creativecommons.org/licenses/by-sa/4.0" target="_blank">Creative Commons Attribution-ShareAlike 4.0 International</a> license.
          </small>

Position Fix

  • This places the footer back at the bottom of the screen instead of floating half-way up the page when little content exists
sudo -u 'www-data' -e '/var/www/main/templates/purity_iii/css/custom.css'
/* Footer Styling */

.t3-copyright {
background: #484848 none repeat scroll 0 0;
border-top: 1px solid #eeeeee;
bottom: 0;
font-size: 12px;
left: 0;
padding: 15px 0 0px;
position: fixed;
width: 100%;
}

.t3-footer {
/*padding-bottom: 209px;*/
bottom: 0;
font-size: 12px;
left: 0;
}

Services

Updater

Service

sudo -e '/etc/systemd/system/main-up.service'
[Service]
User=www-data
Group=www-data
Type=oneshot
ExecStart='/usr/bin/git' -C '/var/www/main' pull origin 'staging'
ExecStart='/bin/sync'

Timer

sudo -e '/etc/systemd/system/main-up.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'main-up.timer' --now && sudo systemctl start 'main-up' && sudo systemctl status 'main-up' -l
[Unit]
Description=Joomla! Git Updater
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 01:35:00
Persistent=true

[Install]
WantedBy=timers.target

Backup

Database Auth

sudo -e '/var/lib/mysqlauth/joomla' && sudo chmod '600' '/var/lib/mysqlauth/joomla'
[mysqldump]
user=joomla
password=x

Service

mkdir -p ~/'backups' && sudo mkdir -p '/var/lib/mysqltmp' && sudo -e '/etc/systemd/system/main-b.service' && sudo sed -i 's/CHANGEME/'$USER'/g' '/etc/systemd/system/main-b.service'
[Service]
Type=oneshot
WorkingDirectory=/var/lib/mysqltmp
ExecStart='/usr/bin/mysqldump' --defaults-extra-file='/var/lib/mysqlauth/joomla' --single-transaction 'joomla' -r '/var/lib/mysqltmp/joomla.sql'
ExecStart='/bin/gzip' -f '/var/lib/mysqltmp/joomla.sql'
ExecStart='/bin/bash' -c '"/bin/mv" "/var/lib/mysqltmp/joomla.sql.gz" "/home/CHANGEME/backups/joomla-"$$(date +%%Y-%%m-%%d)".sql.gz"'
ExecStart='/bin/sync'

Timer

sudo -e '/etc/systemd/system/main-b.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'main-b.timer' --now && sudo systemctl start 'main-b' && sudo systemctl status 'main-b' -l
[Unit]
Description=Joomla! Database Backup
After=mysql.service

[Timer]
OnCalendar=*-*-* 01:40: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 php7.0-fpm

Backup Folder

****

cd '/var/www' && tar -cvzf ~/'main-manual.tar.gz' 'main' && cd ~ && sync

Backup Database

****

mysqldump --defaults-extra-file='/var/lib/mysqlauth/joomla' --single-transaction 'joomla' -r '~/'joomla-manual.sql' && sync

Start Services

****

sudo systemctl start nginx php7.0-fpm

Client

Transfer Files To Client

****

scp espionage724@192.168.1.153:~/'main-manual.tar.gz' ~/'joomla-manual.sql' ~/'Downloads' && sync'

Restore

Client

Transfer Files To Server

****

scp  ~/'Downloads/main-manual.tar.gz' ~/'Downloads/joomla-manual.sql' espionage724@192.168.1.153:~

Remove Files

****

rm ~/'Downloads/main-manual.tar.gz' ~/'Downloads/joomla-manual.sql' && sync

Server

Stop Services

****

sudo systemctl stop nginx php7.0-fpm

Remove Previous Folder

****

sudo rm -Rf '/var/www/main'

Restore Joomla! Folder

****

cd '/var/www' && sudo tar -xvzf ~/'main-manual.tar.gz' 'main' && sudo chown -R 'www-data':'www-data' '/var/www/main' && cd ~ && sync

Drop Previous Database

sudo mysql
DROP DATABASE joomla;
FLUSH TABLES;

Re-create Databases

sudo mysql
CREATE DATABASE joomla;

Restore Database

****

sudo mysql 'joomla' < ~/'joomla-manual.sql' && sync

Reapply Permissions

sudo mysql
GRANT ALL PRIVILEGES ON joomla.* to 'joomla'@'localhost' IDENTIFIED BY 'x';
FLUSH PRIVILEGES;

Start Services

****

sudo systemctl start nginx php7.0-fpm

Remove Backups

  • Verify that Joomla! works before running
rm ~/'main-manual.tar.gz' ~/'joomla-manual.sql' && sync
2)
only the template is needed
3)
if shown, it causes a 3rd-party asset to be loaded; why they didn't just include it in the theme files is beyond me
4)
it doesn't play nicely with the footer position fix
/usr/local/www/wiki/data/pages/servers/linux/nginx/drupal.txt · Last modified: by 127.0.0.1