Files
www-krisforbes-ca/2011/07/25/rails-on-ubuntu-1004-passenger-nginx-mysql-va.html
T
2022-06-29 13:15:55 -04:00

218 lines
9.8 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Rails on Ubuntu 10.04: Passenger, Nginx, MySQL, Varnish</title>
<meta name="description" content="I setup a new VPS this weekend and decided to share my notes.My notes are from being logged in as root. If youre logged in as another user, youll be typing...">
<link rel="stylesheet" href="/css/main.css">
<link rel="canonical" href="http://blog.krisforbes.ca/2011/07/25/rails-on-ubuntu-1004-passenger-nginx-mysql-va.html">
<link rel="alternate" type="application/rss+xml" title="Kris Forbes Blog" href="http://blog.krisforbes.ca/feed.xml">
</head>
<body>
<header class="site-header" role="banner">
<div class="wrapper">
<a class="site-title" href="/">Kris Forbes Blog</a>
<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</a>
<div class="trigger">
<a class="page-link" href="/about/">About</a>
</div>
</nav>
</div>
</header>
<main class="page-content" aria-label="Content">
<div class="wrapper">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">Rails on Ubuntu 10.04: Passenger, Nginx, MySQL, Varnish</h1>
<p class="post-meta"><time datetime="2011-07-25T19:59:00-04:00" itemprop="datePublished">Jul 25, 2011</time></p>
</header>
<div class="post-content" itemprop="articleBody">
<p>I setup a new VPS this weekend and decided to share my notes.
My notes are from being logged in as root. If youre logged in as another user, youll be typing sudo a lot. :)</p>
<h3 id="configure-your-locale">Configure your locale </h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>locale -a
locale-gen en_US.UTF-8
update-locale <span class="nv">LANG</span><span class="o">=</span>en_US.UTF-8
update-locale <span class="nv">LANGUAGE</span><span class="o">=</span>en_US.UTF-8
<span class="nb">exit
</span>ssh zer1 <span class="c">#zer1 is my VPS added to ~/.ssh/config </span>
locale -a <span class="c">#should have en_US.UTF-8 listed </span>
update-locale <span class="c">#errors? </span>
<span class="c"># Set your time zonedpkg-reconfigure tzdata </span>
ntpdate ntp.ubuntu.com
</code></pre>
</div>
<h3 id="update-ubuntu">Update Ubuntu</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>apt-get update <span class="o">&amp;&amp;</span> apt-get upgrade
Install dependenciesapt-get install build-essential libmagickcore-dev imagemagick libxml2-dev libxslt1-dev git-core libapr1-dev libssl-dev libmysqlclient15-dev libcurl4-openssl-dev curl libncurses5-dev libreadline5-dev libopenssl-ruby1.9
</code></pre>
</div>
<h3 id="install-mysql">Install MySQL</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>apt-get install mysql-server libmysqlclient-dev libmysqlclient15-dev libmysql-ruby
mysql_secure_installation
Install latest Ruby from sourcewget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
tar zxvf ruby-1.9.2-p290.tar.gz
<span class="nb">cd </span>ruby-1.9.2-p290.tar.gz
./configure
make
make install
which ruby
gem list
gem install passenger mysql bundler
</code></pre>
</div>
<h3 id="set-default-environment-for-rails">Set default environment for Rails</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"export RAILS_ENV=production"</span> &gt;&gt; /etc/environment
Install Nginx and Passengerpassenger-install-nginx-module
curl -L https://raw.github.com/jnstq/rails-nginx-passenger-ubuntu/master/nginx/nginx &gt; /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults
service nginx start
</code></pre>
</div>
<h3 id="configure-nginx">Configure Nginx</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>mkdir /opt/nginx/conf/sites-enabled
nano /opt/nginx/conf/nginx.conf
add this within the http <span class="o">{</span> <span class="o">}</span> block:
change default listen port to 8080
include /opt/nginx/conf/sites-enabled/<span class="k">*</span>;
nano /opt/nginx/conf/sites-enabled/test
<span class="k">*</span>note port 8080 <span class="k">for </span>Varnish
server <span class="o">{</span>    listen 8080;    server_name mywebsite.com;    root /home/deploy/test/public;    passenger_enabled on;<span class="o">}</span>
service nginx restart
</code></pre>
</div>
<h3 id="add-deploy-user">Add deploy user</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>adduser deploy
su deploy <span class="c">#switches to deploy</span>
ssh-keygen -t rsa -C “deploy@myserver”
cat ~/.ssh/id_rsa.pub
copy the output into your favorite Git hosting as an allowed key <span class="o">(</span>Assembla, Github, etc<span class="o">)</span>
on your development machine:
cat ~/.ssh/id_rsa.pub
on the server as deploy user:
nano ~/.ssh/authorized_keys
paste <span class="k">in </span>your development machines public key
git clone git@git.assembla.com:myapp.git      #lets you add host as known_host
rm -rf myapp         
Create a MySQL user and databasemysql -u root -p
create database myapp_prod;
create user mydbuser@localhost identified by secret;
grant all privileges on myapp_prod.<span class="k">*</span> to mydbuser@localhost;
</code></pre>
</div>
<h3 id="install-varnish-http-cache">Install Varnish HTTP cache</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>apt-get install subversion autotools-dev automake1.9 libtool autoconf libncurses-dev xsltproc quilt debhelper
svn co http://varnish-cache.org/svn/tags/varnish-2.0.5
<span class="nb">cd </span>varnish-2.0.5/varnish-cache
dpkg-buildpackage
<span class="nb">cd</span> ..
dpkg -i libvarnish1_2.0.6-2_i386.deb
dpkg -i varnish_2.0.6-2_i386.deb
service varnish start
Configure Varnishnano /etc/varnish/default.vcl
Leave this at defaults, but now you know where it is :<span class="o">)</span>
nano /etc/default/varnish
Comment out DAEMON_OPTS use the following instead:
<span class="nv">DAEMON_OPTS</span><span class="o">=</span>”-a :80 -f /etc/varnish/default.vcl -s file,/var/lib/varnish/<span class="nv">$INSTANCE</span>/varnish_storage.bin,1G”
service varnish restart
</code></pre>
</div>
</div>
</article>
</div>
</main>
<footer class="site-footer">
<div class="wrapper">
<h2 class="footer-heading">Kris Forbes Blog</h2>
<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>Kris Forbes Blog</li>
</ul>
</div>
<div class="footer-col footer-col-2">
<ul class="social-media-list">
<li>
<a href="https://github.com/krisf"><span class="icon icon--github"><svg viewBox="0 0 16 16"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
</span><span class="username">krisf</span></a>
</li>
<li>
<a href="https://twitter.com/forbes_kris"><span class="icon icon--twitter"><svg viewBox="0 0 16 16"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
</span><span class="username">forbes_kris</span></a>
</li>
</ul>
</div>
<div class="footer-col footer-col-3">
<p>Kris Forbes - Personal blog covering experiences with tech such as Docker, Azure, OVH, Linux, Windows, etc.</p>
</div>
</div>
</div>
</footer>
</body>
</html>