Skip to content

Instantly share code, notes, and snippets.

@mdrmike
Last active February 4, 2016 23:17
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mdrmike/2fb54d72bd9c4075dd5e to your computer and use it in GitHub Desktop.
Save mdrmike/2fb54d72bd9c4075dd5e to your computer and use it in GitHub Desktop.
Ubuntu 14.04 NGINX WebServer for production, development, and/or desktop use.

UPDATE UBUNTU 14.04

sudo apt-get update
sudo apt-get -y upgrade

CORE INSTALL

note: you'll need to enter a root password for mysql

sudo apt-get -y install nginx php5-fpm php5-cli php5-gd mariadb-server-5.5

Optional: Install Development related apps

sudo apt-get -y install git phpmyadmin

Backup orig conf files

sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/www.conf.ORIGINAL

php5-fpm setup
secure php5-fpm a bit more to only listen.allowed_clients = 127.0.0.1

sudo sed -i 's|;listen.allowed_clients = 127.0.0.1|listen.allowed_clients = 127.0.0.1|g' /etc/php5/fpm/pool.d/www.conf

Setup PHP for Drupal

by overriding vanilla PHP.ini (which makes for easy future updates)

sudo mkdir /etc/php5/conf.d
wget -O - https://gist.github.com/mdrmike/75c3707ee867537def03/download | sudo tar xz
sudo mv gist75c3*/* /etc/php5/conf.d/
sudo rm -R gist75c3*
sudo ln -s /etc/php5/conf.d/php_drupalpro.ini /etc/php5/fpm/conf.d/99-php_drupalpro.ini

Setup nginx

NGINX DRUPAL VHOST TEMPLATE

NX_DPTPL="3a8045ad9ad0f9606ca3" # as in: https://gist.github.com/mdrmike/3a8045ad9ad0f9606ca3
wget -O - "https://gist.github.com/mdrmike/$NX_DPTPL/download" | sudo tar xz
sudo mv gist$NX_DPTPL/* /etc/nginx/sites-available/
sudo rm -R gist$NX_DPTPL*

Optional: PHPMYADMIN Setup

wget -O - https://gist.github.com/mdrmike/8cd55112af1db7a446f5/download | sudo tar xz
sudo mv gist8cd5*/* /etc/nginx/sites-available/
sudo rm -R gist8cd5*
sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/
echo '127.0.0.1 phpmyadmin #drupalpro' | sudo tee -a /etc/hosts

Optional: Install Drush

#install composer globally cd /opt
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/opt
sudo ln -s /opt/composer.phar /usr/local/sbin/composer
sudo git clone https://github.com/drush-ops/drush.git /opt/drush
cd /opt/drush
git tag
sudo git checkout 7.0.0-alpha8 #or whatever version you want.
sudo ln -s /opt/drush/drush /usr/local/sbin/
sudo composer install

Alternatively, install for local user and multiple versions

mkdir ~/Programs
cd ~/Programs
git clone https://github.com/drush-ops/drush.git drush5
cp -R ~/Programs/drush5 ~/Programs/drush6
cd ~/Programs/drush5
git checkout tags/7.x-5.9
cd ~/Programs/drush6
git checkout tags/8.x-6.0-beta1
sudo ln -s ~/Programs/drush5/drush /usr/local/sbin/
sudo ln -s ~/Programs/drush5/drush /usr/local/sbin/d5
sudo ln -s ~/Programs/drush6/drush /usr/local/sbin/d6
sudo ln -s ~/Programs/drush5/drush.complete.sh /etc/bash_completion.d/
cd

Optional: Quickstart drush addons install

mkdir ~/Programs
mkdir ~/.drush
cd ~/Programs
git clone --branch 7.x-3.x http://git.drupal.org/project/drupalpro.git
ln -s ~/Programs/drupalpro/drush_addons/* ~/.drush/

Optional: Setup example Drupal Website: drupal7.dev

mkdir ~/websites
cd ~/websites
drush -y dl --destination=$HOME/websites drupal-7.x
mv drupal-7*/ drupal7
mkdir drupal7/sites/default/files
cp drupal7/sites/default/default.settings.php drupal7/sites/default/settings.php
sudo chown -R :www-data ~/websites
find ~/websites -type d -print0 | xargs -0r chmod a=,u+srwX,g+srX --
chmod a=,ug+rwX drupal7/sites/default/files
chmod ug+rw drupal7/sites/default/settings.php
sudo cp /etc/nginx/sites-available/TEMPLATE_drupalpro.conf /etc/nginx/sites-available/drupal7.dev.conf
sudo sed -i 's|##==SERVER_TLD==|drupal7.dev|g' /etc/nginx/sites-available/drupal7.dev.conf
sudo sed -i 's|##==PATH_TO_SITE==|/home/drupalpro/websites/drupal7|g' /etc/nginx/sites-available/drupal7.dev.conf
sudo sed -i 's|##==D7_ONLY==||g' /etc/nginx/sites-available/drupal7.dev.conf
sudo ln -s /etc/nginx/sites-available/drupal7.dev.conf /etc/nginx/sites-enabled/
echo '127.0.0.1 drupal7.dev #drupalpro' | sudo tee -a /etc/hosts
mysql -h localhost -u root -pdrupalpro
create database drupal7;
create user drupal7;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES ON drupal7.* TO 'drupal7'@'localhost' IDENTIFIED BY 'drupal7';
exit

Restart Services

sudo service mysql restart
sudo service nginx restart
sudo service php5-fpm stop #bug in php5-fpm restart: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376
sleep 3 && sudo service php5-fpm start

Make all logs readable by adm group

sudo chown -R :adm /var/log/*
sudo chmod -R g+r /var/log/*

Optional: Install Desktop development apps

sudo apt-get -y install gitg meld nautilus-compare guake geany diodon synaptic indicator-multiload hamster-applet hamster-indicator gtg autokey-gtk

Optional A: Ruby APT-GET Ruby (1.9.3) + compass install

sudo apt-get -y install ruby && sudo gem install compass

Optional B: Ruby via RBenv install (Don't do this if you install ruby via apt-get) - https://gorails.com/setup/ubuntu/14.04 / OR chruby: http://yousefourabi.com/blog/2013/11/the-postmodern-ruby-environment

hmm ... might need: sudo apt-get install apt-get install autoconf bison libssl-dev

sudo apt-get install git curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties
cd
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_aliases
echo 'eval "$(rbenv init -)"' >> ~/.bash_aliases
exec $SHELL
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_aliases
exec $SHELL
rbenv install 2.1.5
rbenv global 2.1.5
ruby -v && gem update --system

Optional C: Ruby via RVM install (Don't do this if you installed ruby via APT-GET or rbenv)

setup requirements (for veewee)
sudo apt-get install libxslt1-dev libxslt1-dev build-essential
check for missing requirements for RVM

for name in {bash,awk,sed,grep,ls,cp,tar,curl,gunzip,bunzip2,git,svn} ; do which $name || echo "** MISSING: $name" ; done

Install requirements for RVM

sudo apt-get install curl git svn
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
echo "source ~/.rvm/scripts/rvm" >> ~/.bash_aliases
rvm install 2.1.5
rvm use 2.1.5 --default
ruby -v && gem update --system

Install compass

gem install compass # may want/need to run as sudo if ruby installed using apt-get

Optional: Setup editors

GEANY

git clone https://github.com/codebrainz/geany-themes.git ~/.config/geany/codebrainz
cd ~/.config/geany/codebrainz
git checkout tags/1.22
mkdir -p ~/.config/geany/colorschemes
ln -s ~/.config/geany/codebrainz/colorschemes/* ~/.config/geany/colorschemes/

Optional: Install Koala GUI for SASS/LESS/COFFESCRIPT Development: https://github.com/oklai/koala # https://github.com/rogerwang/node-webkit

mkdir ~/Programs
cd ~/Programs
git clone https://github.com/oklai/koala.git && cd koala && git checkout tags/v2.0.3 && cd ~/Programs

if [ getconf LONG_BIT == "64" ]; then # 64bit system -- Koala currently only supports node-webkit-v0.9.2
wget -O - http://dl.node-webkit.org/v0.9.2/node-webkit-v0.9.2-linux-x64.tar.gz | tar xz
sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
else # 32bit install
wget -O - http://dl.node-webkit.org/v0.9.2/node-webkit-v0.9.2-linux-x64.tar.gz | tar xz
sudo ln -s /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
fi

cp ~/Programs/node-webkit-v0.9.2-linux-/nw ~/Programs/koala/src/
tee -a ~/.local/share/applications/koala.desktop > /dev/null <<-END_OF_FILE
[Desktop Entry]
Version=2.0.2
Name=Koala
Comment=Preprocessor
Exec=$HOME/Programs/koala/src/nw
Icon=$HOME/Programs/koala/src/app/assets/img/koala.png
Terminal=false
Type=Application
Categories=Development;Application;
END_OF_FILE
chmod +x ~/.local/share/applications/koala.desktop

Optional: Install live-reload: https://github.com/guard/guard-livereload

Optional install Jekyll

gem install jekyll
gem install jekyll-sitemap # needed on Ubuntu 14.04 with ruby ruby 2.1.5

Optional: install nodejs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment