Main Page: Difference between revisions

From Cheatsheet
Jump to navigation Jump to search
No edit summary
No edit summary
Line 536: Line 536:


                                                     <h1><center>MS SQL on a cpanel box</center></h1>
                                                     <h1><center>MS SQL on a cpanel box</center></h1>
To install MS SQL Do the following.


Install unixODBC:
cd /usr/src
wget http://www.unixodbc.org/unixODBC-2.3.0.tar.gz
tar -zxf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure -prefix=/usr/local -enable-gui=no
make install
Install FreeTDS:
cd /usr/src/
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar -zxf freetds-stable.tgz
cd freetds-*
./configure -with-tdsver=8.0 -with-unixODBC=/usr/local
make install
ldconfig
Tell EasyApache we want MSSQL support:
echo '--with-mssql' >> /var/cpanel/easy/apache/rawopts/all_php5
Now, recompile PHP/Apache through EasyApache. It’s OK to use the same options as previous, because MSSQL isn’t an option in EasyApache that can be toggled on and off; we did it manually (and permanently) in the last step.


 
Verify your work by checking phpinfo() for the mssql section.
                                                    <h1><center>MYSQL</center></h1>
                                                    <h1><center>MYSQL</center></h1>
'''To backup all databases to remote location'''
'''To backup all databases to remote location'''
<pre>mkdir /home/sqlbackup
<pre>mkdir /home/sqlbackup

Revision as of 17:33, 7 December 2010

This is my wiki, containing all of my shortcuts.

Also I would like to note that...

YOU LOSE THE GAME!
TG
Fukung
Pointless Sites

.htaccess

to enable the reading of the custom php.ini in the public_html for suphp you need to add the following and replaces username with the cpanel user's username

suPHP_ConfigPath /home/username/public_html

then

cd /home/username/public_html
cp /usr/local/lib/php.ini /home/username/public_html/php.ini
touch phpinfo.php && echo "<?php phpinfo(); ?>" >> phpinfo.php
chown username. php.ini phpinfo.php

Now add you custom changes for that account into that php.ini, and then proceed to test by going to that users website/phpinfo.php and see it your changes are there.


Adding domains to Dedicated ips

To place more that one domain on a dedicated IP go to:

cd /var/cpanel/userdata/

Choose the domains user that we are adding to the ip example: username/domain.com

 vim username/domain.com

Change the ip to the new ip, save the file.

/scripts/rebuildhttpdconf
/etc/init.d/httpd stop
/etc/init.d/httpd stop
/etc/init.d/httpd startssl

Wait for it to propagate, and viola!

Addon domain issues

If you come across this error:

" Error from park wrapper: Using nameservers with the following IPs:
174.132.129.99,174.132.129.98 Sorry, the domain is already pointed to an IP
address that does not appear to use DNS servers associated with this server.
Please transfer the domain to this servers nameservers or have your
administrator add one of its nameservers to /etc/ips.remotedns and make the
proper A entries on that remote nameserver. "

go to tweak settings an check the option to:

Allow Creation of Parked/Addon Domains that resolve to other servers (i.e. domain transfers)

APF

Apf un block

vi /etc/apf/deny_hosts.rules
/etc/init.d/apf restart

# of attemps

vi /usr/local/bfd/conf.bfd

Starting APF:Unable to load iptables module (ipt_state), aborting.

vi /etc/apf/conf.apf
SET_MONOKERN change to 1
/etc/init.d/apf restart

ChkServd

enable chkservd

/usr/local/cpanel/bin/tailwatchd --enable=Cpanel::TailWatch::ChkServd

Disable chkservd

/usr/local/cpanel/bin/tailwatchd --disable=Cpanel::TailWatch::ChkServd

Coremanaged phpmyadmin

Coremanaged Pure-ftp

Coremanaged SSL

CPANEL

LOGS ARE LOCATED AT

vim /usr/local/cpanel/logs/error_log

Cpanel gives this error [a fatal error or timeout occurred while processing this directive] mv /home/(username)/.cpanel/*cache different location and or check permissions on the /home/(username)/.cpanel folder should be user:user

error when accessing http://ipaddress/~username/ Warning: Unknown: open_basedir restriction in effect. File(/home/hilariou/public_html/index.php) is not within the allowed path(s): (/usr/local/lp:/proc:/usr/lib/php:/usr/local/lib/php:/tmp) in Unknown on line 0

Move this line to the post section of the httpd.conf

vim /usr/local/apache/conf/httpd.conf

Include "/usr/local/lp/configs/httpd/vhost.conf

Crond

For help with crond entries go to this url

http://www.linuxhelp.net/guides/cron/

cron log location

vim /var/log/cron

Location of the main cron

vim /var/spool/cron/root

Location of the cpanel users crons

/var/spool/cron/

Location of the specific crons, daily weekly monthly...etc

vim /etc/cron.

Tab complete to see all of the options

Add this to the main cron to make all mail in the .sent/cur directory erase after being 15 days old.

0 3 * * * find /home*/*/mail/*/*/cur /home*/*/mail/*/*/.Sent/cur -type f -mtime +30 -exec rm {} \;

REMINDER CRON Also another nice cron for those of us who forget to clock out or in. This will open the
time clock in a new window to remind you to clock out. Use the link above to set your own time.

55 08 * * 1-5 art env DISPLAY=:0.0 firefox --new-window https://tc.int.liquidweb.com/content/index.html 


CSS not loading

Come accross a page that doesnt want to load its css on a vps? Log into the server and do the following.

curl -v 'http://domain.com/(path to the css file goes here)'

If in that's response this line is returned

 * transfer closed with 1386 bytes remaining to read
* Closing connection #0
curl: (18) transfer closed with 1386 bytes remaining to read

OR an easier way is to use these if they return nothing, go to next step.

cat /usr/local/apache/conf/includes/* | grep EnableSendFile
cat /usr/local/apache/conf/httpd.conf | grep EnableSendFile

Copy and paste the following to fix

echo "EnableSendFile Off">>/usr/local/apache/conf/includes/pre_main_global.conf
/etc/init.d/httpd restart

Custom php.ini

For SuPhP First copy the php.ini over

cp /usr/local/lib/php.ini /home/(username)/public_html/php.ini
chown (username). /home/(username)/public_html/php.ini

In .htaccess under public_html, add the following:

suPHP_ConfigPath /home/user/public_html 
<Files php.ini> 
order allow,deny 
deny from all 
</Files>

Note: the local php.ini REPLACES the system one, it does not override like a .htaccess setting does.

For CGI First copy the php.ini over

cp /usr/local/lib/php.ini /home/(username)/public_html/php.ini
chown (username). /home/(username)/public_html/php.ini

In .htaccess under public_html, add the following:

AddHandler php-cgi .php .htm 
Action php-cgi /home/(username)/public_html/cgi-bin/php5.cgi

if by chance the php5.cgi does not exist please add it with the following contents.

#!/bin/sh
export PHPRC=/home/(username)/public_html/php.ini
exec /usr/local/cpanel/cgi-sys/php5

Disable root login

useradd lwstaff
passwd (assign a password)
usermod -G wheel lwstaff
vim /etc/ssh/sshd_config

change PermitRootLogin = yes to no and un-comment it. restart sshd and test your work.

DNS Cheats

Adding a wildcard to every dns record

for i in `cat /var/cpanel/users/*| grep DNS|cut -d = -f 2`; do echo "* IN CNAME $i." >> /var/named/$i.db;done 

Adjusting all ttls on a server to 300

#check current TTLs and serial number
grep --color -e '^\$TTL.*' /var/named/*.db
grep --color -e '[0-9]\{10\}' /var/named/*.db   # this will be the serial number, 10 numbers in a row
#also check that date works as expected/is newer than the serial numbers currently existing
date +%Y%m%d%H

#the -i flag will create backups in the same directory, liquidweb.com.lwbak for example
sed -i.lwbak -e 's/^\$TTL.*/$TTL 300/g' -e 's/[0-9]\{10\}/'`date +%Y%m%d%H`'/g' /var/named/*.db

#check your work
grep --color -e '^\$TTL.*' /var/named/*.db
grep --color -e '[0-9]\{10\}' /var/named/*.db 

Drupal Guide

Email walkthrough

Email

For the number of spam in all default accounts.

for i in `ls /var/cpanel/users`; do ls -d /home/$i/mail/cur && ls -l /home/$i/mail/cur | wc -l; done

horde mail update (nothing can be in account of will all get erased)

/usr/local/cpanel/bin/update-horde --force

To determine mailserver type

/scripts/setupmailserver --current

Count mail in folder

ls | wc -l

removing mass spam

rm -Rf /home/(user here}/mail/cur*

And if that command fails, and only if that command fails try this one.
DO NOT IGNORE you MUST be in the directory that the spam is in or this command could ruin this server...

find . -type f | xargs rm -f

spam removal script

for i in $(find . | xargs grep -m 1 -s -i "Mailer-Daemon" | sed -e 's/\.\/[A-Z0-9a-z]\/\([A-Z0-9a-z\-]\{16\}\)\-[HDJ].*/\1/'); do exim -Mrm $i;done

List all email accounts on the server

for domain in `grep DNS /var/cpanel/users/* |grep DNS|cut -d = -f 2`; do for user in `cat /home/*/etc/$domain/passwd|cut -d : -f 1`;do echo $user@$domain ;done;done 2> /dev/null

List all email accounts on the server and place in a text file

for domain in `grep DNS /var/cpanel/users/* |grep DNS|cut -d = -f 2`; do for user in `cat /home/*/etc/$domain/passwd|cut -d : -f 1`;do echo $user@$domain ;done;done 2> /dev/null > EMAILLIST.txt

Fix the symlinks on the email accounts so that they show up in main account veiw.

/scripts/linksubemailtomainacct

Empty files

To create a empty file that takes so much spce for testing uploads.

dd if=/dev/zero of=file1G.tmp bs=1G count=1

EXIM

number of msg in q

exim -bpc  

print msg q summary

exim -bp | exiqsumm 

Start a full q run

exim -q -v

Start a local delivery q run

exim -ql -v 

Flush exim queue

exim -bpr | awk {'print $3'} | xargs exim -Mrm

Do a traceroute on the email path to the mx hosts

exim -bt Email address here


Fantastico

add the Fantastico installer plugin

cd /usr/local/cpanel/whostmgr/docroot/cgi
wget -N http://files.betaservant.com/files/free/fantastico_whm_admin.tgz
tar -xzpf fantastico_whm_admin.tgz
rm -rf fantastico_whm_admin.tgz

Flash plugin for centos

yum install flash-plugin.1386

For loops and other loops

ALWAYS RUN THIS FIRST!!!!!

unalias ls

package all cpanel accounts

for user in `ls -A /var/cpanel/users`; do /scripts/pkgacct $user;done

looping a command

while x=0; do killall -9 php5; sleep .1; done

Watching for a cpanel not ran in a screen

while x=0; do ps aux | grep easyapache |grep -v grep; sleep 30; done

FTP walkthrough

Godaddy, nameserver setup

Grep

Use these to figure out a usename without logging into WHM.

cat /usr/local/apache/conf/httpd.conf | grep -A1 www.domain.com
grep -A1 www.domain.com /usr/local/apache/conf/httpd.conf

History Removal commands

If the customer would like their history cleared.

echo "" > /var/log/messages && echo "" /var/log/secure
echo "" > /var/log/wtmp && echo "" > /var/log/lastlog && history -r

If for some reason you ever need to cover your own tracks, like creating a usre on the wrong server or such, this will remove your session history

history -r

HTOP

Source Install: (for other methods to install please see https://wiki.int.liquidweb.com/articles/Htop)

cd /usr/local/src/   
wget http://www.sfr-fresh.com/linux/misc/htop-0.8.3.tar.gz
tar zxf htop-0.8.3.tar.gz
cd htop-0.8.3
./configure ; make ; make install


HTTPD and APACHE

to distill changes to the httpd.conf

/usr/local/cpanel/bin/apache_conf_distiller --update

apache uptime

/usr/bin/lynx -dump -width 500  http://127.0.0.1/whm-server-status

Index blocking

Add this to the .htaccess, Blocks the index of / from being seen. Comment out to make visible again.

Options -Indexes
OR
Options +Indexes +a-

IonCube Problems

If you get this error

The ionCube PHP Loader is disabled because of startup problems.

Check the /usr/local/lib/php.ini for duplicate line that look like the following.

; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"
zend_extension="/usr/local/IonCube/ioncube_loader_lin_5.2.so"
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"
zend_extension="/usr/local/IonCube/ioncube_loader_lin_5.2.so"

Remove a set of line and restart apache, should fix the problem.

/etc/init.d/httpd restart

IPTABLES

Block temp with IPtables

iptables -I INPUT 1 -s ipaddress -j DROP

Block permanently with APF

/etc/apf/deny_hosts.rules

LIST

list by last modified

ls -lt

list by Proc id

lsof -p PID

Load checking

Listening on port

lsof -i :25

Load per process checking

/usr/local/cpanel/bin/dcpumonview

Total connections on port 80

netstat -nap |grep -c :80

rough per sec hits

/usr/bin/lynx -dump -width 500 http://127.0.0.1/whm-server-status | grep GET | awk '{print $12}' | sort | uniq -c | sort -rn | head

Tells how many are using port 80

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -f1 -d: | sort | uniq -c | sort -rn | head

Locating log files

Finding a log file that has been modified in the last 24hrs

find /home -name error_log -mtime -1

Memory and load issues

Load per process checking

/usr/local/cpanel/bin/dcpumonview

Memory per user foo'ed up by mwineland

lwtmpvar=;for each in `ps aux | grep -v COMMAND | awk '{print $1}' | sort | uniq`; do lwtmpvar="$lwtmpvar\n`ps aux | egrep ^$each | awk 'BEGIN{total=0};{total += $4};END{print total, $1}'`"; done; echo -e $lwtmpvar | grep -v ^$ | sort -rn | head

Checking swaps memory usage

vmstat 1

If digging into swaps memory run this and see if there are any tables that are "[!!] Total fragmented tables" If it does show that there are fragmented tables, run an optimize on the tables.

wget mysqltuner.pl/mysqltuner.pl && perl mysqltuner.pl

Optimization script here

for i in $(mysql -e "show databases;" | sed 's/Database//') ; do for each in $(mysql -e "use $i; show tables;" \
| sed 's/Tables.*//' ;) ; do mysql -e "use $i ; optimize table $each" ; done ; done

Using Sar

this can be helpful in figuring out what the swaps are are or the iowait.

sar

This will display Collected, report, or save system activity information.

sar -r

This will show you the memory and swap space utilization statistics.
You can futher clean that up to show just mem used and swpused with the following.

sar -r | awk '{print $1,"\t"$2,"\t"$5,"\t\t"$10}'

You can also use sar to view previous days log files. Do the following.

cd /var/log/sa
ll

This should provide you with a list that looks like the following.

 
-rw-r--r--  1 root root 484640 Aug  1 15:51 sa01
-rw-r--r--  1 root root 484176 Aug  2 23:50 sa02
-rw-r--r--  1 root root 228576 Aug  3 11:00 sa03
-rw-r--r--  1 root root 490992 Jul 26 23:50 sa26
-rw-r--r--  1 root root 490992 Jul 27 23:50 sa27
-rw-r--r--  1 root root 490992 Jul 28 23:50 sa28
-rw-r--r--  1 root root 481232 Jul 29 23:50 sa29
-rw-r--r--  1 root root 490992 Jul 30 23:50 sa30
-rw-r--r--  1 root root 485104 Jul 31 15:37 sa31
-rw-r--r--  1 root root 491873 Aug  1 23:53 sar01
-rw-r--r--  1 root root 491907 Aug  2 23:53 sar02
-rw-r--r--  1 root root 498737 Jul 25 23:53 sar25
-rw-r--r--  1 root root 498737 Jul 26 23:53 sar26
-rw-r--r--  1 root root 498737 Jul 27 23:53 sar27
-rw-r--r--  1 root root 498737 Jul 28 23:53 sar28
-rw-r--r--  1 root root 489709 Jul 29 23:53 sar29
-rw-r--r--  1 root root 498737 Jul 30 23:53 sar30
-rw-r--r--  1 root root 493163 Jul 31 23:53 sar31

Each of those files is a log for that day of the month. Pick and choose then view them with the following command.

sar -f sa01

If you want to view different modes of the sar add the flags at the end of the command like so.

 sar -f sa01 -r

check the parent for oomage figure out the instance id

vzlist -a

place id here.

cat /var/log/messages | grep OOM.*ve\=(id goes here)

run this to see how many times this has happened in one day.

grep Aug\ 21.*OOM.*ve\=(id goes here) /var/log/messages | wc -l

To find script memory usage run the following lines

for each in `ls -A /var/cpanel/users | fgrep -v "."`; do grep -R memory_limit /home/$each/public_html/ >> /root/temp.txt; done
cat /root/temp.txt | grep ini_set

mbstring

Check if it is installed with the following

php -i | grep --color mbstring

if that come back with this it is installed but not enabled:

mbstring
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.func_overload => 0 => 0
mbstring.http_input => pass => pass
mbstring.http_output => pass => pass
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value

Go into the php.ini and un-comment these lines.

vim /usr/local/lib/php.ini

and un-comment these lines.

extension=php_mbstring.dll
extension=php_mcrypt.dll

Then

/etc/init.d/httpd stop
/etc/init.d/httpd startssl

MODSEC

my whitelisting script

wget http://shooltz.net/modsec_whitelister.sh
chmod +x modsec_whitelister.sh
./modsec_whitelister.sh

Remove specified directory from modsec

SecRule REQUEST_URI  "URI goes here" phase:1,nolog,allow,ctl:ruleEngine=Off

Add to this file and restart

vi /usr/local/apache/conf/modsec2/whitelist.conf
/etc/init.d/httpd restart
/etc/init.d/apf restart

Remove a whole domain

SecRule SERVER_NAME "handymanreality.com" phase:1,nolog,allow,ctl:ruleEngine=Off

Common modsec uri's

/wp-admin/post.php
/wp-admin/admin-ajax.php
/wp-admin/page.php

Script to email Modsec logs

per day to the customer.

First make the script

touch /root/modseclog.sh
touch /root/tmplog.txt
touch /root/tmplog2.txt
chmod +x /root/modseclog.sh
vim /root/modseclog.sh

Paste the following into it.

#!/bin/bash

date=`date | awk '{print$2, $3}'`
echo "" > /root/tmplog.txt && echo "" > /root/tmplog2.txt
cat /usr/local/apache/logs/error_log | grep modsec > /root/tmplog.txt
cat /root/tmp.txt | grep "$date" > /root/tmplog2.txt
cat /root/tmplog2.txt | mail -s "Modsec Log for $date" (email goes here)

Save it and then add the following line into your crontab.

57 23 * * * /root/modseclog.sh

Now wait for 11:57 and then check your email. :P


ModRewrite

www redirect Make sure mod_rewrite is on in the httpd.conf

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

MTR <enhanced traceroute>

To install:

yum install mtr

If it fails to find the package you will need to add rpmforge to your repo's

MS SQL on a cpanel box

To install MS SQL Do the following.

Install unixODBC:

cd /usr/src
wget http://www.unixodbc.org/unixODBC-2.3.0.tar.gz
tar -zxf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure -prefix=/usr/local -enable-gui=no
make install

Install FreeTDS:

cd /usr/src/
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar -zxf freetds-stable.tgz
cd freetds-*
./configure -with-tdsver=8.0 -with-unixODBC=/usr/local
make install
ldconfig

Tell EasyApache we want MSSQL support:

echo '--with-mssql' >> /var/cpanel/easy/apache/rawopts/all_php5

Now, recompile PHP/Apache through EasyApache. It’s OK to use the same options as previous, because MSSQL isn’t an option in EasyApache that can be toggled on and off; we did it manually (and permanently) in the last step.

Verify your work by checking phpinfo() for the mssql section.

MYSQL

To backup all databases to remote location

mkdir /home/sqlbackup
for db in `mysql -s -B -e "show databases"`;do mysqldump $db > /home/sqlbackup/$db.sql.(version number here);done

repair a crashed MYISAM table stop chkservd and mysql

/usr/local/cpanel/bin/tailwatchd --disable=Cpanel::TailWatch::ChkServd
/etc/init.d/mysql stop

then do

myisamchk -r /var/lib/mysql/(databasename)/(tablename)
/etc/init.d/mysql start
/usr/local/cpanel/bin/tailwatchd --enable=Cpanel::TailWatch::ChkServd

"MySQL server has gone away" fix

vim /etc/my.cnf

is to increase

wait_timeout
max_allowed_packet

Usually doubling these settings will solve this error.

/etc/init.d/mysql stop
/etc/init.d/mysql start

Correct way to upgrade mysql in cpanel box

vim /var/cpanel/cpanel.config

mysql=version you want (IE...4.1, 5.1)

/usr/local/cpanel/whostmgr/bin/whostmgr2 --updatetweaksettings
mkdir /home/sqlbackup
for db in `mysql -s -B -e "show databases"`;do mysqldump $db > /home/sqlbackup/$db.sql.(old mysql version number here);done
/scripts/mysqlup --force
mysqladmin version
/scripts/easyapache

Myqsl packages are installed

rpm -qa | grep SQL | grep -vi perl

Force perl update

/scripts/perlinstaller --force Bundle::DBD::mysql

what mysql version

mysqladmin version

Mysql database location

cd /var/lib/mysql

imports a dumped file

mysql database < db-dump-file.sql

Mysqldump

mysqldump dbname > dbname.sql

Export all databases to a single sql file

mysqldump -u root -p --all-databases > all.sql

Import all databases back to mysql.

mysql -u root -p < all.sql

Mtop

This is a monitoring tool much like Htop or top, but for mysql.

mysql -e "CREATE USER 'mysqltop'@'localhost';grant super, reload, process on *.* to 'mysqltop'@'localhost';"
cd /usr/local/src
wget http://downloads.sourceforge.net/project/mtop/mtop/v0.6.6/mtop-0.6.6.tar.gz
tar -zxvf mtop-0.6.6.tar.gz
rm -rf mtop-0.6.6.tar.gz
cd mtop-0.6.6
perl Makefile.PL
make
make install
mtop

ENJOY!!!

MR Radar

Install mr radar

lpyum install mm3k-client-pull

NGINX

ADD VHOST To add a vhost you must go to:

cd /etc/nginx/vhosts/

The copy an already existing domain vhost file over to the name that you need.

cp -Rp Existing.com newdomain.com
vim newdomain.com

Change the document root over to the new users document root, also change all references of the existingdomain to the new domain then save and exit the file. restart nginx

/etc/init.d/nginx restart

Openssl

my guide to openssl this will unpackage global sign certs that look like this CEDS1008174562.pfx

openssl pkcs12 -in CEDS1008174562.pfx -out cert -nodes

of course replace the "CEDS1008174562.pfx" with your .pfx files name and change "cert" to what ever you want the output file called,
also at this point you will need to enter the password that you setup when you converted the cert.

OwnerShip & Groups

Tell what group number owner is

cat /etc/passwd | grep nobody

Add user to group

useradd -G {group-name} username

Perl

Update all perl modules

/scripts/checkperlmodules

To list all Perl modules.

perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted =>
sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' >
Perlmodules.txt

then if you wanted to find the imagemagick perl module do the following.

cat Perlmodules.txt |grep -i imagemagick

Permissions

Find 777 folders

find /home -perm 0777 -type d -print

Find files and folders and change to 755 and 644

find /home/(username)/public_html/ -type d -exec chmod 755 '{}' \;
find /home/(username)/public_html/ -type f -exec chmod 644 '{}' \;

Plesk

PHP

PHP info

<?php phpinfo(); ?> 

One liner PHP info, make sure to change (username here) ti the account in questions username.

touch phpinfo.php && chown (username here). phpinfo.php && echo "<?php phpinfo(); ?> " > phpinfo.php

PHP version

/usr/local/cpanel/bin/rebuild_phpconf --current

Set the default version in the .htaccess

vim /usr/local/apache/conf/php.conf

go to the following and you want to copy out the line starting with "AddType"
will look something like this but might be different...
AddType application/x-httpd-php5 .php5 .php4 .php .php3 .php2 .phtml
copy the whole line and if you are doing php4 change the 5 to 4's and vice versa, but dont have any duplicate options.

PHP 4 module check

/usr/local/php4/bin/php

enable/disable monitoring script ---

wget http://scripts.ssullivan.org/apiCalls/confMonitoring
perl confMonitoring

PhP mem limit on a shared with dso goes into the public_html in the .htaccess

php_value memory_limit 64M

veiw availiable php upgrades

/scripts/phpextensionmgr list

install php upgrade

/scripts/phpextensionmgr install (name here)

php rpm php rpms


PHPmyadmin

To update just phpmyadmin.

/usr/local/cpanel/bin/updatephpmyadmin --force

Pixel Post

You can go to pixelpost.org for more details about this program. for the installation guide go here Install guide

Log into the server and go to the folder that the customer wants this installed at.

wget http://www.pixelpost.org/releases/latest.zip  
unzip pixelpost_v1.7.3.zip

Make sure you change the user in the next command to the correct name.

chown -R user. ./*

Give customer this link to complete setup.

 http://domain.com/installation directory/admin/install.php

Ports

Bindings

netstat -lnc

Premigrations

Lower TTLs

After you are in your screen session, the first thing you will want to do is lower the TTLs of each domain being moved. This is to prevent extended downtimes for our customers. Lowering the TTLs usually requires you to edit the zone file, change the TTL and modify the serial number.

You can use the Greps that follow to check the current serial numbers and the sed command to lower the TTLs and set the serial number to todays date. TEST if you use this, only use rndc reload once you have tested.

check current TTLs and serial number

grep --color -e '^\$TTL.*' -e '[0-9]\{10\}' /var/named/*.db   # this [0-9]\{10\}  will be the serial number, 10 numbers in a row

make sure date works

date +%Y%m%d%H

the -i flag will create backups in the same directory, liquidweb.com.lwbak for example

sed -i.lwbak -e 's/^\$TTL.*/$TTL 300/g' -e 's/[0-9]\{10\}/'`date +%Y%m%d%H`'/g' /var/named/*.db

or this

for domain in `cat domains.txt`; do sed -i.lwbak -e 's/^\$TTL.*/$TTL 300/g' -e 's/[0-9]\{10\}/'`date +%Y%m%d%H`'/g' /var/named/$domain.db ; done

check your work

grep --color -e '^\$TTL.*' -e '[0-9]\{10\}' /var/named/*.db 

If everything looks ok, reload the domains to have the changes take effect, otherwise replace the backups.

rndc reload

In case of external migrations, check that the structure of /var/named is sane, and that files are named as expected (you may have to change them from .com.domain to .com.db, for instance).

Python

find python version

python -V

Ramdisk

Register_globals

turn off in dso for one account
just add the following to the cpanel account .htaccess that you want to disable globals for.

php_flag register_globals off 

Reverse DNS

File location where you add it Since my workstations ip is 69.16.222.26 I would find my ptr record in this file, on NS.liquidweb.com.

[root@ns /var/named]# vim 222.16.69.in-addr.arpa.db

Then I locate the line that says 26, (since that is the last octet of my ip) and add the following.

26 IN PTR      vov.wks.liquidweb.com.

change the ttl to 300, change the serial, and then reload the bitch.

rndc reload 222.16.69.in-addr.arpa
rndc reload 222.16.69.in-addr.arpa

You are done, Welcome to the world of being tracked by Liquidweb.

Rdesktop

rdesktop (servername here) -u mshooltz -p (passhere) &

ROBOTS.TXT

To make a file that prevents indexing of certain folders.

touch robots.txt

change the permissions to user.user and the edit the file and add these lines to it.

User-agent: *
Disallow: /

You can specify othe directorys that you wish to be blocked by adding the path, and for this file "/" = public_html.

RPM

Rpm src packages go here

/usr/local/src/

remove old kernal srcs

rpm -qa | grep kernel-source | xargs rpm -e

Rpm remove installed packages

rpm -e --nodeps {package name here}

Rsync

basic rsync

rsync -avHl /home/(username)/public_html/ /home/(username)/public_html/

rsync from a remote server to a local server

rsync -avHle ssh -p 22222 root@67.225.167.252/usr/share/ssl /usr/share/

SCP

scp {file} root@(servers ip here):/home/ 


SED

replace this with THIS

sed -i 's/(this)/(THIS)/g' path/filename

S.M.A.R.T stuffs

hard drive statistics

smartctl -A /dev/sdbX

replace X with hard drive number.

SPAM filtering fix

Make spamassassin learn spam Firstly you will have to have the customer put all of their spam in a folder, I use LWSPAM. After that has been completed you will have to figure out what cpanel users this has to be done for. Then you will ne to swithch to those users at the CLI.

su (cpanel username here)

After logging into the user you will then run the following command on that LWSPAM folder you had the customer add.

/usr/bin/sa-learn --spam /home/(username)/mail/cur/.LWSPAM/*

This has been completed tell the cusromer hola.

SPAMD

SPAMD failing

/scripts/perlinstaller Digest::SHA1
/scripts/perlinstaller --force Mail::SpamAssassin
/etc/rc.d/init.d/exim restart
/scripts/restartsrv spamd

Watch to see if spamd still fails

while x=0; do ps aux | grep spamd | grep -v grep; sleep 15; done

SSH

Add to make ssh not time out.

echo "serveraliveinterval 60" >> /home/mike/.ssh/config && echo "serveralivecountmax 10" >> /home/mike/.ssh/config

Stats

For individual accounts, run:

/scripts/runweblogs

or for all accounts on the server, try

for i in `ls -A /var/cpanel/users`; do /scripts/runweblogs $i;done

Suphp fix

suPHPfix (cPanel only) corrects common permission/ownership issues (as well as some PHP setting issues) that are commonly encountered when switching to CGI/FCGI/suPHP (with suexec enabled). suPHPfix also has the ability to restore cPanel accounts to the state they were in before it made any changes. This is useful when customers decide CGI/FCGI/suPHP (with suexec enabled) is not for them and you wish to undo/revert all changes made by suPHPfix.

suPHPfix can only restore states if --save-state was ran! See section three (Full Usage/Help) for full details.

Download/Installation

/scripts/perlinstaller JSON && /scripts/perlinstaller Linux::Ext2::FileAttributes
wget -O /scripts/suphpfix.pl http://layer3.liquidweb.com/scripts/suphpfix.pl
chmod +x /scripts/suphpfix.pl

Example Commands

Fixing Common suPHP Conversion Problems

To fix/prepare all cPanel accounts for the conversion to suPHP, you would run (This was the default option before version 2.0.0):

/scripts/suphpfix.pl --prep all

To fix/prepare the 'liquidweb' cPanel account for the conversion to suPHP, you would run:

/scripts/suphpfix.pl --prep liquidweb

Saving States

To save current permission/ownership states for all files/directories in every users WWW, run:

/scripts/suphpfix.pl --save-state all

To save current permission/ownership states for all files/directories in the 'liquidweb' cPanel accounts WWW, run:

/scripts/suphpfix.pl --save-state liquidweb

Restoring States

To restore all saved cPanel accounts permissions/ownerships in WWW, run:

/scripts/suphpfix.pl --restore-state all

To restore just the 'liquidweb' cPanel accounts permissions/ownerships in WWW, run:

/scripts/suphpfix.pl --restore-state liquidweb


Notice: If you want to see what chmods/chowns suphpfix will run before suPHPfix makes any changes, add verify. Example: /scripts/suphpfix.pl --restore-state all verify


Full Usage/Help

>> /scripts/suphpfix.pl --help
-suphpfix 2.0.0
*** Options:
+++ Fix common problems when converting to suPHP
--prep all ==>  
   This will chown all cPanel users files/directories in their public_html's to cPanelUser.cPanelUser. It will also remove group and world write from files/directories. In addition, any php directive in .htaccess such as php_flag will be  commented out  (unless htscanner is present). 
--prep cPanelUser ==> 
   Same as '--prep all' but only applies fixes to the specified cPanel account.
+++ Saving states
--save-state all ==>
   This saves the current permission/ownership settings (for later restores) for all cPanel accounts files/directories under their public_html's.
--save-state cPanelUser ==> 
   Same as '--save-state all' but only for the specified cPanel account.
+++ Restoring states
--restore-state all ==> 
   This restores all saved cPanel accounts permission/ownership settings at the time --save-state all was last ran. It also uncomments any php directives in accounts .htaccess file(s).
--restore-state all verify ==> 
   Same as '--restore-state all' but just outputs proposed chmods/chowns for all accounts without actually changing anything.
--restore-state cPanelUser ==> 
   This restores only the specified cPanel accounts permissions/ownership settings at the time --save-state was last ran for the user. It also uncomments any php directives in the accounts .htaccess file(s).
--restore-state cPanelUser verify ==> 
   Same as '--restore-state cPanelUser' but just outputs proposed chmods/chowns for the user without actually changing anything.
*** General:
* suphpfix uses /root/datastore_suphpfix/ to store JSON data. These JSON files allow suphpfix to store what permissions/ownerships each backed up cPanel user had at the time of the last --save-state. There are two JSON files for each cPanel account (one for files, one for directories). In this directory suphpfix uses backedupUserList.all to store what cPanel users were backed up with --save-state all.

System specs

tells the system infos

uname -a

What linux version and release

cat /etc/redhat-release

tells system kernel version

uname -r

Tar

Extract a .tar.gz

tar -zxvf filename.tar.gz

Extract a .tar

tar -xvf filename.tar

Preview the contents of a package so you can pick what to pull out

tar -tvzf filename.tar.gz

you can also pipe that to search for a certain folder

tar -tvzf filename.tar.gz | grep (folder or filename)

Extract a certain file from a backup or tar file

tar -xvzf filname.tar.gz /home/mike/public_html

us the exact line that the previous command gave you.

Time sync

sync time to lws time server

rdate -s time.liquidweb.com

Top

sort by memory

shift - m

sort by processor usage

shift - p

Users

This is a one liner to add user, put them in a group, and change their password.

useradd bmurphy && usermod -G wheel bmurphy && passwd bmurphy

VI commands

Add line numbers

:set number

Remove line numbers

:set nonumber

VPS

Get root fight when logged in using LDAP

sudo su -

VPS is locked when some operation (backup, migration, start / stop, etc.) with this VPS is in progress. You can determine which process is holding VPS #101 using the following command on the hardware node:

# cat /vz/lock/101.lck

You can kill that process if needed. Make sure that the process is really killed. If there is no process with that PID on the node, just remove the lockfile.

WordPress Solutions

Moving a WP site To move a wordpress site forward a directory You will do the following:
1) cd to the users public_html then move the contents forward

mv (current installation)/* /home/user/public_html/

now edit the wp-config.php and add the following lines..

define('WP_HOME','http://domain.com');
define('WP_SITEURL','http://domain.com');

Then login to their whm and go into WHM and then find the database, and modify the site url to the correct domain. (located under the wp-options table as the siteurl description)

Then if the urls need stuffs removed do the following.

mysqldump dbname > dbname.sql
cp dbname.sql dbname.sql.bak

Then we will have to run a sed statement to change the links to the new url.

sed -i 's/old url/newurl/g' dbname.sql 

Then you have to re-import the .sql

mysql dbname < dbname.sql

should be done now.

YUM problems

First off always check this location

ls -lah /etc/yum.repos.d

And if it lists anything MORE than the following please mv everything else out of this folder.

root@host [/usr/local/cpanel/logs/easy/apache]# ls -lah /etc/yum.repos.d
total 20K
drwxr-xr-x   2 root     root     4.0K Nov 14 19:08 ./
drwxr-xr-x  63 root     root      12K Nov 14 20:02 ../
-rw-r--r--   1 systuser systuser  660 Mar  2  2005 yum.system.repo

if you see anything more than this please move all other repos out of this folder and try again. If you problem still occurs please proceed on. Next check you yum.conf to make sure it is correct should look like the following.

[root@Shooltz.net [~]$ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=centos-release
tolerant=1
exactarch=1
retries=20
obsoletes=1
gpgcheck=1
exclude=apache* bind-chroot centos-yumconf courier* dovecot* exim* httpd* mod_ssl* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail*

If you yum.conf does not look lik ethat please back it up and replace it with what follows.

mv /etc/yum.conf /etc/yum.conf.bak
echo -e "[main]\ncachedir=/var/cache/yum\ndebuglevel=2\nlogfile=/var/log/yum.log\npkgpolicy=newest\ndistroverpkg=centos-release\ntolerant=1\nexactarch=1\nretries=20\nobsoletes=1\ngpgcheck=1\nexclude=apache* bind-chroot centos-yumconf courier* dovecot* exim* httpd* mod_ssl* mysql* nsd* perl* php* proftpd* pure-ftpd* ruby* spamassassin* squirrelmail*" > /etc/yum.conf

After this has been completed, and if it is still broken we will reset the rpm databases.

rm -f /var/lib/rpm/__db*
rpm -vv --rebuilddb



CSS for my wiki