Skip to content

Instantly share code, notes, and snippets.

@jonathonbyrdziak
Created November 5, 2010 03:04
Show Gist options
  • Save jonathonbyrdziak/663591 to your computer and use it in GitHub Desktop.
Save jonathonbyrdziak/663591 to your computer and use it in GitHub Desktop.
This is my installation guide for ubuntu 9
#!/bin/bash
# Installation script for a WordPress 3.01 website on Ubuntu 10.04
#
# Jon Byrd and Kevin Penner
# Nov 13, 2010
#get some parameters
echo "server name:"
read servername
echo "administrator email:"
read adminemail
echo "wordpress database password:"
read dbpass
echo "Upgrade Ubuntu"
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-
echo "Get a firewall working"
apt-get install ufw
sudo ufw logging on
sudo ufw allow www
sudo ufw allow ssh
sudo ufw allow webmin
sudo ufw allow ntp
sudo ufw allow 443
sudo ufw enable
** Synchronize the System Clock **
sudo apt-get install ntp
echo "install Apache, MySQL, PHP and extra libraries needed for Jon"
sudo apt-get install apache2 php5 mysql-server php5-mysql php5-gd -y
sudo apt-get install php5-common php5-dev build-essential curl php5-curl -y
sudo apt-get install php-pear php5-snmp php5-mhash -y
sudo apt-get install php5-memcache php5-gd imagemagick php5-imagick -y
sudo apt-get install libapache2-mod-auth-mysql phpmyadmin libmysqlclient15-dev -y
sudo apt-get install php5-pspell php5-xmlrpc php5-xsl -y
sudo apt-get install php-fpdf -y
#install re2c because it is needed for FPDF
sudo apt-get install re2c -y
Echo "** PDF **********************************************************"
sudo apt-get install php-fpdf -y
echo "** Email *********************************************************"
sudo apt-get install sendmail -y
sudo /etc/init.d/apache2 reload
# Next part is modifed by Kevin Penner - Original from Jurgen Lust
# http://www.beeworks.be/wordpress-ubuntu-installation-script/
# July 9, 2010
#Getting ready for using SSL
sudo a2enmod ssl
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
# generate certificates for the web server:
openssl genrsa -des3 -out $servername.key 1024
openssl rsa -in $servername.key -out $servername.key.insecure
mv $servername.key $servername.key.secure
mv $servername.key.insecure $servername.key
openssl req -new -key $servername.key -out $servername.csr
# generate self-signed certificate
openssl x509 -req -days 365 -in $servername.csr -signkey $servername.key -out $servername.crt
# copy certificates to proper location
sudo cp $servername.crt /etc/ssl/certs
sudo cp $servername.key /etc/ssl/private
#validate the certs
openssl s_client -showcerts -connect $servername:443
# point apache to the correct certificates
sudo sed -i "s/ssl-cert-snakeoil.pem/$servername.crt/" /etc/apache2/sites-available/default-ssl
sudo sed -i "s/ssl-cert-snakeoil.key/$servername.key/" /etc/apache2/sites-available/default-ssl
# update the server name and admin email in the secure site
sudo sed -i "s/webmaster@localhost/$adminemail/" /etc/apache2/sites-available/default-ssl
sudo sed -i "3a\ ServerName $servername" /etc/apache2/sites-available/default-ssl
# enable secure site
sudo a2ensite default-ssl
sudo /etc/init.d/apache2 reload
# disable http site for administration section of WordPress
sudo sed -i "s/webmaster@localhost/$adminemail/" /etc/apache2/sites-available/default
sudo sed -i "2a\ ServerName $servername" /etc/apache2/sites-available/default
sudo sed -i "3a\ Redirect permanent /wp-admin https://$servername/wp-admin" /etc/apache2/sites-available/default
sudo sed -i "4a\ Redirect permanent /wp-login.php https://$servername/wp-login.php" /etc/apache2/sites-available/default
sudo /etc/init.d/apache2 reload
#Reset MySQL password
sudo dpkg-reconfigure mysql-server-5.1
#New Working Code - Kevin 13/11/2010
# create database and user for wordpress
sudo mysql --user=root -p --execute="create database wordpress"
sudo mysql --user=root -p --execute="CREATE USER 'wordpressuser'@'localhost'IDENTIFIED BY '$dbpass'"
sudo mysql --user=root -p --execute="GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost'IDENTIFIED BY '$dbpass'"
sudo mysql --user=root -p --execute="FLUSH PRIVILEGES;"
# download WordPress
sudo wget -O /tmp/wordpress.tar.gz http://wordpress.org/latest.tar.gz
sudo tar -C /var/www -xvzf /tmp/wordpress.tar.gz
# configure WordPress
sudo cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
sudo wget -O /tmp/wp.keys https://api.wordpress.org/secret-key/1.1/salt/
sudo sed -i "s/database_name_here/wordpress/" /var/www/wordpress/wp-config.php
sudo sed -i "s/username_here/wordpressuser/" /var/www/wordpress/wp-config.php
sudo sed -i "s/password_here/$dbpass/" /var/www/wordpress/wp-config.php
sudo sed -i '/#@-/r /tmp/wp.keys' /var/www/wordpress/wp-config.php
sudo sed -i "/#@+/,/#@-/d" /var/www/wordpress/wp-config.php
# move Apache document root to WordPress, both for the public and the secure site
sudo sed -i "s/DocumentRoot \/var\/www/DocumentRoot \/var\/www\/wordpress/" /etc/apache2/sites-available/default-ssl
sudo sed -i "s/DocumentRoot \/var\/www/DocumentRoot \/var\/www\/wordpress/" /etc/apache2/sites-available/default
sudo chown -R www-data:www-data /var/www/wordpress
sudo /etc/init.d/apache2 restart
#install PDFlib-Lite
sudo wget -O PDFlib-Lite-7.0.5.tar.gz http://www.pdflib.com/binaries/PDFlib/705/PDFlib-Lite-7.0.5.tar.gz
sudo tar zxvf PDFlib-Lite-7.0.5.tar.gz && \
cd PDFlib-Lite-7.0.5/ && \
./configure && \
make && \
make install
### When prompted for a directory enter /usr/local/
pecl install pdflib
sudo /etc/init.d/apache2 restart
# Install Webmin
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.510-2_all.deb
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl
wget http://mirrors.kernel.org/ubuntu/pool/universe/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb
sudo dpkg -i libmd5-perl_2.03-1_all.deb
sudo dpkg -i webmin_1.510-2_all.deb
sudo apt-get install apt-show-versions
sudo apt-get -f install
#You Manuall need to do this
##sudo nano /etc/php5/apache2/php.ini
##extension=mysql.so
#You Manually need to do this
#nano /etc/mysql/my.cnf
#bind-address = 127.0.0.1
#sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
echo "WordPress installation finished. Open your browser and go to http://$servername/ to complete the installation."
Installation Packages
** Apache *******************************************************
apache2
** PHP5 Packages ************************************************
php5
libapache2-mod-php5
php5-common
php5-dev
build-essential
curl
php5-curl
php-pear
php5-snmp
php5-mhash
#sudo pecl install pecl_http
#gksudo gedit /etc/apache2/apache2.conf
servername MYSERVERS_NAME_HERE
** PHP5 Cache ************************************************
php5-memcache
** Image Support *************************************************
php5-gd
imagemagick
php5-imagick
** MySql *********************************************************
mysql-server
libapache2-mod-auth-mysql
php5-mysql
phpmyadmin
libmysqlclient15-dev
#gksudo gedit /etc/mysql/my.cnf
bind-address = 127.0.0.1
#gksudo gedit /etc/php5/apache2/php.ini
extension=mysql.so
#sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
** Email *********************************************************
sendmail
** CONFIGURATIONS ************************************************
a2enmod rewrite
** SPEED and Performance *****************************************
# GOOGLE mod_pagespeed
#http://code.google.com/p/modpagespeed/wiki/HowToBuild
#http://blogs.sitepoint.com/2010/11/08/optimization-made-easy-with-mod_pagespeed/
** FIREWALL ******************************************************
#http://net.tutsplus.com/tutorials/php/how-to-setup-a-dedicated-web-server-for-free/
shorewall
sudo cp /usr/share/doc/shorewall-common/examples/one-interface/* /etc/shorewall/
sudo nano /etc/shorewall/rules
** Additional Libraries *****************************************
php5-pspell
php5-xmlrpc
php5-xsl
** PDF **********************************************************
php-fpdf
Step 1: PDFlib http://www.pdflib.com/
download PDFlib-Lite: http://www.pdflib.com/download/pdflib-family/pdflib-lite-7/
extract: tar -xzvf PDFlib-Lite-X.X.XpX.tar.gz
compile: cd PDFlib-Lite-X.X.XpX && ./configure && make && make install
Step 2: Pecl for PDFlib http://pecl.php.net/package/pdflib
install:
install dependences: phpize (php5-dev package)
pecl install pdflib
path to pdflib installation? :/usr/local
Step 3: php.ini
extension=pdf.so
** FAQs **********************************************************
1. Could not reliably determine the server's fully qualified domain name
#gksudo gedit /etc/apache2/apache2.conf
servername MYSERVERS_NAME_HERE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment