Welcome to Centmin Mod Community
Become a Member

Xenforo Xenforo 2.1.0 Beta 1 Install & 2.1.0 Final Upgrade On Centmin Mod 123.09beta01 LEMP Stack

Discussion in 'Forum software usage' started by eva2000, Nov 21, 2018.

Thread Status:
Not open for further replies.
  1. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x
    Xenforo 2.1 Beta 1 has been publicly released and this is my first attempt at installing it on Centmin Mod 123.09beta01 with default PHP 7.2 installer and with optional PHP 7.2+ Argon2 password hash algorithm support. Update: Xenforo 2.1.0 final stable upgrade starts from the post here.

    Xenforo 2.1 Related Info Links


    Centmin Mod Related Info & Reading Links


    Centmin Mod 123.09beta01 LEMP Fresh Install Steps



    Steps to setup persistent config file /etc/centminmod/custom_config.inc to setup variables which enable Nginx Brotli compression, if you want PHP Argon2/libsodium, PHP PGO, MariaDB 10.3 default install for MySQL server, and enable free Letsencrypt SSL certificates with dual RSA + ECC SSL certificate support.
    Code (Text):
    # create initial persistent config file to override centmin.sh defaults
    # https://centminmod.com/upgrade.html#persistent
    mkdir -p /etc/centminmod
    touch /etc/centminmod/custom_config.inc
    
    # enable PHP Argon2 support
    # https://community.centminmod.com/threads/14933/
    echo "PHP_ARGON='y'" >> /etc/centminmod/custom_config.inc
    
    # enable brotli compression https://community.centminmod.com/threads/10688/
    echo "NGINX_LIBBROTLI='y'" >> /etc/centminmod/custom_config.inc
    echo "NGXDYNAMIC_BROTLI='y'" >> /etc/centminmod/custom_config.inc
    
    # boost PHP 7 performance by enabling Profile Guided Optimisation flag
    # https://centminmod.com/perf/
    # echo "PHP_PGO='y'" >> /etc/centminmod/custom_config.inc
    
    # mariadb 10.3 default install for private test server testing
    echo "MARIADB_INSTALLTENTHREE='y'" >> /etc/centminmod/custom_config.inc
    
    # install centmin mod latest beta with php-fpm 7.2 default
    # https://community.centminmod.com/threads/centmin-mod-09-beta-branch-testing.4128/
    yum -y update; curl -O https://centminmod.com/betainstaller72.sh && chmod 0700 betainstaller72.sh && bash betainstaller72.sh
    
    # enable letsencrypt ssl certificate + dual RSA+ECDSA ssl certs https://centminmod.com/acmetool/
    echo "LETSENCRYPT_DETECT='y'" >> /etc/centminmod/custom_config.inc
    echo "DUALCERTS='y'" >> /etc/centminmod/custom_config.inc
    


    Create MySQL database name, database username and password via addons/mysqladmin_shell.sh script
    Code (Text):
    cmdir
    cd addons
    ./mysqladmin_shell.sh createuserdb YOURDBNAME YOURDBUSERNAME YOURDBPASSWORD
    

    Code (Text):
    ./mysqladmin_shell.sh createuserdb YOURDBNAME YOURDBUSERNAME YOURDBPASSWORD
    --------------------------------------------------------------
    Basic MySQL Admin - create mysql user & databases
    --------------------------------------------------------------
    --------------------------------------------------------------
    
    Grants for [email protected]
    GRANT USAGE ON *.* TO 'YOURDBUSERNAME'@'localhost' IDENTIFIED BY PASSWORD '*A70F5C74427B819DA658D6B519B1A6949139ED4A'
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER ON `YOURDBNAME`.* TO 'YOURDBUSERNAME'@'localhost'
    
    Ok: MySQL user: YOURDBUSERNAME MySQL database: YOURDBNAME created successfully
    


    Create Nginx Site Vhost Account



    You can use centmin.sh menu option 2 or nv command line to create. I usually use nv command line.

    nv command line options
    Code (Text):
    nv
    
    Usage: /usr/bin/nv [-d yourdomain.com] [-s y|n|yd|le|led|lelive|lelived] [-u ftpusername]
    
      -d  yourdomain.com or subdomain.yourdomain.com
      -s  ssl self-signed create = y or n or https only vhost = yd
      -s  le - letsencrypt test cert or led test cert with https default
      -s  lelive - letsencrypt live cert or lelived live cert with https default
      -u  your FTP username
    
      example:
    
      /usr/bin/nv -d yourdomain.com -s y -u ftpusername
      /usr/bin/nv -d yourdomain.com -s n -u ftpusername
      /usr/bin/nv -d yourdomain.com -s yd -u ftpusername
      /usr/bin/nv -d yourdomain.com -s le -u ftpusername
      /usr/bin/nv -d yourdomain.com -s led -u ftpusername
      /usr/bin/nv -d yourdomain.com -s lelive -u ftpusername
      /usr/bin/nv -d yourdomain.com -s lelived -u ftpusername
    

    Create yourdomain.com Nginx site vhost account with SSL = lelived for free Letsencrypt SSL cert and default to HTTP/2 HTTPS out of the box and use YOURFTPUSERNAME for desired pure-ftpd virtual FTP user.
    Code (Text):
    nv -d yourdomain.com -s lelived -u YOURFTPUSERNAME
    

    End result is Nginx site vhost created for yourdomain.com where:
    • Upload files to public web root at /usr/local/nginx/conf/conf.d/yourdomain.com.ssl.conf
    • Site log directory for access and error logs at /home/nginx/domains/yourdomain.com/log

    Installing Xenforo 2.1 Beta 1



    Installing Xenforo 2.1 Beta 1 requires uploading zip files to server. I usually upload the entire zip files to a staging directory i.e. created at /home/nginx/domains/yourdomain.com/zips and then extra the zip file on server as it's much faster than uploading individual files via FTP/SFTP.

    Example renaming xenforo 2.1 beta 1 zip file to xenforo_2.1-beta1.zip and uploading to /home/nginx/domains/yourdomain.com/zips, then unzipping zip and change file and directory permissions in upload directory contents to nginx user/group and then going into upload directory and copying all files and directories into your web root at /home/nginx/domains/yourdomain.com/public. Then chmod 077 the appropriate directories.
    Code (Text):
    cd /home/nginx/domains/yourdomain.com/zips
    unzip xenforo_2.1-beta1.zip
    chown -R nginx:nginx upload
    cd upload
    \cp -Rpf * /home/nginx/domains/yourdomain.com/public
    cd /home/nginx/domains/yourdomain.com/public
    chmod 0777 internal_data data
    

    Now all your Xenforo 2.1 beta 1 files from upload are in public web root of the Nginx site you created previously at /home/nginx/domains/yourdomain.com/public.

    Now using the instructions from above Info & Reading links you would create your Xenforo 2.1 nginx vhost site structured rules. Example for yourdomain.com for default HTTP/2 HTTPS Nginx site example like. Remove X-Robots-Tag header if you want search engines to index this site. If it's test site, you want to leave X-Robots-Tag header to prevent search engines from indexing this site.

    You would place this in your Nginx vhost site appropriate in /usr/local/nginx/conf/conf.d/yourdomain.com.ssl.conf or if you have non-HTTPS nginx vhost in /usr/local/nginx/conf/conf.d/yourdomain.com.conf. Replace the allow YOURISP_IPADDR with your ISP IP if you want to protect admin.php and restrict access or if not comment out with hash # in front all the allow/deny lines in admin.php content {}.
    Code (Text):
      add_header X-Robots-Tag "noindex, nofollow";
    
      location / {
      include /usr/local/nginx/conf/503include-only.conf;
    
    # block common exploits, sql injections etc
    #include /usr/local/nginx/conf/block.conf;
    
         index index.php index.html index.htm;
         try_files $uri $uri/ /index.php?$uri&$args;
    
      }
    
    location /admin.php {
    #     auth_basic "Private";
    #     auth_basic_user_file /usr/local/nginx/conf/htpasswd_admin_php;
            include /usr/local/nginx/conf/php.conf;
            allow 127.0.0.1;
            allow YOURISP_IPADDR;
            deny all;
    }
    
    location /install/data/ {
         internal;
    }
    
    location /install/templates/ {
         internal;
    }
    
    location /internal_data/ {
         internal;
    }
    
    location /library/ {
         internal;
    }
    
    # xenforo 2 uncomment / remove hash from next 3 lines
    location /src/ {
         internal;
    }
    


    Full nginx site vhost at /usr/local/nginx/conf/conf.d/yourdomain.com.ssl.conf with the Xenforo 2.1 beta1 rules in place for default HTTP/2 HTTPS Nginx vhost site.
    Code (Text):
    #x# HTTPS-DEFAULT
     server {
     
       server_name yourdomain.com www.yourdomain.com;
       return 302 https://yourdomain.com$request_uri;
       include /usr/local/nginx/conf/staticfiles.conf;
     }
    
    #       listen   80;
    #       server_name yourdomain.com www.yourdomain.com;
    #       return 302 https://$server_name$request_uri;
    
    server {
      listen 443 ssl http2 reuseport;
      server_name yourdomain.com www.yourdomain.com;
    
      include /usr/local/nginx/conf/ssl/yourdomain.com/yourdomain.com.crt.key.conf;
      include /usr/local/nginx/conf/ssl_include.conf;
    
      # cloudflare authenticated origin pull cert community.centminmod.com/threads/13847/
      #ssl_client_certificate /usr/local/nginx/conf/ssl/cloudflare/yourdomain.com/origin.crt;
      #ssl_verify_client on;
      http2_max_field_size 16k;
      http2_max_header_size 32k;
      # mozilla recommended
      ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
      ssl_prefer_server_ciphers   on;
      #add_header Alternate-Protocol  443:npn-spdy/3;
    
      # before enabling HSTS line below read centminmod.com/nginx_domain_dns_setup.html#hsts
      #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
      #add_header X-Frame-Options SAMEORIGIN;
      add_header X-Xss-Protection "1; mode=block" always;
      #add_header X-Content-Type-Options "nosniff" always;
      #add_header Referrer-Policy "strict-origin-when-cross-origin";
      #spdy_headers_comp 5;
      ssl_buffer_size 1369;
      ssl_session_tickets on;
     
      # enable ocsp stapling
      resolver 8.8.8.8 8.8.4.4 valid=10m;
      resolver_timeout 10s;
      ssl_stapling on;
      ssl_stapling_verify on;
    
    # ngx_pagespeed & ngx_pagespeed handler
    #include /usr/local/nginx/conf/pagespeed.conf;
    #include /usr/local/nginx/conf/pagespeedhandler.conf;
    #include /usr/local/nginx/conf/pagespeedstatslog.conf;
    
      # limit_conn limit_per_ip 16;
      # ssi  on;
    
      access_log /home/nginx/domains/yourdomain.com/log/access.log combined buffer=256k flush=5m;
      error_log /home/nginx/domains/yourdomain.com/log/error.log;
    
    #  include /usr/local/nginx/conf/autoprotect/yourdomain.com/autoprotect-yourdomain.com.conf;
      root /home/nginx/domains/yourdomain.com/public;
      # uncomment cloudflare.conf include if using cloudflare for
      # server and/or vhost site
      #include /usr/local/nginx/conf/cloudflare.conf;
      include /usr/local/nginx/conf/503include-main.conf;
      add_header X-Robots-Tag "noindex, nofollow";
    
      location / {
      include /usr/local/nginx/conf/503include-only.conf;
    
    # block common exploits, sql injections etc
    #include /usr/local/nginx/conf/block.conf;
    
         index index.php index.html index.htm;
         try_files $uri $uri/ /index.php?$uri&$args;
    
      }
    
    location /admin.php {
    #     auth_basic "Private";
    #     auth_basic_user_file /usr/local/nginx/conf/htpasswd_admin_php;
            include /usr/local/nginx/conf/php.conf;
            allow 127.0.0.1;
            allow YOURISP_IPADDR;
            deny all;
    }
    
    location /install/data/ {
         internal;
    }
    
    location /install/templates/ {
         internal;
    }
    
    location /internal_data/ {
         internal;
    }
    
    location /library/ {
         internal;
    }
    
    # xenforo 2 uncomment / remove hash from next 3 lines
    location /src/ {
         internal;
    }
    
      include /usr/local/nginx/conf/pre-staticfiles-local-yourdomain.com.conf;
      include /usr/local/nginx/conf/pre-staticfiles-global.conf;
      include /usr/local/nginx/conf/staticfiles.conf;
      include /usr/local/nginx/conf/php.conf;
     
      include /usr/local/nginx/conf/drop.conf;
      #include /usr/local/nginx/conf/errorpage.conf;
      include /usr/local/nginx/conf/vts_server.conf;
    }
    

    Note, I commented out the security header for 'nosniff' as it seems XF 2.1 serves up that header itself, so you end up with duplicate of that header.
    Code (Text):
      #add_header X-Content-Type-Options "nosniff" always;
    


    Xenforo 2.1 Beta 1 Installation



    Now visit in your web browser yourdomain.com/install page to proceed with install, noting the MySQL database name, database username and password you created with mysqladmin_shell.sh addon.

    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-01.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-02.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-03.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-04.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-05.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-06.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-07.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-08.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-09.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-10.png

    Xenforo 2.1 Beta 1 src/config.php Changes For Argon2 Support



    You will also have to edit the generated src/config.php with optional settings outlined at Config.php options - XenForo 2 Manual and XF 2.1 - Welcome to XenForo 2.1 / Assorted improvements for enabling PHP Argon2 password hash algorithm support in Xenforo 2.1 beta1. Centmin Mod 123.09beta01 users can enable PHP Argon2 support via outlined steps here - you need to set PHP_ARGON='y' in persistent config file at /etc/centminmod/custom_config.inc and recompile PHP 7.2 to enable argon2 and libsodium support.

    First verify that your PHP 7.2 or 7.3 installation has Argon2 and libsodium support via these commands:

    Check libsodium PHP extension is installed and loaded
    Code (Text):
    php --ri sodium
    

    Output if libsodium is installed and loaded as PHP extension
    Code (Text):
    php --ri sodium
    
    sodium
    
    sodium support => enabled
    libsodium headers version => 1.0.16
    libsodium library version => 1.0.16
    

    Check if PHP 7.2 or 7.3 has argon2 support compiled via command:
    Code (Text):
    php -r 'print_r(get_defined_constants());' | grep -i argon
    

    For PHP 7.2 you will get this output
    Code (Text):
    php -r 'print_r(get_defined_constants());' | grep -i argon
        [PASSWORD_ARGON2I] => 2
        [PASSWORD_ARGON2_DEFAULT_MEMORY_COST] => 1024
        [PASSWORD_ARGON2_DEFAULT_TIME_COST] => 2
        [PASSWORD_ARGON2_DEFAULT_THREADS] => 2
        [SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13] => 1
        [SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13] => 2
        [SODIUM_CRYPTO_PWHASH_STRPREFIX] => $argon2id$
    

    For PHP 7.3 you will get this output with additional argon2id line
    Code (Text):
    php -r 'print_r(get_defined_constants());' | grep -i argon
       [PASSWORD_ARGON2I] => 2
       [PASSWORD_ARGON2ID] => 3
       [PASSWORD_ARGON2_DEFAULT_MEMORY_COST] => 1024
       [PASSWORD_ARGON2_DEFAULT_TIME_COST] => 2
       [PASSWORD_ARGON2_DEFAULT_THREADS] => 2
       [SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13] => 1
       [SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13] => 2
       [SODIUM_CRYPTO_PWHASH_STRPREFIX] => $argon2id$
    

    Once verified your PHP 7.2/7.3 install supports argon2, you can edit your /home/nginx/domains/yourdomain.com/public/src/config.php and set the following config options.

    For PHP 7.2
    Code (Text):
    $config['auth'] = [
       'algo' => PASSWORD_ARGON2I
    ];
    

    For PHP 7.3
    Code (Text):
    $config['auth'] = [
       'algo' => PASSWORD_ARGON2ID
    ];
    

    PHP 7.2.12 php-config output to show PHP version, extensions and how PHP was configured
    Code (Text):
    php-config
    Usage: /usr/local/bin/php-config [OPTION]
    Options:
      --prefix            [/usr/local]
      --includes          [-I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib]
      --ldflags           [ -L/usr/local/lib64]
      --libs              [-lcrypt  -lc-client  -lzip -lzip -lz -lexslt -ltidy -largon2 -lresolv -lcrypt -lsodium -ledit -lncurses -laspell -lpspell -lrt -lldap -llber -lstdc++ -lcrypt -lpam -lgmp -lX11 -lXpm -lpng -lz -ljpeg -lwebp -lenchant -lbz2 -lz -lrt -lm -ldl -lnsl  -lxml2 -lz -lm -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lssl -lcrypto -lfreetype -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -ldl -lm -licui18n -licuuc -licudata -ldl -lm -licuio -lxml2 -lz -lm -ldl -lnetsnmp -lssl -lssl -lcrypto -lm -lxml2 -lz -lm -ldl -lcrypt -largon2 -largon2 -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxslt -lxml2 -lz -ldl -lm -lssl -lcrypto -lcrypt ]
      --extension-dir     [/usr/local/lib/php/extensions/no-debug-non-zts-20170718]
      --include-dir       [/usr/local/include/php]
      --man-dir           [/usr/local/php/man]
      --php-binary        [/usr/local/bin/php]
      --php-sapis         [ cli embed fpm phpdbg cgi]
      --configure-options [--enable-fpm --enable-opcache --enable-intl --enable-pcntl --with-mcrypt --with-snmp --enable-embed=shared --with-mhash --with-zlib --with-gettext --enable-exif --enable-zip --with-libzip --with-bz2 --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --with-pear --enable-mbstring --with-openssl --with-mysql=mysqlnd --with-libdir=lib64 --with-mysqli=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --with-curl --with-gd --with-xmlrpc --enable-bcmath --enable-calendar --enable-ftp --enable-gd-native-ttf --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr --with-webp-dir=/usr --with-t1lib=/usr --enable-pdo --with-pdo-sqlite --with-pdo-mysql=mysqlnd --enable-inline-optimization --with-imap --with-imap-ssl --with-kerberos --with-readline --with-libedit --with-gmp --with-pspell --with-tidy --with-enchant --with-fpm-user=nginx --with-fpm-group=nginx --disable-fileinfo --with-ldap --with-ldap-sasl --with-password-argon2 --with-sodium --with-config-file-scan-dir=/etc/centminmod/php.d --with-xsl]
      --version           [7.2.12]
      --vernum            [70212]
    


    Nginx HTTP/2 HTTPS With TLS 1.3



    Centmin Mod 123.09beta01 with Nginx 1.15.6 + OpenSSL 1.1.1a with TLS 1.3 support

    ssllabs-tls-13-01.png
    ssllabs-tls-13-02.png
     
    Last edited: Feb 5, 2019
    • Informative Informative x 1
  2. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1 Beta 1 Admin Option Screenshots



    Screenshots from Xenforo 2.1 Beta 1 admin area.

    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-01.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-02.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-03.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-04.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-05.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-06.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-07.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-08.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-09.png xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-10.png
    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-11.png
    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-12.png
    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-options-01.png
    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-admin-options-02.png
     
    • Like Like x 1
  3. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1 Beta 1 Front End



    xenforo21-beta01-centminmod-123.09beta01-install-php7.2.12-mariadb10.3-argon2-frontend-02.png
     
    Last edited: Nov 21, 2018
  4. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1 Beta 1 MySQL Database Tables



    List of created database tables for Xenforo 2.1 Beta 1 fresh install on MariaDB 10.3.11 MySQL server
    Code (Text):
    mysqladmin ver
    mysqladmin  Ver 9.1 Distrib 10.3.11-MariaDB, for Linux on x86_64
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Server version          10.3.11-MariaDB
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /var/lib/mysql/mysql.sock
    Uptime:                 6 hours 9 min 10 sec
    
    Threads: 4  Questions: 330214  Slow queries: 0  Opens: 413  Flush tables: 1  Open tables: 217  Queries per second avg: 14.908
    

    Code (Text):
    +---------------------------------------------+----------------+----------------+-----------+------------+---------+------------+--------------------+
    | Table Name                                  | Number of Rows | Storage Engine | Data Size | Index Size | Total   | ROW_FORMAT | TABLE_COLLATION    |
    | YOURDB.xf_addon                             | 1 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_addon_install_batch               | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_admin                             | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_admin_log                         | 9 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_admin_navigation                  | 137 Rows       | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_admin_permission                  | 29 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_admin_permission_entry            | 29 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_advertising                       | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_advertising_position              | 24 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_api_attachment_key                | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_api_key                           | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_api_key_scope                     | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_api_scope                         | 18 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_approval_queue                    | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_attachment                        | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_attachment_data                   | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_attachment_view                   | 0 Rows         | MEMORY         | 0.00MB    | 0.00MB     | 0.00MB  | Fixed      | utf8mb4_general_ci |
    | YOURDB.xf_ban_email                         | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_bb_code                           | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_bb_code_media_site                | 18 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_bookmark_item                     | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_bookmark_label                    | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_bookmark_label_use                | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_captcha_log                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_captcha_question                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_category                          | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_change_log                        | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_class_extension                   | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_code_event                        | 86 Rows        | InnoDB         | 0.08MB    | 0.00MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_code_event_listener               | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_connected_account_provider        | 7 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_content_spam_cache                | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_content_type_field                | 128 Rows       | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_conversation_master               | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_conversation_message              | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_conversation_recipient            | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_conversation_user                 | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_cron_entry                        | 17 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_css_cache                         | 18 Rows        | InnoDB         | 1.52MB    | 0.02MB     | 1.53MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_data_registry                     | 44 Rows        | InnoDB         | 0.23MB    | 0.00MB     | 0.23MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_deletion_log                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_draft                             | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_edit_history                      | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_editor_dropdown                   | 2 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_email_bounce_log                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_email_bounce_soft                 | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_error_log                         | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_feed                              | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_feed_log                          | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_file_check                        | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_find_new                          | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_find_new_default                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_flood_check                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum                             | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum_field                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum_prefix                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum_prompt                      | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum_read                        | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_forum_watch                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_help_page                         | 6 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_image_proxy                       | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_image_proxy_referrer              | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_ip                                | 4 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_ip_match                          | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_job                               | 2 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_language                          | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_link_forum                        | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_link_proxy                        | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_link_proxy_referrer               | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_login_attempt                     | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_mail_queue                        | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_member_stat                       | 5 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_moderator                         | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_moderator_content                 | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_moderator_log                     | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_navigation                        | 30 Rows        | InnoDB         | 0.05MB    | 0.02MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_navigation_type                   | 3 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_news_feed                         | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_node                              | 2 Rows         | InnoDB         | 0.02MB    | 0.08MB     | 0.09MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_node_type                         | 4 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_notice                            | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_notice_dismissed                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_oembed                            | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_oembed_referrer                   | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_option                            | 184 Rows       | InnoDB         | 0.05MB    | 0.00MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_option_group                      | 28 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_option_group_relation             | 221 Rows       | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_page                              | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_payment_profile                   | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_payment_provider                  | 4 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_payment_provider_log              | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission                        | 103 Rows       | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_cache_content          | 10 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_combination            | 5 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_combination_user_group | 10 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_entry                  | 122 Rows       | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_entry_content          | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_permission_interface_group        | 10 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_phrase                            | 8849 Rows      | InnoDB         | 1.52MB    | 0.56MB     | 2.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_phrase_compiled                   | 18634 Rows     | InnoDB         | 2.52MB    | 0.00MB     | 2.52MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_phrase_map                        | 18041 Rows     | InnoDB         | 2.02MB    | 6.92MB     | 8.94MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_poll                              | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_poll_response                     | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_poll_vote                         | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_post                              | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_profile_post                      | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_profile_post_comment              | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_purchasable                       | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_purchase_request                  | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_reaction                          | 6 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_reaction_content                  | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_registration_spam_cache           | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_report                            | 0 Rows         | InnoDB         | 0.02MB    | 0.08MB     | 0.09MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_report_comment                    | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_route                             | 176 Rows       | InnoDB         | 0.05MB    | 0.02MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_route_filter                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_search                            | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_search_index                      | 0 Rows         | MyISAM         | 0.00MB    | 0.00MB     | 0.00MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_session                           | 2 Rows         | MyISAM         | 0.00MB    | 0.00MB     | 0.00MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_session_activity                  | 4 Rows         | MEMORY         | 0.06MB    | 0.06MB     | 0.12MB  | Fixed      | utf8mb4_general_ci |
    | YOURDB.xf_session_admin                     | 2 Rows         | MyISAM         | 0.00MB    | 0.00MB     | 0.00MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_session_install                   | 0 Rows         | MyISAM         | 0.00MB    | 0.00MB     | 0.00MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_sitemap                           | 1 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_smilie                            | 31 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_smilie_category                   | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_spam_cleaner_log                  | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_spam_trigger_log                  | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_stats_daily                       | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_style                             | 1 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_style_property                    | 245 Rows       | InnoDB         | 0.09MB    | 0.02MB     | 0.11MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_style_property_group              | 27 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_style_property_map                | 490 Rows       | InnoDB         | 0.05MB    | 0.03MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_tag                               | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_tag_content                       | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_tag_result_cache                  | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template                          | 771 Rows       | InnoDB         | 21.52MB   | 0.08MB     | 21.59MB | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template_history                  | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template_map                      | 2068 Rows      | InnoDB         | 0.19MB    | 0.34MB     | 0.53MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template_modification             | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template_modification_log         | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_template_phrase                   | 5307 Rows      | InnoDB         | 0.41MB    | 0.27MB     | 0.67MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_tfa_attempt                       | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_tfa_provider                      | 4 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread                            | 0 Rows         | InnoDB         | 0.02MB    | 0.08MB     | 0.09MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_field                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_field_value                | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_prefix                     | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_prefix_group               | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_prompt                     | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_prompt_group               | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_read                       | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_redirect                   | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_reply_ban                  | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_user_post                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_thread_view                       | 0 Rows         | MEMORY         | 0.00MB    | 0.00MB     | 0.00MB  | Fixed      | utf8mb4_general_ci |
    | YOURDB.xf_thread_watch                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_trophy                            | 9 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_unfurl_result                     | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_upgrade_check                     | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_upgrade_job                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_upgrade_log                       | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user                              | 1 Rows         | InnoDB         | 0.02MB    | 0.14MB     | 0.16MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_alert                        | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_alert_optout                 | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_authenticate                 | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_ban                          | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_change_temp                  | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_confirmation                 | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_connected_account            | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_field                        | 3 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_field_value                  | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_follow                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_group                        | 4 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_group_change                 | 2 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_group_promotion              | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_group_promotion_log          | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_group_relation               | 3 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_ignored                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_option                       | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_privacy                      | 1 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_profile                      | 1 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_push_optout                  | 0 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_push_subscription            | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_reject                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_remember                     | 1 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_tfa                          | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_tfa_trusted                  | 0 Rows         | InnoDB         | 0.02MB    | 0.03MB     | 0.05MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_title_ladder                 | 4 Rows         | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_trophy                       | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_upgrade                      | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_upgrade_active               | 0 Rows         | InnoDB         | 0.02MB    | 0.05MB     | 0.06MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_user_upgrade_expired              | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_warning                           | 0 Rows         | InnoDB         | 0.02MB    | 0.06MB     | 0.08MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_warning_action                    | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_warning_action_trigger            | 0 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_warning_definition                | 4 Rows         | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_widget                            | 10 Rows        | InnoDB         | 0.02MB    | 0.02MB     | 0.03MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_widget_definition                 | 15 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    | YOURDB.xf_widget_position                   | 20 Rows        | InnoDB         | 0.02MB    | 0.00MB     | 0.02MB  | Dynamic    | utf8mb4_general_ci |
    
     
  5. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1 Beta 1 Known Issues


    • Bug in XF 1.5 to 2.1 Beta 1 upgrade means, you need to revert to XF 1.5 backup prior to upgrade and re-do upgrades with soon to be released 2.1 Beta 2 which has the fix Fixed - Serialised content array not converted to json. Hence XF 2.1 beta 1 isn't production ready and should be tested on a test copy of your XF 1.5 live forum or on a separate test instance and always backup XF 1.5 files and databases before trying test upgrades !
     
  6. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1 Beta 2 One Click Upgrades



    Xenforo 2.1 Beta 2 was released and can be upgraded using the new One Click Upgrade system.

    By default upgrades only check for stable versions unless you change that in Options > Basic board information section.

    xf21-beta2-upgrade-check-03.png xf21-beta2-upgrade-check-04.png xf21-beta2-upgrade-check-05.png xf21-beta2-upgrade-check-06.png xf21-beta2-upgrade-check-08.png xf21-beta2-upgrade-check-09.png

    Xenforo 2.1 Command Line Upgrades



    If you want to do manual XF 2.1 upgrade instead, you would use below commands to upload the updated XF zip file, unzip it, change file/directory permissions to nginx user/group for upload directory contents, copy the uploads directory contents to XF web root or where you installed XF php files. Then run the cmd.php xf:upgrade via SSH command line. The last 2 lines to remove zips, you can do or leave as is.
    Code (Text):
    cd /home/nginx/domains/yourdomain.com/zips
    unzip xenforo_xxx.zip
    chown -R nginx:nginx upload
    cd upload
    \cp -Rpf * /home/nginx/domains/yourdomain.com/public
    php /home/nginx/domains/yourdomain.com/public/cmd.php xf:upgrade
    # remove zips optional for last 2 commands
    cd /home/nginx/domains/yourdomain.com/zips
    rm -f /home/nginx/domains/yourdomain.com/zips/*
    
     
    Last edited: Nov 22, 2018
    • Like Like x 1
  7. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1.0 Final Upgrade



    Xenforo 2.1.0 final stable release is out now.

    Update via one-click method

    xf210-upgrade-one-click-01.png

    Curious to see what happens when you try to update to Xenforo 2.1.0 final via previous post's outlined command line upgrade method when you're already on Xenforo 2.1.0. You get
    Code (Text):
    php /home/nginx/domains/yourdomain.com/public/cmd.php xf:upgrade
    Current version: 2010070
    Upgrade target: 2010070 (2.1.0)
    You are already running the latest version. Rebuild the master data? [y/n] y
    Importing... Master data (Templates)
    Importing... Master data (Templates: 16.6%)
    Rebuilding... Phrases .
    
    Rebuild completed successfully.
    
     
    Last edited: Feb 5, 2019
  8. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1.0 Cache Setup



    Xenforo 2.1.0 has various data, session and page cache setup methods supported for APC Cache, file system cache, Memcached, Redis cache, WinCache etc. They are all outlined here.

    Xenforo 2.1.0 Native Redis Cache Setup



    Redis cache for Xenforo 2.1.0 is probably the best choice for Centmin Mod users. As per Xenforo 2.1.0 manual at Cache support - XenForo 2 Manual for Redis cache setup you edit your Xenforo 2.1.0 src/config.php config file with the following but only after Redis server is installed (see below Redis Server Installation guide).

    Configured for Redis server that listens on 127.0.0.1 and TCP port 6379 with password field commented out unless you have set a Redis server password and using Redis database number 3 for global cache, 5 for page cache and 7 for css cache (default is database number 0). Xenforo recommends separate Redis server instances or different cache method though for page cache rather than separate databases to have finer grain control over memory usage parameters/usage. Separate databases still can come in handy on same Redis server instance as you can flush/empty database cache by database number so you can clear css cache database 7 without clearing page cache database 5 or global cache database 3 and vice versa.

    Optional: set $config['cookie']['prefix'] to non-default value other than xf_ and if igbinary PHP extension exists set serializer.

    Verify igbinary PHP extension exists
    Code (Text):
    php --ri igbinary
    
    igbinary
    
    igbinary support => enabled
    igbinary version => 3.0.0-dev
    igbinary APCu serializer ABI => no
    igbinary session support => yes
    
    Directive => Local Value => Master Value
    igbinary.compact_strings => On => On
    

    add to Xenforo 2.1.0 src/config.php config file the following:
    Code (Text):
    $config['cookie']['prefix'] = 'xfa_';
    
    // https://xenforo.com/xf2-docs/manual/cache/
    // global cache
    $config['cache']['enabled'] = true;
    $config['cache']['namespace'] = 'xfaredis_';
    $config['cache']['provider'] = 'Redis';
    $config['cache']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'serializer' => 'igbinary',
    //  'password' => 'password',
    //  'timeout' => 0.0,
        'database' => 3,
    //  'persistent' => true,
    //  'persistent_id' => 'global'
    ];
    
    // session cache
    $config['cache']['sessions'] = true;
    
    // guest page cache
    $config['pageCache']['enabled'] = true;
    $config['pageCache']['lifetime'] = 900;
    $config['pageCache']['recordSessionActivity'] = true;
    $config['cache']['context']['page']['namespace'] = 'xfaredispagecache_';
    $config['cache']['context']['page']['provider'] = 'Redis';
    $config['cache']['context']['page']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'serializer' => 'igbinary',
        'database' => 5,
    //  'timeout' => 1,
    //  'persistent' => true
    ];
    
    // css cache
    // $config['css']['enabled'] = true;
    $config['cache']['context']['css']['provider'] = 'Redis';
    $config['cache']['context']['css']['namespace'] = 'xfarediscsscache_';
    $config['cache']['context']['css']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'serializer' => 'igbinary',
        'database' => 7,
    //  'timeout' => 1,
    //  'persistent' => true
    ];
    


    Redis Server Installation



    Centmin Mod 123.09beta01 doesn't install Redis server by default. You can either use manual Redis server YUM install instructions here which can apply to CentOS 6 and CentOS 7. Or use redis-install.sh script instructions below for CentOS 7 64bit OSes only.
    Code (Text):
    cd /svr-setup
    wget -O redis-install.sh https://github.com/centminmod/centminmod-redis/raw/master/redis-install.sh
    chmod +x redis-install.sh
    ./redis-install.sh install
    

    Example redis-install.sh run
    Code (Text):
    ./redis-install.sh install
    install redis server...
    Loaded plugins: fastestmirror, versionlock
    Loading mirror speeds from cached hostfile
    epel/x86_64/metalink                                                                                                                                                                                                               |  16 kB  00:00:00
     * base: mirror.keystealth.org
     * epel: pubmirror1.math.uh.edu
     * extras: mirrors.xtom.com
     * remi: mirrors.mediatemple.net
     * rpmforge: mirror.us.leaseweb.net
     * updates: mirror.us.oneandone.net
    base                                                                                                                                                                                                                               | 3.6 kB  00:00:00
    centos-sclo-rh                                                                                                                                                                                                                     | 3.0 kB  00:00:00
    centos-sclo-sclo                                                                                                                                                                                                                   | 2.9 kB  00:00:00
    epel                                                                                                                                                                                                                               | 4.7 kB  00:00:00
    extras                                                                                                                                                                                                                             | 3.4 kB  00:00:00
    mariadb                                                                                                                                                                                                                            | 2.9 kB  00:00:00
    nginx-amplify                                                                                                                                                                                                                      | 2.9 kB  00:00:00
    remi                                                                                                                                                                                                                               | 3.0 kB  00:00:00
    rpmforge                                                                                                                                                                                                                           | 1.9 kB  00:00:00
    updates                                                                                                                                                                                                                            | 3.4 kB  00:00:00
    (1/2): epel/x86_64/updateinfo                                                                                                                                                                                                      | 955 kB  00:00:00
    (2/2): epel/x86_64/primary_db                                                                                                                                                                                                      | 6.6 MB  00:00:00
    Excluding 5 updates due to versionlock (use "yum versionlock status" to show them)
    Resolving Dependencies
    --> Running transaction check
    ---> Package redis.x86_64 0:5.0.3-1.el7.remi will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ==========================================================================================================================================================================================================================================================
     Package                                                   Arch                                                       Version                                                              Repository                                                Size
    ==========================================================================================================================================================================================================================================================
    Installing:
     redis                                                     x86_64                                                     5.0.3-1.el7.remi                                                     remi                                                     919 k
    
    Transaction Summary
    ==========================================================================================================================================================================================================================================================
    Install  1 Package
    
    Total download size: 919 k
    Installed size: 3.0 M
    Downloading packages:
    redis-5.0.3-1.el7.remi.x86_64.rpm                                                                                                                                                                                                  | 919 kB  00:00:02
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : redis-5.0.3-1.el7.remi.x86_64                                                                                                                                                                                                          1/1
      Verifying  : redis-5.0.3-1.el7.remi.x86_64                                                                                                                                                                                                          1/1
    
    Installed:
      redis.x86_64 0:5.0.3-1.el7.remi                                                                                                                                                            
    
    Complete!
    Created symlink from /etc/systemd/system/multi-user.target.wants/disable-thp.service to /etc/systemd/system/disable-thp.service.
    Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    sysctl: permission denied on key 'vm.overcommit_memory'
    redis server installled
    

    If you're using OpenVZ VPS, your install output may contain the below permission denied message - you can ignore than as OpenVZ VPS doesn't allow you to do TCP/Kernel settings changes like you can with Xen/KVM VPS or dedicated servers.
    Code (Text):
    sysctl: permission denied on key 'vm.overcommit_memory'
    

    If you check redis server logs at /var/log/redis/redis.log and are on OpenVZ VPS, you again will get a message like below - this is again due to OpenVZ VPS not allowing TCP/Kernel setting changes like you can with Xen/KVM VPS or dedicated servers.
    Code (Text):
    WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    
    WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect
    

    For optimal server setups as outlined on Centmin Mod install page, use KVM VPS or dedicated servers and avoid OpenVZ VPS as they can't do TCP/Kernel level optimisations.

    First time you view redis service status after initial install you may see a 'Failed to add dependency on rc.local, ignoring: Invalid argument' message, you can remove the file at
    /etc/systemd/system/redis.service.d/after-rc-local.conf and do a redis server restart to clear that up
    Code (Text):
    service redis status | sed -e "s|$(hostname)|hostname|g"
    Redirecting to /bin/systemctl status redis.service
    * redis.service - Redis persistent key-value database
       Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/redis.service.d
               `-after-rc-local.conf, limit.conf
       Active: active (running) since Tue 2019-02-05 05:49:46 UTC; 3min 32s ago
     Main PID: 2169 (redis-server)
       CGroup: /system.slice/redis.service
               `-2169 /usr/bin/redis-server 127.0.0.1:6379
    
    Feb 05 05:49:46 hostname systemd[1]: Starting Redis persistent key-value database...
    Feb 05 05:49:46 hostname systemd[1]: Started Redis persistent key-value database.
    Feb 05 05:49:46 hostname systemd[1]: [/etc/systemd/system/redis.service.d/after-rc-local.conf:2] Failed to add dependency on rc.local, ignoring: Invalid argument
    

    Code (Text):
    rm /etc/systemd/system/redis.service.d/after-rc-local.conf
    service redis restart
    
    service redis status | sed -e "s|$(hostname)|hostname|g"
    Redirecting to /bin/systemctl status redis.service
    * redis.service - Redis persistent key-value database
       Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/redis.service.d
               `-after-rc-local.conf, limit.conf
       Active: active (running) since Tue 2019-02-05 05:54:06 UTC; 15s ago
      Process: 2925 ExecStop=/usr/libexec/redis-shutdown (code=exited, status=0/SUCCESS)
     Main PID: 2941 (redis-server)
       CGroup: /system.slice/redis.service
               `-2941 /usr/bin/redis-server 127.0.0.1:6379
    
    Feb 05 05:54:06 hostname systemd[1]: Starting Redis persistent key-value database...
    Feb 05 05:54:06 hostname systemd[1]: Started Redis persistent key-value database.
    

    Code (Text):
    redis-cli --version
    redis-cli 5.0.3
    

    Redis server info via redis-cli info command
    Code (Text):
    redis-cli info
    # Server
    redis_version:5.0.3
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:5194991bde1f5722
    redis_mode:standalone
    os:Linux 2.6.32-042stab127.2 x86_64
    arch_bits:64
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:4.8.5
    process_id:18517
    run_id:fa105b40484d4f3b3153c8c743449c2ecc3c1acc
    tcp_port:6379
    uptime_in_seconds:1824
    uptime_in_days:0
    hz:10
    configured_hz:10
    lru_clock:5894882
    executable:/usr/bin/redis-server
    config_file:/etc/redis.conf
    
    # Clients
    connected_clients:2
    client_recent_max_input_buffer:2
    client_recent_max_output_buffer:0
    blocked_clients:0
    
    # Memory
    used_memory:1333192
    used_memory_human:1.27M
    used_memory_rss:4026368
    used_memory_rss_human:3.84M
    used_memory_peak:1707296
    used_memory_peak_human:1.63M
    used_memory_peak_perc:78.09%
    used_memory_overhead:863152
    used_memory_startup:792056
    used_memory_dataset:470040
    used_memory_dataset_perc:86.86%
    allocator_allocated:1891536
    allocator_active:2203648
    allocator_resident:5111808
    total_system_memory:2147483648
    total_system_memory_human:2.00G
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    used_memory_scripts:0
    used_memory_scripts_human:0B
    number_of_cached_scripts:0
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    allocator_frag_ratio:1.17
    allocator_frag_bytes:312112
    allocator_rss_ratio:2.32
    allocator_rss_bytes:2908160
    rss_overhead_ratio:0.79
    rss_overhead_bytes:-1085440
    mem_fragmentation_ratio:3.17
    mem_fragmentation_bytes:2756080
    mem_not_counted_for_evict:0
    mem_replication_backlog:0
    mem_clients_slaves:0
    mem_clients_normal:66616
    mem_aof_buffer:0
    mem_allocator:jemalloc-5.1.0
    active_defrag_running:0
    lazyfree_pending_objects:0
    
    # Persistence
    loading:0
    rdb_changes_since_last_save:4
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1549398132
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    rdb_last_cow_size:643072
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok
    aof_last_cow_size:0
    
    # Stats
    total_connections_received:8
    total_commands_processed:185
    instantaneous_ops_per_sec:0
    total_net_input_bytes:484436
    total_net_output_bytes:1747311
    instantaneous_input_kbps:0.00
    instantaneous_output_kbps:0.00
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:2
    expired_stale_perc:0.00
    expired_time_cap_reached_count:0
    evicted_keys:0
    keyspace_hits:801
    keyspace_misses:89
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:173
    migrate_cached_sockets:0
    slave_expires_tracked_keys:0
    active_defrag_hits:0
    active_defrag_misses:0
    active_defrag_key_hits:0
    active_defrag_key_misses:0
    
    # Replication
    role:master
    connected_slaves:0
    master_replid:cc1eb4d724d931b6b91e41ae8a14400e63a358e6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
    # CPU
    used_cpu_sys:0.486925
    used_cpu_user:1.083835
    used_cpu_sys_children:0.001999
    used_cpu_user_children:0.003999
    
    # Cluster
    cluster_enabled:0
    
    # Keyspace
    db3:keys=44,expires=44,avg_ttl=2188105
    db5:keys=4,expires=4,avg_ttl=9257037
    db7:keys=4,expires=4,avg_ttl=1913233
    

    Code (Text):
    redis-cli info commandstats
    # Commandstats
    cmdstat_mget:calls=31,usec=913,usec_per_call=29.45
    cmdstat_setex:calls=61,usec=209,usec_per_call=3.43
    cmdstat_select:calls=40,usec=59,usec_per_call=1.48
    cmdstat_get:calls=53,usec=451,usec_per_call=8.51
    cmdstat_info:calls=1,usec=22168,usec_per_call=22168.00
    

    Redis server listens on 127.0.0.1 on default port 6379 with redis config file at
    /etc/redis.conf

    Multiple Redis Server Instances



    If you want to have as separate Redis server instance for each Xenforo 2.1.0 cache context i.e. global, page cache and css cache, you will need to create more Redis server instances where each listen on their own port, have their own filesystem data directory and own service start/stop files and own config files. You can do this manually. I wrote a redis-generator.sh script for CentOS 7 and Centmin Mod only usage which can automate the entire process. No support provided by me, so use with your own discretion.

    Usage options
    Code (Text):
    ./redis-generator.sh
    
    * Usage: where X equal postive integer for number of redis
    servers to create with incrementing TCP redis ports
    starting at STARTPORT=6479.
    * prep - standalone prep command installs redis-cluster-tool
    * prepupdate - standalone prep update command updates redis-cluster-tool
    * multi X - no. of standalone redis instances to create
    * multi-cache X - no. of standalone redis instances + disable ondisk persistence
    * clusterprep X - no. of cluster enabled config instances
    * clustermake 6 - to enable cluster mode + create cluster
    * clustermake 9 - flag to enable cluster mode + create cluster
    * replication X - create redis replication
    * replication X 6579 - create replication with custom start port 6579
    * replication-cache X - create redis replication + disable ondisk persistence
    * replication-cache X 6579 - create replication with custom start port 6579
    * delete X - no. of redis instances to delete
    * delete X 6579 - no. of redis instances to delete + custom start port 6579
    
    ./redis-generator.sh prep
    ./redis-generator.sh prepupdate
    ./redis-generator.sh multi X
    ./redis-generator.sh multi-cache X
    ./redis-generator.sh clusterprep X
    ./redis-generator.sh clustermake 6
    ./redis-generator.sh clustermake 9
    ./redis-generator.sh replication X
    ./redis-generator.sh replication X 6579
    ./redis-generator.sh replication-cache X
    ./redis-generator.sh replication-cache X 6579
    ./redis-generator.sh delete X
    ./redis-generator.sh delete X 6579
    

    Now you can generate multiple Redis server instances using multi or multi-cache options. The multi option keeps on disk persistence enabled which is the default. If you plan to use Redis server for any other web/php app which stores data permanently i.e. NodeBB forum where forum data is saved to Redis server. But if you know your Redis data usage is only for caching where you are confident loosing that Redis data is not important and only used for caching which can be re-created data wise, then use multi-cache option.
    Code (Text):
    ./redis-generator.sh multi X
    ./redis-generator.sh multi-cache X
    

    As I only plan for 2 new separate Redis server instances to be used for caching only without ondisk data persistence, I will use multi-cache option.

    First edit redis-generator.sh and change DEBUG_REDISGEN='y' to DEBUG_REDISGEN='n'. The default is only to do debug runs which means output of what is to be created is shown, but nothing is actually done - nothing is actually created until DEBUG_REDISGEN='n' is set.

    This is debug default DEBUG_REDISGEN='y' run creating 2 Redis server instances starting at port 6479 and incrementing based on value of X
    Code (Text):
    ./redis-generator.sh multi-cache 2
    
    Creating redis servers (with ondisk persistence disabled) starting at TCP = 6479...
    -------------------------------------------------------
    creating redis server: redis6479.service [increment value: 0]
    redis TCP port: 6479
    create systemd redis6479.service
    cp -a /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis6479.service
    create /etc/redis6479/redis6479.conf config file
    mkdir -p /etc/redis6479
    cp -a /etc/redis.conf /etc/redis6479/redis6479.conf
    \cp -af /usr/libexec/redis-shutdown /usr/local/bin/redis6479-shutdown
    sed -i "s|SERVICE_NAME=redis|SERVICE_NAME=redis6479|" /usr/local/bin/redis6479-shutdown
    sed -i "s|CONFIG_FILE="\/etc\/$SERVICE_NAME.conf"|CONFIG_FILE="\/etc\/$SERVICE_NAME\/$SERVICE_NAME.conf"|" /usr/local/bin/redis6479-shutdown
    sed -i "s|"$SERVICE_NAME" = redis|"$SERVICE_NAME" = redis6479|" /usr/local/bin/redis6479-shutdown
    sed -i "s|6379|6479|" /usr/local/bin/redis6479-shutdown
    mkdir -p /etc/systemd/system/redis6479.service.d/
    \cp -af /etc/systemd/system/redis.service.d/limit.conf /etc/systemd/system/redis6479.service.d/limit.conf
    sed -i "s|^port 6379|port 6479|" /etc/redis6479/redis6479.conf
    mkdir -p /var/lib/redis6479
    chown -R redis:redis /var/lib/redis6479
    ln -s /usr/bin/redis-server /etc/redis6479/redis-server
    sed -i "s|\/usr\/bin\/redis-server|\/etc\/redis6479\/redis-server|" /usr/lib/systemd/system/redis6479.service
    sed -i 's|\/usr\/libexec\/redis-shutdown|\/usr\/local\/bin\/redis6479-shutdown|' /usr/lib/systemd/system/redis6479.service
    sed -i "s|dir \/var\/lib\/redis\/|dir \/var\/lib\/redis6479|" /etc/redis6479/redis6479.conf
    sed -i 's|^daemonize no|daemonize yes|' /etc/redis6479/redis6479.conf
    sed -i "s|cluster-config-file nodes-6379.conf|cluster-config-file nodes-6479.conf|" /etc/redis6479/redis6479.conf
    sed -i "s|unixsocket \/tmp\/redis.sock|unixsocket \/var\/run\/redis\/redis6479.sock|" /etc/redis6479/redis6479.conf
    sed -i "s|pidfile \/var\/run\/redis_6379.pid|pidfile \/var\/run\/redis\/redis_6479.pid|" /etc/redis6479/redis6479.conf
    sed -i "s|\/var\/log\/redis\/redis.log|\/var\/log\/redis\/redis6479.log|" /etc/redis6479/redis6479.conf
    sed -i "s|dbfilename dump.rdb|dbfilename dump6479.rdb|" /etc/redis6479/redis6479.conf
    sed -i "s|appendfilename "appendonly.aof"|appendfilename "appendonly6479.aof"|" /etc/redis6479/redis6479.conf
    echo "#masterauth abc123" >> /etc/redis6479/redis6479.conf
    sed -i "s|\/etc\/redis.conf|\/etc\/redis6479\/redis6479.conf|" /usr/lib/systemd/system/redis6479.service
    sed -i 's|^save 900|#save 900|' /etc/redis6479/redis6479.conf
    sed -i 's|^save 300|#save 300|' /etc/redis6479/redis6479.conf
    sed -i 's|^save 60|#save 60|' /etc/redis6479/redis6479.conf
    sed -i 's|^appendonly .*|appendonly no|' /etc/redis6479/redis6479.conf
    systemctl daemon-reload
    systemctl restart redis6479
    systemctl enable redis6479
    Redis TCP 6479 Info:
    redis-cli -h 127.0.0.1 -p 6479 INFO SERVER | egrep 'redis_version|redis_mode|process_id|tcp_port|uptime|executable|config_file'
    -------------------------------------------------------
    creating redis server: redis6480.service [increment value: 1]
    redis TCP port: 6480
    create systemd redis6480.service
    cp -a /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis6480.service
    create /etc/redis6480/redis6480.conf config file
    mkdir -p /etc/redis6480
    cp -a /etc/redis.conf /etc/redis6480/redis6480.conf
    \cp -af /usr/libexec/redis-shutdown /usr/local/bin/redis6480-shutdown
    sed -i "s|SERVICE_NAME=redis|SERVICE_NAME=redis6480|" /usr/local/bin/redis6480-shutdown
    sed -i "s|CONFIG_FILE="\/etc\/$SERVICE_NAME.conf"|CONFIG_FILE="\/etc\/$SERVICE_NAME\/$SERVICE_NAME.conf"|" /usr/local/bin/redis6480-shutdown
    sed -i "s|"$SERVICE_NAME" = redis|"$SERVICE_NAME" = redis6480|" /usr/local/bin/redis6480-shutdown
    sed -i "s|6379|6480|" /usr/local/bin/redis6480-shutdown
    mkdir -p /etc/systemd/system/redis6480.service.d/
    \cp -af /etc/systemd/system/redis.service.d/limit.conf /etc/systemd/system/redis6480.service.d/limit.conf
    sed -i "s|^port 6379|port 6480|" /etc/redis6480/redis6480.conf
    mkdir -p /var/lib/redis6480
    chown -R redis:redis /var/lib/redis6480
    ln -s /usr/bin/redis-server /etc/redis6480/redis-server
    sed -i "s|\/usr\/bin\/redis-server|\/etc\/redis6480\/redis-server|" /usr/lib/systemd/system/redis6480.service
    sed -i 's|\/usr\/libexec\/redis-shutdown|\/usr\/local\/bin\/redis6480-shutdown|' /usr/lib/systemd/system/redis6480.service
    sed -i "s|dir \/var\/lib\/redis\/|dir \/var\/lib\/redis6480|" /etc/redis6480/redis6480.conf
    sed -i 's|^daemonize no|daemonize yes|' /etc/redis6480/redis6480.conf
    sed -i "s|cluster-config-file nodes-6379.conf|cluster-config-file nodes-6480.conf|" /etc/redis6480/redis6480.conf
    sed -i "s|unixsocket \/tmp\/redis.sock|unixsocket \/var\/run\/redis\/redis6480.sock|" /etc/redis6480/redis6480.conf
    sed -i "s|pidfile \/var\/run\/redis_6379.pid|pidfile \/var\/run\/redis\/redis_6480.pid|" /etc/redis6480/redis6480.conf
    sed -i "s|\/var\/log\/redis\/redis.log|\/var\/log\/redis\/redis6480.log|" /etc/redis6480/redis6480.conf
    sed -i "s|dbfilename dump.rdb|dbfilename dump6480.rdb|" /etc/redis6480/redis6480.conf
    sed -i "s|appendfilename "appendonly.aof"|appendfilename "appendonly6480.aof"|" /etc/redis6480/redis6480.conf
    echo "#masterauth abc123" >> /etc/redis6480/redis6480.conf
    sed -i "s|\/etc\/redis.conf|\/etc\/redis6480\/redis6480.conf|" /usr/lib/systemd/system/redis6480.service
    sed -i 's|^save 900|#save 900|' /etc/redis6480/redis6480.conf
    sed -i 's|^save 300|#save 300|' /etc/redis6480/redis6480.conf
    sed -i 's|^save 60|#save 60|' /etc/redis6480/redis6480.conf
    sed -i 's|^appendonly .*|appendonly no|' /etc/redis6480/redis6480.conf
    systemctl daemon-reload
    systemctl restart redis6480
    systemctl enable redis6480
    Redis TCP 6480 Info:
    redis-cli -h 127.0.0.1 -p 6480 INFO SERVER | egrep 'redis_version|redis_mode|process_id|tcp_port|uptime|executable|config_file'
    

    This is non-debug live run DEBUG_REDISGEN='n' actually creating 2 Redis server instances starting at port 6479 and incrementing based on value of X
    Code (Text):
    ./redis-generator.sh multi-cache 2
    
    Creating redis servers (with ondisk persistence disabled) starting at TCP = 6479...
    -------------------------------------------------------
    creating redis server: redis6479.service [increment value: 0]
    redis TCP port: 6479
    create systemd redis6479.service
    cp -a /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis6479.service
    create /etc/redis6479/redis6479.conf config file
    mkdir -p /etc/redis6479
    cp -a /etc/redis.conf /etc/redis6479/redis6479.conf
    -rw-r----- 1 redis root 61K Feb  5 20:01 /etc/redis6479/redis6479.conf
    -rw-r--r-- 1 root  root 316 Jun 27  2018 /usr/lib/systemd/system/redis6479.service
    ln: failed to create symbolic link '/etc/redis6479/redis-server': File exists
    Created symlink from /etc/systemd/system/multi-user.target.wants/redis6479.service to /usr/lib/systemd/system/redis6479.service.
    ## Redis TCP 6479 Info ##
    redis_version:5.0.3
    redis_mode:standalone
    process_id:19271
    tcp_port:6479
    uptime_in_seconds:0
    uptime_in_days:0
    executable:/etc/redis6479/redis-server
    config_file:/etc/redis6479/redis6479.conf
    -------------------------------------------------------
    creating redis server: redis6480.service [increment value: 1]
    redis TCP port: 6480
    create systemd redis6480.service
    cp -a /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis6480.service
    create /etc/redis6480/redis6480.conf config file
    mkdir -p /etc/redis6480
    cp -a /etc/redis.conf /etc/redis6480/redis6480.conf
    -rw-r----- 1 redis root 61K Feb  5 20:01 /etc/redis6480/redis6480.conf
    -rw-r--r-- 1 root  root 316 Jun 27  2018 /usr/lib/systemd/system/redis6480.service
    ln: failed to create symbolic link '/etc/redis6480/redis-server': File exists
    Created symlink from /etc/systemd/system/multi-user.target.wants/redis6480.service to /usr/lib/systemd/system/redis6480.service.
    ## Redis TCP 6480 Info ##
    redis_version:5.0.3
    redis_mode:standalone
    process_id:19335
    tcp_port:6480
    uptime_in_seconds:0
    uptime_in_days:0
    executable:/etc/redis6480/redis-server
    config_file:/etc/redis6480/redis6480.conf
    

    This will create:
    • 2 redis server starting at STARTPORT=6479 for redis on 6479 and 6480 TCP ports.
    • redis systemd files for controlling each redis server at /usr/lib/systemd/system/redis6479.service and /usr/lib/systemd/system/redis6480.service
    • redis pid files at /var/run/redis/redis_6479.pid and /var/run/redis/redis_6480.pid
    • dedicated redis directories for each redis server instance at /etc/redis6479 and /etc/redis6480
    • main /usr/bin/redis-server binary gets symlinked to dedicated redis directories at /etc/redis6479/redis-server and /etc/redis6480/redis-server
    • dedicated redis config files at /etc/redis6479/redis6479.conf and /etc/redis6479/redis6480.conf
    • each config file will have dbfilename as dump6479.rdb and dump6480.rdb with commented out unix sockets at /var/run/redis/redis6479.sock and /var/run/redis/redis6480.sock
    • dedicated redis data directories at /var/lib/redis6479 and /var/lib/redis6480
    Now you will have 3 Redis server instances running
    • default 127.0.0.1 port 6379
    • new instances on 127.0.0.1 port 6479 and port 6480
    Code (Text):
    ps aufxw | grep redis | grep -v grep
    redis    18517  0.0  0.1  59012  3972 ?        Ssl  20:02   0:03 /usr/bin/redis-server 127.0.0.1:6379
    redis    19271  0.0  0.1  56452  2980 ?        Ssl  21:05   0:00 /etc/redis6479/redis-server 127.0.0.1:6479
    redis    19335  0.0  0.1  56452  2980 ?        Ssl  21:05   0:00 /etc/redis6480/redis-server 127.0.0.1:6480
    

    systemctl status for redis, redis6479 and redis6480 services
    Code (Text):
    systemctl status redis redis6479 redis6480 | sed -e "s|$(hostname)|hostname|g"
    * redis.service - Redis persistent key-value database
       Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/redis.service.d
               `-limit.conf, user.conf
       Active: active (running) since Wed 2019-02-06 00:27:51 UTC; 5h 8min ago
      Process: 23343 ExecStop=/usr/libexec/redis-shutdown (code=exited, status=0/SUCCESS)
     Main PID: 23359 (redis-server)
       CGroup: /system.slice/redis.service
               `-23359 /usr/bin/redis-server 127.0.0.1:6379    
    
    Feb 06 00:27:51 hostname systemd[1]: Starting Redis persistent key-value database...
    Feb 06 00:27:51 hostname systemd[1]: Started Redis persistent key-value database.
    
    * redis6479.service - Redis persistent key-value database
       Loaded: loaded (/usr/lib/systemd/system/redis6479.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/redis6479.service.d
               `-limit.conf, user.conf
       Active: active (running) since Tue 2019-02-05 22:04:21 UTC; 7h ago
      Process: 21563 ExecStop=/usr/local/bin/redis6479-shutdown (code=exited, status=0/SUCCESS)
     Main PID: 21601 (redis-server)
       CGroup: /system.slice/redis6479.service
               `-21601 /etc/redis6479/redis-server 127.0.0.1:6479                  
    
    Feb 05 22:04:21 hostname systemd[1]: Starting Redis persistent key-value database...
    Feb 05 22:04:21 hostname systemd[1]: Started Redis persistent key-value database.
    
    * redis6480.service - Redis persistent key-value database
       Loaded: loaded (/usr/lib/systemd/system/redis6480.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/redis6480.service.d
               `-limit.conf, user.conf
       Active: active (running) since Tue 2019-02-05 22:04:21 UTC; 7h ago
      Process: 21562 ExecStop=/usr/local/bin/redis6480-shutdown (code=exited, status=0/SUCCESS)
     Main PID: 21600 (redis-server)
       CGroup: /system.slice/redis6480.service
               `-21600 /etc/redis6480/redis-server 127.0.0.1:6480                  
    
    Feb 05 22:04:21 hostname systemd[1]: Starting Redis persistent key-value database...
    Feb 05 22:04:21 hostname systemd[1]: Started Redis persistent key-value database.
    

    Note, if you do this and use RedisAdmin below, you will need to setup RedisAdmin /usr/local/nginx/html/redisadmin/includes/config.inc.php and configure it appropriately for the additional Redis server instances. Example
    Code (Text):
        array(
          'name'   => 'local server', // Optional name.
          'host'   => '127.0.0.1',
          'port'   => 6379,
          'filter' => '*',
          'scheme' => 'tcp', // Optional. Connection scheme. 'tcp' - for TCP connection, 'unix' - for connection by unix domain socket
          'path'   => '', // Optional. Path to unix domain socket. Uses only if 'scheme' => 'unix'. Example: '/var/run/redis/redis.sock'
    
          // Optional Redis authentication.
          //'auth' => 'redispasswordhere' // Warning: The password is sent in plain-text to the Redis server.
        ),
        array(
          'name'   => 'redis6479', // Optional name.
          'host'   => '127.0.0.1',
          'port'   => 6479,
          'filter' => '*',
          'scheme' => 'tcp', // Optional. Connection scheme. 'tcp' - for TCP connection, 'unix' - for connection by unix domain socket
          'path'   => '', // Optional. Path to unix domain socket. Uses only if 'scheme' => 'unix'. Example: '/var/run/redis/redis.sock'
    
          // Optional Redis authentication.
          //'auth' => 'redispasswordhere' // Warning: The password is sent in plain-text to the Redis server.
        ),
        array(
          'name'   => 'redis6480', // Optional name.
          'host'   => '127.0.0.1',
          'port'   => 6480,
          'filter' => '*',
          'scheme' => 'tcp', // Optional. Connection scheme. 'tcp' - for TCP connection, 'unix' - for connection by unix domain socket
          'path'   => '', // Optional. Path to unix domain socket. Uses only if 'scheme' => 'unix'. Example: '/var/run/redis/redis.sock'
    
          // Optional Redis authentication.
          //'auth' => 'redispasswordhere' // Warning: The password is sent in plain-text to the Redis server.
        ),
    


    RedisAdmin

    redisadmin-multi-instance-01.png

    The you'd change your Xenforo 2.1.0 src/config.php config file the following where global cache run on Redis 127.0.0.1 port 6480 database 3, page cache can run on Redis instance 127.0.0.1 port 6479 database 5 and css cache on Redis instance 127.0.0.1 port 6480 database 7
    Code (Text):
    $config['cookie']['prefix'] = 'xfa_';
    
    // https://xenforo.com/xf2-docs/manual/cache/
    // global cache
    $config['cache']['enabled'] = true;
    $config['cache']['namespace'] = 'xfaredis_';
    $config['cache']['provider'] = 'Redis';
    $config['cache']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6480,
        'serializer' => 'igbinary',
    //  'password' => 'password',
    //  'timeout' => 0.0,
        'database' => 3,
    //  'persistent' => true,
    //  'persistent_id' => 'global'
    ];
    
    // session cache
    $config['cache']['sessions'] = true;
    
    // guest page cache
    $config['pageCache']['enabled'] = true;
    $config['pageCache']['lifetime'] = 900;
    $config['pageCache']['recordSessionActivity'] = true;
    $config['cache']['context']['page']['namespace'] = 'xfaredispagecache_';
    $config['cache']['context']['page']['provider'] = 'Redis';
    $config['cache']['context']['page']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6479,
        'serializer' => 'igbinary',
        'database' => 5,
    //  'timeout' => 1,
    //  'persistent' => true
    ];
    
    // css cache
    // $config['css']['enabled'] = true;
    $config['cache']['context']['css']['provider'] = 'Redis';
    $config['cache']['context']['css']['namespace'] = 'xfarediscsscache_';
    $config['cache']['context']['css']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6480,
        'serializer' => 'igbinary',
        'database' => 7,
    //  'timeout' => 1,
    //  'persistent' => true
    ];
    


    redisadmin-multi-instance-02.png
    redisadmin-multi-instance-03.png redisadmin-multi-instance-04.png

    Viewing Redis Statistics



    There are various scripts/software you can install/configure to allow you to view Redis server statistics to verify that your Xenforo 2.1.0 Redis caching setups are working properly. Some are outlined here.

    phpRedisAdmin seems like the most suitable version to use. Installed to main hostname vhost via commands
    Code (Text):
    cd /usr/local/nginx/html
    git clone https://github.com/ErikDubbelboer/phpRedisAdmin redisadmin
    cd redisadmin
    git clone https://github.com/nrk/predis.git vendor
    chown -R nginx:nginx /usr/local/nginx/html/redisadmin
    

    then setup HTTP password authentication where you set your own USERNAME and PASSWORD
    Code (Text):
    /usr/local/nginx/conf/htpasswd.sh create /usr/local/nginx/conf/htpasswd_redisadmin USERNAME PASSWORD
    

    in /usr/local/nginx/conf/conf.d/virtual.conf add
    Code (Text):
    location /redisadmin {
        auth_basic "Private";
        auth_basic_user_file /usr/local/nginx/conf/htpasswd_redisadmin;
           include /usr/local/nginx/conf/php.conf;
           #allow 127.0.0.1;
           #allow YOURIPADDRESS;
           #deny all;
    }
    

    I usually also uncommand the 3 hashs (#) to setup IP restriction to just my ISP IP address.
    restart nginx server and php-fpm
    Code (Text):
    nprestart
    

    From github
    So if you set the redis password in /etc/redis.conf need to setup the includes/config.inc.php
    Code (Text):
    cp -a /usr/local/nginx/html/redisadmin/includes/config.sample.inc.php /usr/local/nginx/html/redisadmin/includes/config.inc.php
    

    so need to edit includes/config.inc.php and set your redis password you set in /etc/redis.conf
    Code (Text):
          // Optional Redis authentication.
          //'auth' => 'redispasswordhere' // Warning: The password is sent in plain-text to the Redis server.
    

    and then go to your host.domain.com/redisadmin main domain where host.domain.com is same as server_name listed in /usr/local/nginx/conf/conf.d/virtual.conf and from output of command
    Code (Text):
    hostname
    

    and log in with your set USERNAME and PASSWORD

    RedisAdmin listed redis cache keys for redis database 3, 5 and 7 for global cache, pagecache and css cache context in Xenforo 2.1.0 as per above Xenforo 2.1.0 src/config.php settings.

    redisadmin-working-01.png redisadmin-working-02.png redisadmin-working-03.png

    Xon's Redis Cache Addon For Xenforo 2.x



    Besides above listed native Xenforo 2.x Redis caching, there's alot the awesome Redis Cache Addon developed by @Xon which extends the features and capabilities beyond that of native implementation. Xon's Redis Cache Addon differs from Xenforo 2 native Redis cache support:
    • Does not need php-redis extension like native. Centmin Mod already installs php-redis extension anyway for better performance.
    • Supports high-availability redis replication with redis sentinel support.
    • Supports distributing reads over slaves to allow read scaling
    • Integrates with Xon's other redis add-ons including Redis View Counters, Redis Flood Check, and User Activity by Xon
    The Xenforo 2.1.0 src/config.php config file. If you have created multiple Redis server instances like above i.e. 127.0.0.1 port 6479 and 6480, you can change ports below for global cache on port 6479 and page cache on port 6480.
    Code (Text):
    // global cache
    $config['cache']['enabled'] = true;
    $config['cache']['namespace'] = 'xfaredis';
    $config['cache']['provider'] = 'SV\RedisCache\Redis';
    $config['cache']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'database' => 2,
        'compress_data' => 6,
        'serializer' => 'igbinary',
        'use_lua' => true,
    //  'read_timeout' => 1,
    //  'timeout' => 1,
    //  'lifetimelimit' => 2592000,
    //  'compress_threshold' => 20480,
    //  'persistent' => true
    ];
    
    // session cache
    $config['cache']['sessions'] = true;
    
    // guest page cache
    $config['pageCache']['enabled'] = true;
    //$config['pageCache']['enabled'] = false;
    $config['pageCache']['lifetime'] = 900;
    $config['pageCache']['recordSessionActivity'] = true;
    $config['cache']['context']['page']['namespace'] = 'xfaredispagecache_';
    $config['cache']['context']['page']['provider'] = 'Redis';
    $config['cache']['context']['page']['config'] = [
       'host' => '127.0.0.1',
       'port' => 6480,
       'serializer' => 'igbinary',
       'database' => 4,
    // 'timeout' => 1,
    // 'persistent' => true
    ];
    

    redisadmin-xon-redis-cache-230-01.png
    redisadmin-xon-redis-cache-230-02.png
    xon-redis-cache-230-02.png

    xon-redis-cache-230-01.png

    With Xon's Redis Cache Addon, Thread View Counter and User Activity Addons installed

    xon-user-activity-threadcounters-redisadmin-01.png

    Update: seems extending separate CSS cache isn't working 100% with webpagetest.org 3x run tests, 2nd and 3rd runs always come back with 404 content. Removing separated CSS cache config and only using global and page cache works fine for webpagetest.org 3x run tests.

    Update: Although it might be due to timeout settings so have commented those out while testing.

    Update: Looks like page cache may need to use Redis provider and not Xon's Redis Cache SV\RedisCache\Redis provider to resolve the webpagetest.org repeat run time outs. However, the webpagetest timeout/404 seem to still happen occasionally.

    xf2.1.0-redis-cache-error-wpt-01.png
    xf2.1.0-redis-cache-error-wpt-02.png
    xf2.1.0-redis-cache-error-wpt-03.png

    You can also extend Xon's Redis Cache Addon config to add native Xenforo 2.1.0 css cache context using Redis provider too on 127.0.0.1 port 6479 database 7 while having global cache on port 6479 database 2 and page cache on port 6480 using Xon's Redis Cache Addon provider

    Code (Text):
    // global cache
    $config['cache']['enabled'] = true;
    $config['cache']['namespace'] = 'xfaredis';
    $config['cache']['provider'] = 'SV\RedisCache\Redis';
    $config['cache']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6479,
        'database' => 2,
        'compress_data' => 6,
        'serializer' => 'igbinary',
        'use_lua' => true,
    //  'read_timeout' => 1,
    //  'timeout' => 1,
    //  'lifetimelimit' => 2592000,
    //  'compress_threshold' => 20480,
    //  'persistent' => true
    ];
    
    // session cache
    $config['cache']['sessions'] = true;
    
    // guest page cache
    $config['pageCache']['enabled'] = true;
    //$config['pageCache']['enabled'] = false;
    $config['pageCache']['lifetime'] = 900;
    $config['pageCache']['recordSessionActivity'] = true;
    $config['cache']['context']['page']['namespace'] = 'xfaredispagecache_';
    $config['cache']['context']['page']['provider'] = 'Redis';
    $config['cache']['context']['page']['config'] = [
       'host' => '127.0.0.1',
       'port' => 6480,
       'serializer' => 'igbinary',
       'database' => 4,
    // 'timeout' => 1,
    // 'persistent' => true
    ];
    
    // css cache
    $config['css']['enabled'] = true;
    $config['cache']['context']['css']['provider'] = 'Redis';
    $config['cache']['context']['css']['namespace'] = 'xfarediscsscache_';
    $config['cache']['context']['css']['config'] = [
        'host' => '127.0.0.1',
        'port' => 6479,
        'serializer' => 'igbinary',
        'database' => 7,
    //  'timeout' => 1,
    //  'persistent' => true
    ];
    


    global cache port 6479 database 2

    xon-user-activity-threadcounters-csscache-redisadmin-01-globalcache.png

    page cache port 6480 database 4

    xon-user-activity-threadcounters-csscache-redisadmin-01-pagecache.png

    css cache port 6479 database 7

    xon-user-activity-threadcounters-csscache-redisadmin-01.png
     
    Last edited: Feb 7, 2019
    • Like Like x 1
    • Informative Informative x 1
  9. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1.0 Google PageSpeed Insights Optimizations



    Part of my paid optimization consulting services tasks is to ensure client's page load speed is optimal. So starting to see what can be optimized at web app and nginx server level for Xenforo 2.1.0 in this mobile-first indexing era :D

    Google PageSpeed Insights v5 mobile 3G tests with Xon Redis Cache addon and guest page caching + other web app and nginx server level optimizations in play.

    xf-2.1.0-rediscache-xon-global-pagecache-preload-css-js-set-tweaks-02.png xf-2.1.0-rediscache-xon-global-pagecache-preload-css-js-set-tweaks-03.png
     
    • Informative Informative x 2
  10. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1.0 Webpagetest.org Optimisations



    As it stands out of box Xenforo 2.1.0 seems to be slower for page load speed and perceived visual render times compared to Xenforo 1.5.x. Thought this is with default Xenforo 2.1 style theme. However, if you know your optimisations you can improve page load speed even with default style ;)

    This is Webpagetest.org cable 5Mbps Dallas, Texas page speed comparisons between before and after optimisation. Optimised page render is a full 0.5 seconds faster :D

    xf2.1.0-wpt-before-vs-after-font-optimisation-01.png

    Webpagetest before optimisation

    xf2.1.0-wpt-before-optimisation-01.png

    Webpagetest after optimisation - visual render time speedindex and start render times reduced from 1.7s to 1.2s with document complete time reduced from 1.748s to 1.353s and domInteractive similarly reduced from 1.745s to 1.351s. Full page load time dropped from 1.891s to 1.532s for same size page (486KB) and requests (13) :cool:

    xf2.1.0-wpt-after-optimisation-01.png

    And Google PageSpeed Insights v5 Xenforo 2.1.0 after optimisation

    xf2.1.0-psi-after-optimisation-01.png

    xf2.1.0-psi-after-optimisation-02.png
     
  11. eva2000

    eva2000 Administrator Staff Member

    41,754
    9,400
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +14,445
    Local Time:
    7:02 AM
    Nginx 1.17.x
    MariaDB 5.5/10.x

    Xenforo 2.1.0 Enhanced Search (Elasticsearch)



    Installed Elasticsearch 6.6.0 for CentOS 7.6 64bit Centmin Mod LEMP stack server with Xenforo Enhanced Search 2.1.0 addon + Xon's Search Improvement.

    Edited template so that search forms highlight that wildcard and other search operators are supported with Xon's search improvements addon installed :)

    xenforo-2.1.0-enhanced-search-template-edit-01.png

    xon-search-improvements-02.png

    xenforo-2.1.0-enhanced-search-01.png
    Also wrote a shell script to grab Elasticsearch node and index statistics for Xenforo 2.1.0 installation :) Updated script can pass the index name on command line.
    Code (Text):
    /root/tools/es_stats/es_stats.sh xfes   
    elasticsearch-version:                         6.6.0
    uptime-ms:                                     118239006
    elasticsearch-index-codec:                     best_compression
    elasticsearch-used-memory-percentage:          85.00
    elasticsearch-used-memory-mb:                  436.32
    elasticsearch-max-memory-mb:                   512.00
    elasticsearch-fs-path:                         /var/lib/elasticsearch/nodes/0
    elasticsearch-fs-path-size:                    880K
    elasticsearch-fs-type:                         ext4
    elasticsearch-fs-disk-used-percentage:         19.00
    elasticsearch-fs-disk-size-gb:                 49.08
    elasticsearch-fs-disk-used-size-gb:            9.45
    elasticsearch-fs-disk-free-size-gb:            39.63
    total-segments-count:                          25
    total-docs:                                    79
    total-dics-size-kb:                            192.07
    total-docs-allocated-memory:                   37.55KB
    total-index-updates:                           203
    total-index-time-ms:                           2266
    total-index-searches:                          640
    total-index-searches-time-ms:                  11119
    avg-index-time-ms:                             11.16
    avg-search-time-ms:                            17.37
    yaml-cluster-disk-threshold-enabled:           true
    yaml-cluster-disk-watermark-low:               90%
    yaml-cluster-disk-watermark-high:              95%
    yaml-cluster-disk-watermark-floodstage:        96%
    persistent-cluster-disk-threshold-enabled:     null
    persistent-cluster-disk-watermark-low:         null
    persistent-cluster-disk-watermark-high:        null
    persistent-cluster-disk-watermark-floodstage:  null
    transient-cluster-disk-threshold-enabled:      null
    transient-cluster-disk-watermark-low:          null
    transient-cluster-disk-watermark-high:         null
    transient-cluster-disk-watermark-floodstage:   null
    
    info health:
    health status index uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    green  open   xfes  Plm19LnQRVqZ58K8yAeb2Q   5   0         79           20      192kb          192kb
    
    ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    127.0.0.1           85          92   7    0.72    0.38     0.32 mdi       *      xfnode
    
    name   indexing.index_total indexing.index_time search.query_total search.query_time
    xfnode                  791                3.6s                670             11.5s
    
    allocation:
    shards disk.indices disk.used disk.avail disk.total disk.percent host      ip        node
         5        192kb     9.4gb     39.6gb       49gb           19 localhost 127.0.0.1 xfnode
    
    shards:
    index shard prirep state   docs  store ip        node
    xfes  4     p      STARTED   18 44.4kb 127.0.0.1 xfnode
    xfes  3     p      STARTED   18 55.1kb 127.0.0.1 xfnode
    xfes  2     p      STARTED   12 39.7kb 127.0.0.1 xfnode
    xfes  1     p      STARTED   17 24.7kb 127.0.0.1 xfnode
    xfes  0     p      STARTED   14 27.8kb 127.0.0.1 xfnode
    
    index shard prirep ip        segment generation docs.count docs.deleted   size size.memory committed searchable version compound
    xfes  0     p      127.0.0.1 _5               5         10            0 10.6kb        1863 true      true       7.6.0   false
    xfes  0     p      127.0.0.1 _6               6          2            2  6.2kb        1484 true      true       7.6.0   true
    xfes  0     p      127.0.0.1 _8               8          1            0  4.7kb        1257 true      true       7.6.0   true
    xfes  0     p      127.0.0.1 _9               9          1            1  5.6kb        1484 true      true       7.6.0   true
    xfes  1     p      127.0.0.1 _7               7         16            0 18.5kb        2223 true      true       7.6.0   false
    xfes  1     p      127.0.0.1 _8               8          1            1  5.7kb        1484 true      true       7.6.0   true
    xfes  2     p      127.0.0.1 _4               4          8            0  9.2kb        1975 true      true       7.6.0   false
    xfes  2     p      127.0.0.1 _5               5          1            0  6.8kb        1257 true      true       7.6.0   true
    xfes  2     p      127.0.0.1 _8               8          1            0 11.3kb        1276 true      true       7.6.0   true
    xfes  2     p      127.0.0.1 _9               9          1            1    6kb        1484 true      true       7.6.0   true
    xfes  2     p      127.0.0.1 _a              10          1            1  5.7kb        1484 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _1               1         10            2 12.1kb        1935 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _2               2          1            0  4.4kb        1482 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _3               3          2            2  5.4kb        1484 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _j              19          1            0  8.7kb        1262 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _k              20          1            1  5.4kb        1484 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _l              21          1            1  5.9kb        1484 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _m              22          1            1  5.8kb        1484 true      true       7.6.0   true
    xfes  3     p      127.0.0.1 _n              23          1            1  6.2kb        1484 true      true       7.6.0   true
    xfes  4     p      127.0.0.1 _6               6         11            0 11.9kb        1892 true      true       7.6.0   false
    xfes  4     p      127.0.0.1 _7               7          2            2  6.4kb        1484 true      true       7.6.0   true
    xfes  4     p      127.0.0.1 _8               8          2            2    6kb        1484 true      true       7.6.0   true
    xfes  4     p      127.0.0.1 _9               9          1            1  5.6kb        1484 true      true       7.6.0   true
    xfes  4     p      127.0.0.1 _a              10          1            1  5.6kb        1484 true      true       7.6.0   true
    xfes  4     p      127.0.0.1 _b              11          1            0    8kb        1262 true      true       7.6.0   true
    
    thread_pools:
    host      name                min max queue queue_size
    localhost analyze               1   1     0         16
    localhost ccr                  32  32     0        100
    localhost fetch_shard_started   1   4     0         -1
    localhost fetch_shard_store     1   4     0         -1
    localhost flush                 1   1     0         -1
    localhost force_merge           1   1     0         -1
    localhost generic               4 128     0         -1
    localhost get                   2   2     0       1000
    localhost index                 2   2     0        200
    localhost listener              1   1     0         -1
    localhost management            1   5     0         -1
    localhost ml_autodetect        80  80     0         80
    localhost ml_datafeed          20  20     0        200
    localhost ml_utility           80  80     0        500
    localhost refresh               1   1     0         -1
    localhost rollup_indexing       4   4     0          4
    localhost search                4   4     0       1000
    localhost search_throttled      1   1     0        100
    localhost security-token-key    1   1     0       1000
    localhost snapshot              1   1     0         -1
    localhost warmer                1   1     0         -1
    localhost watcher              10  10     0       1000
    localhost write                 2   2     0        200
    
    raw log saved: /root/centminlogs/es_index_stats-190219-094313.log
    raw log saved: /root/centminlogs/es_node_stats-190219-094313.log
    raw log saved: /root/centminlogs/es_node-190219-094313.log
    summary log saved: /root/centminlogs/elasticsearch-stats-190219-094313.log
    


    Re-test Google PageSpeed Insights v5 mobile/desktop and Webpagetest.org Cable speeds with Xenforo Enhanced Search enabled + Xon Search Improvements addon and my previous optimisation tweaks.

    xf2.1.0-wpt-after-optimisation-enhancedsearch-01.png

    xf2.1.0-psi-after-optimisation-enhancedsearch-01.png

    xf2.1.0-psi-after-optimisation-enhancedsearch-02.png
     
    Last edited: Feb 19, 2019
    • Like Like x 1
Thread Status:
Not open for further replies.