Ubuntu Server Setup
Jump to navigation
Jump to search
Turn on Mod Rewrite
1. a2enmod rewrite 2. restart apache server 3. edit vhost file AllowOverride all
Shell Scripting
• Scripts must be chmod 755 so they can execute
• #!/bin/bash (add to the top of the shell script so it can use the bash shell to interpret the script, you can also add python or other shell programs)
• Postional Parameters: $0 ... $9 $@ to access all 0-9 // like in a loop
• Exit Status return Codes: Range from 0 to 255: 0 = success: Other than 0 = error condition: use man or info to find meanign of exit status
&bull, $? contains the return code of the previously executed command
ls /not/here
echo "$?"
Another Code example
HOST="google.com"
ping -c 1 $HOST # -c 1 means it will send 1 ping
if["$?" -eg "0"]
then
echo "$HOST reachable"
else
"$HOST unreachable"
fi
&& and ||
-the second statement only executes if the first one was successfull
mkdir /tmp/bak && cp test.txt /tmp/bak/
-the second statement will execute only if the first one fails
cp test.txt /tmp/bak/ || cp test.txt /tmp
• chain multiple commands together using a ; (semicolon) cp test.txt /tmp/ ; cp test.txt /bak
File Operators (test)
-d FILE -true if is a directory -e FILE True if file exists -f FILE True if file exist and is a regular file -r FILE True if file is readable by you -s FILE True if file exists and is not empty -w FILE True if file is writable by you -x FILE True if file is executable by you -z FILE True if string is empty -n FILE True if string is not empty String1=String2 true if strings are equal String1 != string2 True if the strings are not equal arg1 -eq arg2 equal arg1 -ne arg2 not equal arg1 -lt arg2 less than arg1 -le arg2 less than or equal to arg1 -gt arg2 greater than arg1 -ge arg2 greater than or equal to read -p "Prompt to dispaly" VarableName accepting user input
for loop to rename all jpg files with the date
#!/bin/bash
PICTURES=$(ls *.jpg)
DATE=$ (date +%F)
for PICTURES IN $PICTURES
do
echo "Renaming ${PICTURE} to ${DATE} - ${PICTURE}"
mv $[PICTUE} ${DATE}-${PICTURE}
done
// Output
renaming bear.jpg to 2015-03-06-bear.jpg
Adding exit commands to scripts
#!/bin/bash
HOST="google.com"
ping -c 1 $HOST
IF [ "$?" -ne"0" ]
then
echo "$HOST unrechale"
exit 1
fi
exit 0
Creating a Function
function function-name() {# code goes here}
Calling a Function
function hello() {
echo "hello:
}
hello (you don't need the () just call the name of the function)
** Positional Parameters and passing info to a funciton
#!/bin/bash
function hello(){
echo "hello $1"
}
hello robert # robert is passed to the function hello
#output is hello Robert
** Outputting miltple calls to a function
#!/bin/bahs
funciton hello() {
for NAME in $@
do
echo "Hello $NAME"
done
}
hello robert bob dan
Output
hello robert bob dan
Using Wildcards
* -matches zero or more characters
*.txt
a*
a*.txt
? - matches exactly one character
?.txt
a?
a?.txt
[] character class - matches any of the characters included between the brackets. Matches exactly one character.
[aeiou]* exampld: ls -la [abge]*
ca[nt] matches:(it will match either the n or the t)
can, cat, candy, catch
[!] Matches any characters NOT included between the brackets. Matches exactly one character.
[!aeiou]* would match below bacause it does not start with any of those letters
baseball, cricket
Select a range
[a-g]* matches files that start with a,b,c,d,e,f,g
[3-6]* matches all files start with 3,4,5,6
Using predefined Character Classes
[[:alpha:]]
[[:alnum:]]
[[:digit:]]
[[:lower:]]
[[:upper:]]
[[:space:]]
#!/bin/bash
cd /var/www/bash
# there's a space after the "if", space afer ! then a space after "[", space before "]"
if [ ! -d /var/www/bash/text/ ]
then
mkdir /var/www/bash/text
fi
for FILE in *.txt
do
echo "Copying $FILE"
cp $FILE /var/www/bash/text
done
Case Statements
Apache Commands
- List apache packages and versions
- dpkg -l | grep apache
- shows version of ubnuntu
- cat /etc/issue
- shows version of ubuntu
- cat /etc/*-release
- give detail status of the service
- apachectl status
- Gives info on where config file is located
- apachectl -V
- Search the entire server for the file
- find / | grep "apache2\.conf"
- Info for each line in the .conf File
- Displays Config Info about all Virtual Hosts
- apachectl -t -D DUMP_VHOSTS
- Display All Modules form Apache
- apachectl -t -D DUMP_MODULES
- Enable and Disable Modules
- Directory for Modules
- /etc/apache2/modes-available and /etc/apache2/mods-enabled
- a2enmod and a2dismod will enable of disable modules
- Find where the apache error log is located
- grep -Ri ErrorLog /etc/apache2
- Watch Error log in realtime
- tail -f error.log
- Tools to Analize log files
- AWStats - awstats.sourceforge.net
- GoAccess - Terminal app
- goaccess.prosoftcorp.com