Do meetup
-
Upload
poh-chiat-koh -
Category
Technology
-
view
338 -
download
0
Transcript of Do meetup
![Page 1: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/1.jpg)
Digital Ocean Meetup
What I do with my $5 (per month actually)
![Page 2: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/2.jpg)
IntroductionAbout me? Or about Digital Ocean?
![Page 3: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/3.jpg)
What I’m going to talk about
![Page 4: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/4.jpg)
So why DO?
![Page 5: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/5.jpg)
The Adverts
![Page 6: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/6.jpg)
Price?
![Page 7: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/7.jpg)
Easy?
![Page 8: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/8.jpg)
Performance?• Sorry no picture.• Benchmarks gives some indication, but hard to
make it really objective and useful.• Location. DO has no Asia servers.. yet.
![Page 9: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/9.jpg)
It depends.Cliché I know.
![Page 10: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/10.jpg)
Experience with DO• I have a website: www.dilegno.sg
• Some parts of Shoppink use Digital Ocean
• Plus my random stuff I’m going to share with you
![Page 11: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/11.jpg)
Alternatives?Many.
![Page 12: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/12.jpg)
Setting up DO
![Page 13: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/13.jpg)
One
![Page 14: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/14.jpg)
Two
![Page 15: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/15.jpg)
That’s it!
![Page 16: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/16.jpg)
A website
![Page 17: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/17.jpg)
Recipe• A personal website.• Simply get a web server running (apache or
nginx)• My website uses Sinatra. • We then need to get nginx talking to Sinatra.
![Page 18: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/18.jpg)
Sinatra• Sinatra is a Ruby micro-framework
• require 'sinatra'
get '/hi' do "Hello World!"
end
![Page 19: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/19.jpg)
Unicorn# set path to app that will be used to configure unicorn, # note the trailing slash in this example@dir = "/home/sockmister/personal-website/"
worker_processes 1working_directory @dir
timeout 30
# Specify path to socket unicorn listens to, # we will use this in our nginx.conf laterlisten "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64
# Set process id pathpid "#{@dir}tmp/pids/unicorn.pid"
# Set log file pathsstderr_path "#{@dir}log/unicorn.stderr.log"stdout_path "#{@dir}log/unicorn.stdout.log"
![Page 20: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/20.jpg)
Nginx• sudo apt-get install nginx• We can start, stop, restart by
o sudo service nginx restart|start|stop|status
• We then write the config files.
![Page 21: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/21.jpg)
The Idea• The apps we are running today run behind nginx.
Nginx
App1
App2
App3
Incoming Requests
Outgoing Replies
![Page 22: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/22.jpg)
Config Fileupstream pohchiat{ server unix:/home/sockmister/personal-website/tmp/sockets/unicorn.sock;}
server { listen 80; server_name www.pohchiat.com; root /home/sockmister/personal-website/public;
location / { proxy_pass http://pohchiat; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
![Page 23: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/23.jpg)
Done!
![Page 24: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/24.jpg)
Free GitHub reposUsing GitLab
![Page 25: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/25.jpg)
Recipe• Setup GitLab
o Install dependencieso Setup new usero Clone and install GitLab shello Setup database (postgresql or mysql)o Setup GitLab itself
• Hook up with Nginx
![Page 26: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/26.jpg)
Dependencies• Python 2
o Sudo apt-get install python
• Rubyo Ubuntu repositories are outdatedo I use rvm to handle ruby versions.
• Gemo gem install bundler
![Page 27: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/27.jpg)
Adduser• We need to create a new user called ‘git’.
o sudo adduser --disabled-login --gecos 'GitLab' git
![Page 28: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/28.jpg)
GitLab Shell• Clone
o sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
• Git checkout the right versiono sudo -u git -H git checkout v1.7.1
• Edit config fileo sudo -u git -H editor config.yml
• Run a scripto sudo -u git -H ./bin/install
![Page 29: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/29.jpg)
Database• Install postgresql
o sudo apt-get install -y postgresql-9.1 libpq-dev
• Logino sudo -u postgres psql -d template1
• Create user and databaseo CREATE USER git WITH PASSWORD '$password';o CREATE DATABASE gitlabhq_production OWNER git;
![Page 30: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/30.jpg)
GitLab• Clone
o sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
• Git checkouto sudo -u git -H git checkout 6-1-stable
• Configureo Copy and change GitLab config fileo Mkdir for logs, tmp, publico Copy and change unicorn config file
• Install required Gemso gem install charlock_holmes --version '0.6.9.4'o bundle install --deployment --without development test mysql aws
• Initialize DBo sudo -u git -H chmod o-rwx config/database.ymlo bundle exec rake gitlab:setup RAILS_ENV=production
• Run as service
![Page 31: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/31.jpg)
Nginx• This time GitLab has supplied the Nginx config
file.• The idea though, is really the same.
![Page 32: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/32.jpg)
Done!
![Page 33: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/33.jpg)
E-Book manager Calibre Library
![Page 34: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/34.jpg)
Calibre LibraryThis needs a bit of intro.
![Page 35: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/35.jpg)
Calibre Library
![Page 36: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/36.jpg)
Recipe• Setup calibre app (this time it’s actually really
simple)• Setup dropbox daemon• Hook up to Nginx (same!)
![Page 37: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/37.jpg)
Setup Calibre• sudo python -c "import sys; py3 = sys.version_info[0] > 2; u =
__import__('urllib.request' if py3 else 'urllib', fromlist=1); exec(u.urlopen('http://status.calibre-ebook.com/linux_installer').read()); main()
• To start calibre server, • Sudo /opt/calibre/calibre-server• Options:• --with-library• --username• --password• --daemonize
![Page 38: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/38.jpg)
Dropbox• I run calibre on my laptop as well.• Need a simple way to sync the books both ways.• Trivia: NUS won Dropbox space race a while ago
and all NUS students have 25 GB extra space.
![Page 39: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/39.jpg)
Dropbox• Download & install
o wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86
o tar –xzvf dropbox.tar.gz
• Runo ~/.dropbox-dist/dropboxd
• Link to your Dropbox accounto This client is not linked to any account…
• Control Dropboxo wget -O ~/.dropbox/dropbox.py "http://www.dropbox.com/download?
dl=packages/dropbox.py"
![Page 40: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/40.jpg)
Done!
![Page 41: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/41.jpg)
Caveats• It’s experimental.• Just because you can, doesn’t mean you should.• 512MB RAM• Erm. I cheated. I paid for domain too.
![Page 42: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/42.jpg)
Takeaway• Tons of open source projects to try out.• It’s not a must to run this on DO.
![Page 43: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/43.jpg)
Resources• Digital Ocean has a lot of guides. A lot a lot.
![Page 44: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/44.jpg)
Otherwise…• Setup nginx
o http://ruby-journal.com/how-to-setup-rails-app-with-puma-and-nginx/o http://recipes.sinatrarb.com/p/deployment/nginx_proxied_to_unicorn
• GitLab o https://github.com/gitlabhq/gitlabhq/blob/6-1-stable/doc/install/
installation.md
• Calibre servero http://manual.calibre-ebook.com/cli/calibre-server.html
• Dropbox daemono http://ubuntuservergui.com/ubuntu-server-guide/install-dropbox-
ubuntu-server
![Page 45: Do meetup](https://reader035.fdocuments.us/reader035/viewer/2022062300/5557d3c4d8b42ab6258b48d3/html5/thumbnails/45.jpg)
Thank you!