A web and systems development journal (from a–too busy–web developer who does a lot of various IT work.)
How to automatically sync date and time on *nix server
Here's how we do it on RHEL:
Logged in as root:
* Create file at /etc/cron.hourly/clockset
* with these two lines only:
rdate -s time-a.nist.gov > /dev/null
hwclock --systohc > /dev/null
How to upgrade to PHP5.x and Apache 2.X
Regular Expressions
search: ([A-Za-z0-9\s-=";/0]*)
replace: $1whateveryouwant
The () mark takes place of $1
e.g.
this is wrong: <td><img src="img/D0204</td>
Linux IP management
# ifconfig eth1Â 192.168.10.12 netmask 255.255.255.0
# cd /etc/sysconfig/network-scripts
Edit the NETMASK lines in the ifcfg-eth0* and in the ifcfg-eth1* files as required.
How to install Composer and Drush LOCALLY and GLOBALLY
Drush 9.x Install Composer to your LOCAL user directory
cd ~ mkdir .composer curl -sS https://getcomposer.org/installer | php mv composer.phar ~/bin/composer chmod +x ~/bin/composer echo "PATH=$PATH:~/.composer/vendor/bin" >> ~/.bash_profile . ~/.bash_profile
Install latest version of Drush locally
Get the latest (or whatever) version here:
https://github.com/drush-ops/drush/releases
cd /LOCATION/OF/DRUPAL composer require drush/drush
And we done...
How to set max_open_files in MariaDB / MySQL in CentOS 7
Set the system wide open file limit:
vi /etc/security/limits.conf
Change/Add the following:
* soft nofile 1024000 * hard nofile 1024000 * soft nproc 10240 * hard nproc 10240
Now do this for /etc/sysctl
vi /etc/sysctl
Add the following
fs.file-max = 1024000
Set the changes
sysctl -w fs.file-max=1024000 sysctl -p # check changes cat /proc/sys/fs/file-max
Set the mysqld.service limit (as settings here will override *.cnf ones)
Set both /etc/systemd/system.conf and /etc/systemd/user.conf
vi /etc/systemd/system.conf vi /etc/systemd/user.conf
Add the following under [Manager] for both:
Easily manage magento extension installations with modman and generate-modman
Modman lets you install/uninstall magento extensions without the use of Magento Connect.
Why would you use modman?
Say you have an extension that doesn't use Magento Connect--where you upload it's contents manually. When you want to uninstall that extension, you have to tediously/manually search the installation files/folders and remove them by hand.
With modman, this is done for you perfectly--no more tedious labor.
Install modman
Let's first install modman.
1. Enable symlink support in magento: System > Configuration > Advanced > Developer , Under "Template Settings" > "Allow Symlinks" select "Yes"
2. Download and run the installer.
How to install OPCache using DirectAdmin custombuild
If you used custombuild to install opcache, then you will need to set the opcache settings there.
cd /usr/local/directadmin/custombuild vi options.conf
Change opcache=no to opcache=yes
opcache=yes
Set your opache settings here:
vi custom/opcache/opcache.ini
Here are my settings (This is for a fast server, with 128GB RAM):
How to install GraphicsMagick with GMagick PHP extension
Let's install GraphicsMagick!
cd /usr/local/src wget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/GraphicsMagick-LATEST.tar.gz tar xvfz GraphicsMagick-LATEST cd GraphicsMagick-* ./configure --enable-shared make make install
Let's test it.
gm version
If you get this error:
gm: error while loading shared libraries: libGraphicsMagick.so.3: cannot open shared object file: No such file or directory
Do this to fix:
echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig
Ok... Let's install GMagick PHP extension
Enable DKIM and have Exim SMTP banner use the accounts dedicated IP in DirectAdmin for PHP mail
Enable DKIM and change the PHP mail SMTP Sender banner
To Change the "Sender" info we have to do the following:
cd /usr/local/directadmin/data/templates/custom/ cp /usr/local/directadmin/data/templates/virtual_host2.conf /usr/local/directadmin/data/templates/custom/ cp /usr/local/directadmin/data/templates/virtual_host2_secure.conf /usr/local/directadmin/data/templates/custom/ sed -i 's/`USER`@`DOMAIN`/no-reply@`DOMAIN`/g' ./virtual_host2*.conf echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue /usr/local/directadmin/dataskq d
How to install an SVN version of Apache using Directadmin Custombuild
This is a quick guide to help out those trying to install an NON-RELEASE version of apache. It was made due to intermittent crashes of apache 2.4.25 with HTTP2 on CentOS with DirectAdmin.
You can see the changelog here:
https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x/CHANGES
Here is the DirectAdmin discussion this was first reported on:
https://forum.directadmin.com/showthread.php?t=52590&page=3
Anyhow...
Here's the fix:
Pinterest: How to exclude images from being pinned via jQuery.
Say you have Pinterest setup on your site to allow pinning or saving of images. However, you obviously don't want this enabled for all images (ex: menu images, footer images, etc).
Here's how to exclude certain images from being recognized by Pinterest:
In Magento, you would add the following to your local.xml, under <reference name="head">:
HOW-TO: create a Drupal views block to display the current node content
In views section, for an existing view or newly created one, do the following:
- Click "Add" > "Block"
- Fill in whatever you normally would do in views (this is beyond the scope of this tutorial)
- Under "Contextual Filters" > click "Add" > "Content: Nid" > "Provide default value" > "Content ID from URL"
And that's that...
How to install HTTP/2 on DirectAdmin
Install OpenSSL with ALPN support
cd /usr/local/src/ wget ftp://ftp.openssl.org/source/openssl-1.0.2j.tar.gz tar xzf openssl-1.0.2j.tar.gz cd openssl-1.0.2j ./config --prefix=/usr/local/lib_http2 no-ssl2 no-ssl3 zlib-dynamic -fPIC make depend make install
Install nghttp2 - HTTP/2 Library
cd /usr/local/directadmin/custombuild ./build update ./build nghttp2
Install HTTP/2 for Apache 2.x
cd /usr/local/directadmin/custombuild mkdir -p custom/ap2 cp -p configure/ap2/configure.apache custom/ap2/configure.apache vi custom/ap2/configure.apache ### REPLACE "--with-ssl=/usr" \ ### WITH: "--enable-http2" \ "--enable-ssl-staticlib-deps" \ "--with-ssl=/usr/local/lib_http2" \ ### Rebuild apache ./build apache ### Add HTTP/2 settings to httpd-includes.conf
How to check if your drupal site was hacked (and how to fix it)
Install drupalgeddon on your server:
drush dl drupalgeddon
Install Site Audit:
drush dl site_audit --dev
Install Hacked:
drush dl hacked --dev; drush en hacked -y
Install Security Review:
drush en security_review -y
OPTIONAL: run all the above in a single line.
drush dl drupalgeddon -y; drush dl site_audit --dev -y; drush dl hacked --dev -y; drush en hacked -y; drush en security_review -y
Run the drupalgeddon site audit--this will also run the above modules--this will create a file called 'report.html'. Open it up and see what's up.
New Linux Server Checklist (2017 Edition)
These are some of the basic things I do when I setup a new server
Get the latest directadmin.conf values
With each version of DirectAdmin, new configuration values are introduced that you may not know about. To see ALL these values do the following:
/usr/local/directadmin/directadmin c | sort -n
You can essentially copy/paste the entire results into your /usr/local/directadmin/conf/directadmin.conf replacing anything else in there.
Setup DirectAdmin with an SSL certificate
source: http://help.directadmin.com/item.php?id=15
If you don't own a certificate, you can create your own with letsencrypt.com:
How to install CSF (ConfigServer Security & Firewall) with DirectAdmin or WHM
Block IPs with Brute Force Monitor in DirectAdmin using CSF
Source: https://help.poralix.com/articles/how-to-block-ips-with-csf-directadmin-bfm
Regular install of CSF
cd /usr/local/src wget http://www.configserver.com/free/csf.tgz tar -xzf csf.tgz cd csf ./install.directadmin.sh
Now login as Admin into directadmin or WHM, and click the link ConfigServer Security & Firewall
You'll probably want to add your WAN IP here--you can find out what it is here: http://www.ip-secrets.com/
Then add your WAN IP into Quick Allow column.
htaccess redirect specific domains to https
Here's how to redirect ONLY specific domains to HTTPS with .htaccess.
RewriteEngine on # Redirect all domains to use 'www.' RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Redirect ONLY specific domains to HTTPS RewriteCond %{HTTP_HOST} ^(www\.)?(domain1.com|domain2.com|domain3.net)$ RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
What the above does is:
MariaDb/MySQL how to fix Unknown/unsupported storage engine: InnoDB
If you changed /etc/my.cnf "innodb_log_file_size" setting, then may get this error:
[ERROR] InnoDB: Unrecognized value JO_DIRECT for innodb_flush_method
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
You probably tried the following fix:
rm /var/lib/mysql/ib_logfile0 rm /var/lib/mysql/ib_logfile1
However, if you set innodb_log_file_size to something large like 2G, and tried restarting mysqld, the startup will seem like it's taking FOREVER (and it does, compared to regular startup)... and you probably force quit the restart, thinking something is wrong.
How to install Drupal Console with Composer
Make sure you have Composer installed.
cd ~ composer global require drupal/console:@stable
How to add Google Fonts to Drupal 8 theme, the PROPER way
Here's the proper way to add external google fonts.
YOURTHEMENAME.info.yml
libraries:
- 'YOURTHEMENAME/fonts'
YOURTHEMENAME.libraries.yml
fonts:
css:
theme:
'//fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400,300,700|Open+Sans:300italic,400,300': { type: external, minified: true }
Below is my actual bootstrap subtheme.
YOURTHEMENAME.info.yml
core: 8.x
type: theme
base theme: bootstrap
Drupal 8 drush critical update commands
There are some new drush Drupal 8 commands that are critical to updating your site. The big new one here, is "drush entitity-updates". Which should be initiated AFTER "drush updb".
Otherwise, if you check your Drupal 8 "Status Report" you may get an error showing "Entity/field definitions: Mismatched entity and/or field definitions"--which won't be apparent, unless you check the Status Report.
So here goes...
Clear all cashes (no longer "drush cc all"):
drush cr
or
drush cache-rebuild
Update the database (this is still the same, however, you won't be done here):
drush updb
After running "drush updb", you should next run entity updates command:
drush entup
or
How to install Apache Solr 5.x for use with Drupal
Here's the updated version on how-to install Apache Solr 5.x and get it running with Drupal (WITHOUT Apache Tomcat; as Solr 5.x doesn't support Tomcat anymore).
Install Java 1.8
yum install java-1.8.0-openjdk.x86_64 # or aptitude install java8-jdk
Create a symlink to wherever your /etc/bashrc or ~/.bashrc has
export JAVA_HOME=/usr/local/jdk
set to.
Fix magento 1.9 price rules "Stop Further Rules Processing"
There's a bug affecting all magento 1.9 versions, that prevents users from applying multiple coupons to their order--even if "Stop further rules processing" is NOT selected.
Basically, a customer can only apply a single coupon to their order--no stacking of coupons works in Magento 1.9.
Here's the fix, you'll need modman and generate-modman installed:
Tighten SSL security: SSL certificate chain and SSLCipherSuite
Update SSLCipherSuite
Issue
Clicking the certificate info in chrome, you'll see a message:
"Your connection is encrypted using an obsolete cipher suite."
Solution
vi /etc/httpd/conf/extra/httpd-ssl.conf
Replace SSLCipherSuite with the following:
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+AESGCM EECDH EDH+AESGCM EDH+aRSA HIGH !MEDIUM !LOW !aNULL !eNULL !LOW !RC4 !MD5 !EXP !PSK !SRP !DSS"
Restart Apache.
service httpd restart
Optional: Update ssl_cipher in directadmin.conf
vi /usr/local/directadmin/conf/directadmin.conf
Replace or add:
Enable WHM SSH safemode if you lock yourself out
If you locked yourself out of SSH in WHM/Cpanel for whatever reason--e.g. you specified an invalid AllowUsers in /etc/ssh/sshd_config--you can reload SSH service in safemode, by pasting this into your browser's address bar:
https://YOURSERVER:2087/scripts2/doautofixer?autofix=safesshrestart
Then login with your root credentials, and sshd will be restarted in safemode, allowing you to login and fix your /etc/ssh/sshd_config.
Once done, restart ssh:
service sshd restart
How to install Apache Solr 4.6 with Apache Tomcat 7, for use with Drupal
Here's the 2014 version on how-to install Apache Solr 4.10, alongside Apache Tomcat 7, to help out with things like Drupal faceted search.
Ok... let's do this.
Install Java 1.7
yum install java-1.7.0-openjdk # or aptitude install java7-jdk
Done--that was quick.
Install Tomcat 7
Get the latest version of Tomcat here:
http://tomcat.apache.org/download-70.cgi
HOW TO create a Gmail filter to automatically delete emails Older than X amount of days
Let's say you want to AUTOMATICALLY delete all "Promotional" emails from your Gmail after 90 days.
Step 1:
Go to Settings -> Filters -> Create a new filter
Step 2:
Type the following into "Has the words" field:
category:promotions older_than:90d
Step 3:
Click "Create filter with this search"
Step 4:
Select "Delete it" and finally click "Create filter" button...
And... we're done!
The key here is older_than:90d, you can just as easily create whatever time-based filter you want with that.
How to move an account from DirectAdmin to WHM/cPanel
If you tried using WHM's Transfer Tool on very large sites, you've probably got a timeout error.
To fix this, we'll need to do this through SSH (via root) what the Transfer Tools wasn't able to do itself.
STEP 1.
The Transfer Tool will create a /scripts directory--with all required scripts--at the base of your server, which we will use to create WHM/cPanel compatible backups.
The name of the script will look like the following: /scripts/pkgacct.YOUR_CPANEL_SERVER_NAME
Type the following to get the exact name:
ls -la /scripts/
STEP 2.
Next, go into your /home directory to get a listing of the account names.