Created
January 7, 2014 20:41
-
-
Save ghafran/8306500 to your computer and use it in GitHub Desktop.
Setup node development environment on ubuntu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
echo 'System Update' | |
echo '=============' | |
sudo apt-get update | |
echo 'System Upgrade' | |
echo '==============' | |
sudo apt-get -y upgrade | |
echo 'Install Git' | |
echo '===========' | |
sudo apt-get install -y git-core | |
echo 'Install Node' | |
echo '============' | |
sudo apt-get install -y python-software-properties python g++ make | |
sudo add-apt-repository -y ppa:chris-lea/node.js | |
sudo apt-get update | |
sudo apt-get install -y nodejs | |
sudo ln -s /usr/bin/nodejs node | |
echo 'Install Redis' | |
echo '=============' | |
sudo apt-get -q -y install redis-server | |
echo 'Install Mongodb' | |
echo '===============' | |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 | |
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list | |
sudo apt-get update | |
sudo apt-get install mongodb-10gen | |
echo 'Configure MongoDB' | |
echo '=================' | |
sudo sed -i '$ a\setParameter = textSearchEnabled=true' /etc/mongodb.conf | |
sudo sed -i '$ a\smallfiles = true' /etc/mongodb.conf | |
sudo service mongodb restart | |
echo 'install cloud9' | |
echo '===============' | |
sudo apt-get install -y libxml2-dev | |
sudo mkdir -p /srv | |
cd /srv | |
sudo git clone https://github.com/ajaxorg/cloud9.git cloud9 | |
cd /srv/cloud9 | |
sudo npm install | |
echo 'Configure cloud9' | |
echo '================' | |
sudo cat <<EOF >~/cloud9.conf | |
description "cloud9" | |
author "root" | |
start on (local-filesystems and net-device-up IFACE=eth0) | |
stop on shutdown | |
respawn # restart when job dies | |
respawn limit 5 60 # give up restart after 5 respawns in 60 seconds | |
script | |
exec sudo -u root /srv/cloud9/bin/cloud9.sh -l 0.0.0.0 -p 80 -w /home/dev/ >> /srv/cloud9/cloud9.log 2>&1 | |
end script | |
EOF | |
sudo mv ~/cloud9.conf /etc/init/cloud9.conf | |
sudo start cloud9 | |
echo 'Optimize Ubuntu' | |
echo '===============' | |
# Increase size of file handles and inode cache | |
sudo sed -i '/fs.file-max/d' /etc/sysctl.conf | |
sudo sed -i '$ a\fs.file-max=999999' /etc/sysctl.conf | |
# Allowed local port range | |
sudo sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.ip_local_port_range=1024 65535' /etc/sysctl.conf | |
### | |
### TUNING NETWORK PERFORMANCE ### | |
### | |
# Do a 'modprobe tcp_cubic' first | |
sudo sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_congestion_control=cubic' /etc/sysctl.conf | |
# Turn on the tcp_window_scaling | |
sudo sed -i '/net.ipv4.tcp_window_scaling/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_window_scaling=1' /etc/sysctl.conf | |
# Increase the maximum total buffer-space allocatable | |
# This is measured in units of pages (4096 bytes) | |
sudo sed -i '/net.ipv4.tcp_mem/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_mem=65536 131072 262144' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.udp_mem/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.udp_mem=65536 131072 262144' /etc/sysctl.conf | |
# Increase the read-buffer space allocatable | |
sudo sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_rmem=8192 87380 16777216' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.udp_rmem_min/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.udp_rmem_min=16384' /etc/sysctl.conf | |
sudo sed -i '/net.core.rmem_default/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.rmem_default=87380' /etc/sysctl.conf | |
sudo sed -i '/net.core.rmem_max/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.rmem_max=16777216' /etc/sysctl.conf | |
# Increase the write-buffer-space allocatable | |
sudo sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_wmem=8192 65536 16777216' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.udp_wmem_min/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.udp_wmem_min=16384' /etc/sysctl.conf | |
sudo sed -i '/net.core.wmem_default/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.wmem_default=65536' /etc/sysctl.conf | |
sudo sed -i '/net.core.wmem_max/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.wmem_max=16777216' /etc/sysctl.conf | |
############################# | |
# General gigabit tuning: | |
#net.core.rmem_max = 16777216 | |
#net.core.wmem_max = 16777216 | |
#net.ipv4.tcp_rmem = 4096 87380 16777216 | |
#net.ipv4.tcp_wmem = 4096 65536 16777216 | |
#setting this to 1 -> possible SYN flooding on port 8080. Sending cookies. | |
sudo sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_syncookies=0' /etc/sysctl.conf | |
# this gives the kernel more memory for tcp | |
# which you need with many (100k+) open socket connections | |
sudo sed -i '/net.ipv4.tcp_mem/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_mem=50576 64768 98152' /etc/sysctl.conf | |
sudo sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.netdev_max_backlog=30000' /etc/sysctl.conf | |
# I was also masquerading the port comet was on, you might not need this | |
# net.ipv4.netfilter.ip_conntrack_max = 1048576 | |
############################### | |
# | |
sudo sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_max_tw_buckets=360000' /etc/sysctl.conf | |
sudo sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.netdev_max_backlog=2500' /etc/sysctl.conf | |
sudo sed -i '/vm.min_free_kbytes/d' /etc/sysctl.conf | |
sudo sed -i '$ a\vm.min_free_kbytes=65536' /etc/sysctl.conf | |
sudo sed -i '/vm.swappiness/d' /etc/sysctl.conf | |
sudo sed -i '$ a\vm.swappiness=0' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_tw_recycle /d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_tw_recycle=0' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_tw_reuse=0' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_orphan_retries/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_orphan_retries=1' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_fin_timeout=25' /etc/sysctl.conf | |
#raise this high | |
sudo sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_max_orphans=819200' /etc/sysctl.conf | |
# http://simonhf.wordpress.com/2010/10/01/node-js-versus-sxe-hello-world-complexity-speed-and-memory-usage/ | |
sudo sed -i '/net.core.somaxconn/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.core.somaxconn=65535' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_no_metrics_save/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_no_metrics_save=1' /etc/sysctl.conf | |
sudo sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf | |
sudo sed -i '$ a\net.ipv4.tcp_max_syn_backlog=20480' /etc/sysctl.conf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment