User Tools

Site Tools


servers:nginx:drupal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
servers:nginx:drupal [2016/10/30 04:28]
Sean Rhone
servers:nginx:drupal [2016/11/01 10:59] (current)
Sean Rhone
Line 1: Line 1:
 +====== Information ======
  
 +  * Drupal ((https://www.drupal.org))
 +  * [[Information:Realm of Espionage]]
 +  * https://realmofespionage.xyz
 +  * Unfinished
 +
 +===== Prerequisites =====
 +
 +  * [[distros:ubuntu_server | Ubuntu Server]]
 +  * [[servers:mariadb | MariaDB]]
 +  * [[servers:nginx_php_php-fpm | nginx + PHP + PHP-FPM]]
 +  * [[servers:nginx:lets_encrypt | Let's Encrypt]]
 +
 +===== 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 ======
 +
 +  * https://realmofespionage.xyz/core/install.php
 +
 +====== Plugins ======
 +
 +===== T3 Framework =====
 +
 +  * https://github.com/t3framework/t3/releases
 +  * 2.6.1
 +
 +===== Purity III Template =====
 +
 +  * https://www.joomlart.com/joomla/templates/purity-iii ((only the template is needed))
 +  * Requires [[servers:nginx:joomla#t3_framework | T3 Framework]]
 +  * 1.1.7
 +
 +====== 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 ((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))
 +  * Logo Type = Text
 +  * Megamenu Animation = Fading (300ms)
 +  * Off-canvas Sidebar = Off ((it doesn't play nicely with the [[servers:nginx:joomla#position_fix | footer position fix]]))
 +
 +==== Theme Magic ====
 +
 +  * Brand Primary Color = ''#3D8BFF''
 +  * Footer Background = ''#484848''
 +  * Footer Text Color = ''#FFFFFF''
 +
 +====== Footer ======
 +
 +==== Copyright ====
 +
 +  * Requires [[servers:nginx:joomla#purity_iii | Purity III Template]]
 +
 +=== Logo ===
 +
 +****
 +
 +  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
 +  * Requires [[servers:nginx:joomla#purity_iii | Purity III Template]]
 +
 +  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
servers/nginx/drupal.txt ยท Last modified: 2016/11/01 10:59 by Sean Rhone