<!DOCTYPE html>
<html lang="en-us">
<head>
<title>How to hurricane-proof a Web server | Ars Technica</title>
    <script type="text/javascript">
    ars = {"ASSETS":"https:\/\/cdn.arstechnica.net\/wp-content\/themes\/ars\/assets","HOME_URL":"https:\/\/arstechnica.com","LOGIN_URL":"https:\/\/arstechnica.com\/services\/login-desktop.html?v=1","CIVIS":"\/civis","THEME":"light","VIEW":"grid","MOBILE":false,"SUBSCRIBER":false,"PLUS_PLUS":false,"LOGGED":false,"ENV":"production","AD":{"kw":["section_information-technology","discipline","information-technology-3","the-web","series","hurricane-season-2017","hardware","cloud","computing","programming","security","int","contains-prof"],"zone":"int","queue":[]},"TOTAL":85938,"UNREAD":0,"RECENT":[1261975,1261869,1261721,1261853,1261833,1261791,1261759,1261757,1261605,1261631,1261649,1261619,1261533,1261319,1261529,1261463,1260469,1261467,1261459,1259003,1261417,1261387,1261143,1259713,1261105],"LOGINS":true,"CROSS":false,"PARSELY":"arstechnica.com","COMMENTS":false,"HOMEPAGE":false,"SITE":1,"READY":[],"SHOW_ADS":true,"IMG_PROXY":"https:\/\/cdn.arstechnica.net\/i\/","CATEGORY":"information-technology","PAGETITLE":"","ZEN_MODE":false};
  </script>

  <link rel="stylesheet" type="text/css" media="all" href="https://cdn.arstechnica.net/wp-content/themes/ars/assets/css/main-9af2019d7a.css" />
      <link rel="alternate" type="application/rss+xml" href="http://feeds.arstechnica.com/arstechnica/index/" />
  <link rel="shortcut icon" href="https://cdn.arstechnica.net/favicon.ico" />
  <link rel="icon" type="image/x-icon" href="https://cdn.arstechnica.net/favicon.ico" />
  <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.arstechnica.net/wp-content/themes/ars/assets/img/ars-ios-icon-d9a45f558c.png" />
  <link rel="icon" sizes="192x192" href="https://cdn.arstechnica.net/wp-content/themes/ars/assets/img/material-ars-db41652381.png" />

    <meta name="application-name" content="Ars Technica"/>
  <meta name="msapplication-starturl" content="http://arstechnica.com/"/>
  <meta name="msapplication-tooltip" content="Ars Technica: Serving the technologist for 1.2 decades"/>
  <meta name="msapplication-task" content="name=News;action-uri=http://arstechnica.com/;icon-uri=https://cdn.arstechnica.net/favicon.ico"/>
  <meta name="msapplication-task" content="name=Features;action-uri=http://arstechnica.com/features/;icon-uri=https://cdn.arstechnica.net/ie-jump-menu/jump-features.ico"/>
  <meta name="msapplication-task" content="name=OpenForum;action-uri=http://arstechnica.com/civis/;icon-uri=https://cdn.arstechnica.net/ie-jump-menu/jump-forum.ico"/>
  <meta name="msapplication-task" content="name=Subscribe;action-uri=http://arstechnica.com/subscriptions/;icon-uri=https://cdn.arstechnica.net/ie-jump-menu/jump-subscribe.ico"/>


  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="advertising" content="ask" />
  <meta property="fb:admins" content="592156917" />
  <meta property="fb:admins" content="108943" />
    <meta property="fb:pages" content="19374573752" />
  
  <meta name="format-detection" content="telephone=no" />
  <meta name="theme-color" content="#000000" />

  
  <meta name="viewport" content="width=device-width,initial-scale=1">

    <!-- cache miss 116:single/meta:93c11ed69e12b6ec628c426d7d65b2b7 -->
<meta name='parsely-page' content='{"title":"How to hurricane-proof a Web server","link":"https:\/\/arstechnica.com\/information-technology\/2017\/09\/how-to-hurricane-proof-a-web-server\/","type":"post","author":"Lee Hutchinson","post_id":1157809,"pub_date":"2017-09-07T11:30:26Z","section":"Biz &amp; IT","tags":["cloudflare","hosting","mariadb","mysql","nginx","self-hosting","varnish","varnish-cache","web-served-2","web-server","wordpress","type: feature"],"image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2017\/09\/hurricane-server-high-duck-150x150.jpg"}'>
<meta name='parsely-metadata' content='{"type":"feature","title":"How to hurricane-proof a Web server","post_id":1157809,"lower_deck":"Millions relied on Space City Weather\u2014here\u2019s the configuration that weathered Hurricane Harvey.","image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2017\/09\/hurricane-server-high-duck-150x150.jpg","listing_image_url":"https:\/\/cdn.arstechnica.net\/wp-content\/uploads\/2017\/09\/hurricane-server-high-duck-360x200.jpg"}'>

<link rel="canonical" href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/" />

<link rel="amphtml" href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?amp=1">

<link rel="shorturl" href="https://arstechnica.com/?p=1157809" />

<meta name="description" content="Millions relied on Space City Weather—here’s the configuration that weathered Hurricane Harvey." />

<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/">
<meta name="twitter:title" content="How to hurricane-proof a Web server">
<meta name="twitter:description" content="Millions relied on Space City Weather—here’s the configuration that weathered Hurricane Harvey.">

<meta name="twitter:site" content="@arstechnica">
<meta name="twitter:domain" content="arstechnica.com">

<meta property="og:site_name" content="Ars Technica" />

<meta name="twitter:image:src" content="https://cdn.arstechnica.net/wp-content/uploads/2017/09/hurricane-server-high-duck-760x380.jpg">
<meta name="twitter:image:width" content="760">
<meta name="twitter:image:height" content="380">

<meta name="twitter:creator" content="@Lee_Ars">

<meta property="og:url" content="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/" />
<meta property="og:title" content="How to hurricane-proof a Web server" />
<meta property="og:image" content="https://cdn.arstechnica.net/wp-content/uploads/2017/09/hurricane-server-high-duck-760x380.jpg" />
<meta property="og:description" content="Millions relied on Space City Weather—here’s the configuration that weathered Hurricane Harvey." />
<meta property="og:type" content="article" />

<script type="text/javascript">var digitalData = {"contributor":"Lee Hutchinson","contentID":1157809,"contentLength":6986,"display":"How to hurricane-proof a Web server","pageType":"feature","keywords":{"display":"cloudflare|hosting|mariadb|mysql|nginx|self-hosting|varnish|varnish-cache|web-served-2|web-server|wordpress|type: feature"},"canonical":"https:\/\/arstechnica.com\/information-technology\/2017\/09\/how-to-hurricane-proof-a-web-server\/","pageValue":1,"publishDate":"2017-09-07T11:30:26+00:00","section":"Biz &amp; IT"};</script>
  <!-- cache hit 116:single/header:93c11ed69e12b6ec628c426d7d65b2b7 -->
        
  
  
  
<script>
!function(b,c,d){"use strict";var e=b.location.hostname,f=""!==b.location.port?":"+b.location.port:"",g=location.search.match(/CNS_SB=([^&\s]+)[&\s]?/)||[],h=e+f+"/cns"+(g.length?"-sandbox/"+g[1]:"")+"/services.min.js",i=d||"//"+h;b.cns=b.cns||{async:function(b,c){this.queue[b]||(this.queue[b]=[]),"function"==typeof c&&this.queue[b].push(c)},queue:{},embed:{backup:d}};var j;j=c.createElement("script"),j.async=!0,j.src=i,c.head.appendChild(j)}(window,document,'https://cdn.arstechnica.net/cns/services.min.js?1518907500');
</script>

  </head>
<body class="post-template-default single single-post postid-1157809 single-format-standard grid-view light blog-us">

  	<aside class="ad ad_crown" id="ad_crown_top"></aside>

<div class="site-wrapper">
  <header class="site-header">

    <div class="header-left">
      <a href="https://arstechnica.com" id="header-logo" title="Ars Technica Homepage">
      <span class="icon icon-logo-ars-us"></span>
  </a>
    </div>

    <div class="header-right">
      <nav id="header-nav-primary">
        <ul>
          
  <li><a class="active" href="/information-technology/">Biz &amp; IT</a></li>
  <li><a class="" href="/gadgets/">Tech</a></li>
  <li><a class="" href="/science/">Science</a></li>
  <li><a class="" href="/tech-policy/">Policy</a></li>
  <li><a class="" href="/cars/">Cars</a></li>
  <li><a class="" href="/gaming/">Gaming &amp; Culture</a></li>
  <li><a href="/civis/">Forums</a></li>        </ul>
      </nav>
              <a href="/store/product/subscriptions/" class="header-highlight-link">Subscriptions</a>
            <div class="dropdown" id="header-search">
        <a href="/search/" class="dropdown-toggle">
          <span class="icon icon-search-mag-glass"></span>
        </a>
        <div class="dropdown-content">
          <form action="/search/" method="GET" id="search_form">
  <input type="hidden" name="ie" value="UTF-8">
  <input type="text" name="q" id="hdr_search_input" value="" placeholder="Search..." tabindex="10">
</form>
<a class="nav-search-close">Close</a>
        </div>
      </div>
      <div class="dropdown dropdown-mega" id="header-burger">
        <a href="#site-footer" class="dropdown-toggle">
          <span></span>
        </a>
        <div class="dropdown-content">
          <section class="burger-navigate">
  <h3>
    <span class="icon icon-half-target"></span>
    Navigate
  </h3>
  <ul>
    <li><a href="http://video.arstechnica.com/">Videos</a></li>
    <li><a href="/features/">Features</a></li>
    <li><a href="/reviews/">Reviews</a></li>
    <li><a href="/tag/ars-approved/">Ars Approved</a></li>
  </ul>

  <ul>
    <li><a href="/rss-feeds/">RSS Feeds</a></li>
    <li><a href="/?view=mobile">Mobile Site</a></li>
  </ul>

  <ul>
    <li><a href="/about-us/">About Ars</a></li>
    <li><a href="/staff-directory/">Staff Directory</a></li>
    <li><a href="/contact-us/">Contact Us</a></li>
  </ul>

  <ul>
    <li><a href="/advertise-with-us/">Advertise with Ars</a></li>
    <li><a href="/reprints/">Reprints</a></li>
  </ul>
</section>

<section class="burger-filter">
  <h3>
    <span class="icon icon-half-mag"></span>
    Filter by topic
  </h3>
  <ul id="burger-nav-primary">
    
  <li><a class="active" href="/information-technology/">Biz &amp; IT</a></li>
  <li><a class="" href="/gadgets/">Tech</a></li>
  <li><a class="" href="/science/">Science</a></li>
  <li><a class="" href="/tech-policy/">Policy</a></li>
  <li><a class="" href="/cars/">Cars</a></li>
  <li><a class="" href="/gaming/">Gaming &amp; Culture</a></li>
  <li><a href="/civis/">Forums</a></li>  </ul>
</section>

<section class="burger-settings">
  <h3>
    <span class="icon icon-half-gear"></span>
    Settings
  </h3>
  <div>
    <div class="burger-layout">
      
<p>Front page layout</p>
<div class="burger-layout-grid">
  <a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?view=grid" class="">
    <span class="icon icon-grid"></span><br>
    Grid
    <div class="faux-radio active"></div>
      </a>
</div>

<div class="burger-layout-list">
  <a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?view=archive" class="">
    <span class="icon icon-list"></span><br>
    List
    <div class="faux-radio "></div>
      </a>
</div>


  <div class="burger-layout-wide" style="display: none;">
    <a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?view=full" class="">
      <span class="icon icon-wide"></span><br>
      Wide
      <div class="faux-radio "></div>
          </a>
  </div>
    </div>
    <div class="burger-theme">
      
<p>Site theme</p>
<div class="burger-theme-light">
  <a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?theme=light" class="">
    <span><span>Black on white</span></span>
    <div class="faux-radio active"></div>
      </a>
</div>

<div class="burger-theme-dark">
  <a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?theme=dark" class="">
    <span><span>White on black</span></span>
    <div class="faux-radio "></div>
      </a>
</div>
    </div>
  </div>
</section>
        </div>
      </div>
      <div class="dropdown dropdown-mega" id="header-account">
      <a href="https://arstechnica.com/civis/ucp.php?mode=login&return_to=%2Finformation-technology%2F2017%2F09%2Fhow-to-hurricane-proof-a-web-server%2F" class="dropdown-toggle">
      Sign in
      <span class="icon dropdown-indicator icon-drop-indicator"></span>
    </a>
    <div class="dropdown-content">
    <section class="profile-activity">
      <h3>
        <span class="icon icon-half-bubble-up"></span>
        Comment activity
      </h3>
              <p>Sign up or login to join the discussions!</p>
          </section>

    <section class="profile-settings">
              <form id="login-form" action="https://arstechnica.com/civis/ucp.php?mode=login" method="post">
  <input type="text" name="username" id="username" placeholder="Username or Email" />
  <input type="password" name="password" id="password"  placeholder="Password" />
  <input type="submit" value="Submit" class="button button-orange button-wide" name="login" />
  <label id="remember-label">
    <input type="checkbox" name="autologin" id="autologin" />
  Stay logged in</label> <span>|</span> <a href="/civis/ucp.php?mode=sendpassword">Having trouble?</a>

  <input type="hidden" name="redirect" value="./ucp.php?mode=login&amp;autoredirect=1&amp;return_to=%2Finformation-technology%2F2017%2F09%2Fhow-to-hurricane-proof-a-web-server%2F" />
  <input type="hidden" name="return_to" value="/information-technology/2017/09/how-to-hurricane-proof-a-web-server/" />
</form>
<div class="register-account">
  <span>Sign up to comment and more</span>
  <a href="https://arstechnica.com/civis/ucp.php?mode=register" class="signup-btn button button-wide">Sign up</a>
</div>
      
    </section>
  </div>
</div>
    </div>
  </header>

        
  <div class="content-wrapper">

<script type="text/javascript">
  ars.ARTICLE = {"url":"https:\/\/arstechnica.com\/information-technology\/2017\/09\/how-to-hurricane-proof-a-web-server\/","short_url":"https:\/\/arstechnica.com\/?p=1157809","title":"How to hurricane-proof a Web server","author":10243,"id":1157809,"topic":1398335,"pages":3,"current_page":1,"superscroll":true,"promoted":[33935477,33952991],"single_page":false,"comments":65,"fullwidth":false,"slug":"how-to-hurricane-proof-a-web-server","arsStaff":{"104481":{"name":"Aaron Zimmerman","title":"Copyeditor","staff":true},"520255":{"name":"Annalee Newitz","title":"Senior Tech Culture Editor","staff":true},"509873":{"name":"Beth Mole","title":"Health Reporter","staff":true},"335607":{"name":"Cyrus Farivar","title":"Senior Tech Policy Reporter","staff":true},"329388":{"name":"Dan Goodin","title":"Security Editor","staff":true},"512413":{"name":"Eric Berger","title":"Senior Space Editor","staff":true},"55943":{"name":"Jacqui Cheng","title":"Editor at Large","staff":false},"52979":{"name":"John Timmer","title":"Senior Science Editor","staff":true},"312082":{"name":"Jon Brodkin","title":"Senior IT Reporter","staff":true},"14317":{"name":"Jonathan M. Gitlin","title":"Automotive Editor","staff":true},"338374":{"name":"Kathleen DeVries","title":"","staff":false},"440179":{"name":"Kerry Staurseth","title":"Associate Copyeditor","staff":true},"328283":{"name":"Kyle Orland","title":"Senior Gaming Editor","staff":true},"331051":{"name":"Megan Geuss","title":"Staff editor","staff":true},"1169":{"name":"Peter Bright","title":"Technology Editor","staff":true},"391727":{"name":"Ron Amadeo","title":"Reviews Editor","staff":true},"348927":{"name":"Sam Machkovech","title":"Tech Culture Editor","staff":true},"588289":{"name":"Samuel Axon","title":"Senior Reviews Editor","staff":true},"314884":{"name":"Sean Gallagher","title":"IT Editor","staff":true},"495539":{"name":"S.I. Newhouse","title":"","staff":false},"173910":{"name":"Timothy B. Lee","title":"Senior tech policy reporter","staff":true},"505571":{"name":"Valentina Palladino","title":"Associate Reviewer","staff":true},"369205":{"name":"Akshat Rathi","title":"Associate Writer","staff":false},"325040":{"name":"Allie Wilkinson","title":"","staff":false},"332715":{"name":"Andrew Cunningham","title":"Reviews Editor Emeritus","staff":false},"505703":{"name":"Cassandra Khaw","title":"Contributing Reporter ","staff":false},"453791":{"name":"Cathleen O'Grady","title":"Contributing science reporter","staff":true},"102179":{"name":"Chris Lee","title":"Associate writer","staff":true},"332078":{"name":"Curt Hopkins","title":"Associate Writer","staff":false},"6978":{"name":"Dave Girard","title":"Associate Writer","staff":false},"332434":{"name":"Dave Klingler","title":"Associate Writer","staff":false},"129513":{"name":"David Kanter","title":"","staff":false},"254631":{"name":"Diana Gitig","title":"Associate Writer","staff":false},"52335":{"name":"edgar","title":"","staff":false},"172426":{"name":"egosumliber","title":"","staff":false},"480857":{"name":"Glyn Moody","title":"Contributing Policy Editor","staff":false},"46707":{"name":"Iljitsch van Beijnum","title":"Associate Writer","staff":false},"332336":{"name":"James Holloway","title":"Associate Writer","staff":false},"217531":{"name":"Jeremy Jacquot","title":"","staff":false},"15365":{"name":"Jeremy Reimer","title":"Senior Niche Technology Historian","staff":false},"4086":{"name":"Jim Salter","title":"Contributor","staff":false},"8996":{"name":"John Siracusa","title":"Associate writer","staff":false},"375641":{"name":"Kate Prengaman","title":"","staff":false},"251816":{"name":"Kate Shaw Yoshida","title":"Associate Writer","staff":false},"133411":{"name":"Knadles","title":"","staff":false},"37509":{"name":"Matt Ford","title":"Associate writer","staff":false},"300066":{"name":"Matthew Braga","title":"Associate writer","staff":true},"323078":{"name":"Matthew Francis","title":"Associate Writer","staff":false},"173191":{"name":"Matthew Lasar","title":"Associate writer","staff":true},"336278":{"name":"Melissae Fellet","title":"Associate Writer","staff":false},"1991":{"name":"Ohrmazd","title":"","staff":false},"445261":{"name":"Robert Lemos","title":"","staff":false},"66380":{"name":"Ryan Paul","title":"Ars Editor Emeritus ","staff":false},"17480":{"name":"SBD","title":"","staff":false},"294205":{"name":"Scott K. Johnson","title":"Associate Writer","staff":true},"451673":{"name":"Shalini Saxena","title":"Science Writer","staff":false},"163185":{"name":"Tim De Chant","title":"","staff":false},"181333":{"name":"vansau","title":"","staff":false},"445789":{"name":"Xaq Rzetelny","title":"","staff":false},"6021":{"name":"Yaz","title":"","staff":false},"417641":{"name":"Yogi Patel","title":"","staff":false},"513703":{"name":"Forrest Marvez","title":"Developer","staff":false},"316010":{"name":"Jason Marlin","title":"Technical Director","staff":true},"998":{"name":"Ken Fisher","title":"Editor in Chief","staff":true},"671621":{"name":"Steven Klein","title":"Developer","staff":false},"1002":{"name":"Aurich Lawson","title":"Creative Director","staff":true},"25862":{"name":"Eric Bangeman","title":"Managing Editor","staff":true},"10243":{"name":"Lee Hutchinson","title":"Senior Technology Editor","staff":true},"182268":{"name":"Nate Anderson","title":"Deputy Editor","staff":true},"330533":{"name":"Nathan Mattise","title":"Features Editor","staff":true},"547195":{"name":"Tom Mendelsohn","title":"Contributing Sub Editor","staff":true},"513593":{"name":"Andrii Degeler","title":"Contributing reporter","staff":true},"549735":{"name":"Jennifer Baker","title":"Contributing Europe Correspondent","staff":true},"566299":{"name":"J.M. Porup","title":"Contributing Security Reporter","staff":true}}};
</script>

<article itemscope itemtype="http://schema.org/NewsArticle" class="article-single standalone intro-standard ">

  <div class="column-wrapper">

    <div class="left-column">
      <header class="article-header">
        <h4 class="post-upperdek">
      Adventures in server babysitting    &mdash;
</h4>
        <h1 itemprop="headline">How to hurricane-proof a Web server</h1>
        <h2 itemprop="description">Millions relied on Space City Weather—here’s the configuration that weathered Hurricane Harvey.</h2>
        <section class="post-meta">

  
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/lee-hutchinson/" rel="author"><span itemprop="name">Lee Hutchinson</span></a>
    -  <time class="date" data-time="1504783826" datetime="2017-09-07T11:30:26+00:00">Sep 7, 2017 11:30 am UTC</time>
  </p>


  
</section>      </header>

      <section class="article-guts">
        <div itemprop="articleBody" class="article-content post-page">
          
<figure class="intro-image intro-left">
  <img src="https://cdn.arstechnica.net/wp-content/uploads/2017/09/hurricane-server-high-duck-800x450.jpg"/>
      <figcaption class="caption"><div class="caption-text"><a href="https://cdn.arstechnica.net/wp-content/uploads/2017/09/hurricane-server-high-duck.jpg" class="enlarge-link" data-height="450" data-width="800">Enlarge</a> <span class="sep">/</span> We could all use a little levity in the IT world (especially if you lived in the path of Hurricane Harvey).</div><div class="caption-credit">Aurich / Getty</div></figcaption>  </figure>

  <aside id="social-left">
    <a title="43 posters participating, including story author." class="comment-count icon-comment-bubble-down" href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?comments=1">
      <span class="comment-count-before">reader comments</span>
    <span class="comment-count-number">65</span>
  </a>  

<div class="share-links">
  <span>Share this story</span>
  <a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-facebook" title="Share on Facebook"></a>
  <a href="https://twitter.com/share?text=How+to+hurricane-proof+a+Web+server&url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-twitter" title="Share on Twitter"></a>
  <a href="https://www.reddit.com/submit?url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809&title=How+to+hurricane-proof+a+Web+server" target="_blank" class="social-icon share-reddit" title="Share on Reddit"></a>
  <a href="https://plus.google.com/share?url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-gplus" title="Share on Google+"></a>
</div>
      </aside>




<!-- cache hit 116:single/related:93c11ed69e12b6ec628c426d7d65b2b7 --><aside class="related-stories right">
  <h2 class="subheading notched">Hurricane Season 2017</h2>
	<ul>
	    <li><a href="https://arstechnica.com/science/2017/10/ophelia-became-a-major-hurricane-where-the-waters-are-usually-too-cold/">Ophelia became a major hurricane where no storm had before</a></li>
      <li><a href="https://arstechnica.com/science/2017/10/with-nate-the-last-nine-atlantic-storms-have-reached-hurricane-status/">Nate makes nine Atlantic hurricanes in a row—unprecedented in modern era</a></li>
      <li><a href="https://arstechnica.com/science/2017/10/after-the-busiest-month-on-record-the-atlantic-tropics-are-finally-quiet/">The Atlantic just finished its busiest hurricane month on record</a></li>
      <li><a href="https://arstechnica.com/science/2017/09/potentially-catastrophic-hurricane-maria-set-to-strike-puerto-rico/">“Potentially catastrophic” Hurricane Maria set to strike Puerto Rico</a></li>
      <li><a href="https://arstechnica.com/science/2017/09/irma-jose-and-maria-remind-us-why-september-is-hurricane-time/">Jose hanging on, Maria intensifying as the Atlantic tropics sizzle</a></li>
    </ul>
  <span class="read-more"><a href="https://arstechnica.com/series/hurricane-season-2017/">View more stories</a></span>
</aside>

<p>HOUSTON—I had enough to worry about as Hurricane Harvey plowed into the Texas Gulf Coast on the night of August 25 and delivered a category 4 punch to the nearby city of Rockport. But I simultaneously faced a different kind of storm: an unexpected surge of traffic hitting the <a href="https://spacecityweather.com/">Space City Weather</a> Web server. This was the first of what would turn into several very long and restless nights.</p>
<p>Space City Weather is a Houston-area weather blog and forecasting site run by my coworker <a href="https://arstechnica.com/author/ericberger/">Eric Berger</a> and his buddy Matt Lanza (along with contributing author Braniff Davis). A few months before Hurricane Harvey decided to crap all over us in Texas, after watching Eric and Matt struggle with Web hosting companies during previous high-traffic weather events, I offered to host SCW on my own private dedicated server (and not the one in my closet—a real server in a real data center). After all, I thought, the box was heavily underutilized with just my own silly stuff. I'd previously had some experience in self-hosting WordPress sites, and my usual hosting strategy ought to do just fine against SCW’s projected traffic. It’d be fun!</p>
<p>But that Friday evening, with <a href="https://www.pscp.tv/Jeff_Piotrowski/1zqKVRbYXWWKB">Harvey battering Rockport</a> and forecasters predicting doom and gloom for hundreds of miles of Texas coastline, SCW’s 24-hour page view counter zipped past the 800,000 mark and kept on going. The unique visitor number was north of 400,000 and climbing. The server was dishing out between 10 and 20 pages per second. The traffic storm had arrived.</p>
<aside class="pullbox sidebar story-sidebar right"><div class="story-sidebar-part"><a href="https://arstechnica.com/information-technology/2017/08/tropical-storm-harvey-takes-out-911-centers-cell-towers-and-cable-networks/" class="story-sidebar-part-img" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2017/08/getty-houston-flooding-360x200.jpg');"></a><div class="story-sidebar-part-content"><h3>Further Reading</h3><a href="https://arstechnica.com/information-technology/2017/08/tropical-storm-harvey-takes-out-911-centers-cell-towers-and-cable-networks/">Tropical Storm Harvey takes out 911 centers, cell towers, and cable networks</a></div></div></aside>
<p>It was the first—but not the last—time over the next several days that I’d stare at the rapidly ticking numbers and wonder if I’d forgotten something or screwed something up. The heavy realization that millions of people (<a href="https://www.poynter.org/news/houston-floods-independent-journalist-delivering-news-hundreds-thousands-people">literally</a>) were relying on Eric's and Matt's forecasting to make life-or-death decisions—and that if the site went down it would be my fault—made me feel sick. Was the site prepared? Were my configuration choices—many made months or years earlier for far different requirements—the right ones? Did the server have enough RAM? Would the load be more than it could handle?</p>
<figure class="video"><div class="wrapper" style="padding-bottom: 56.122448979592%;"><iframe style="display:block" type="text/html" width="980" height="550" src="https://www.youtube.com/embed/dW54QnHyFNI?start=0&wmode=transparent" frameborder="0" allowfullscreen></iframe></div><figcaption class="caption"><div class="caption-text">A time-lapse video showing Buffalo Bayou—one of the main flood control bayous in downtown Houston—rising precipitously during the course of the storm. The night of August 27 was particularly stressful for most Houstonians.</div></figcaption></figure>
<h2>Wild blue yonder</h2>
<p>On a normal day with calm skies, Space City Weather sees maybe 5,000 visitors who generate maybe 10,000 page views, max. If there’s a bad thunderstorm on the horizon, the site might see twice that many views as folks try to check in and get weather updates.</p>
<aside class="pullbox sidebar right" style="width: 200px"><h2 class="subheading">Views vs. visitors</h2>In this piece, you’ll see me refer to traffic in terms of both “views” or “page views” and “visits” or “uniques.” Page views are just that—a raw count of the total number of pages served. It can be a rough metric for how much work your site did—how many pages it dished out. “Uniques,” on the other hand, is how many <em>people</em> visited the site. One unique visitor can be the cause of multiple page views. Page views tell you how much work your server did, and uniques tell you how many viewers you have.</aside>
<p>Hurricane Harvey managed to bring in traffic at about 100x the normal rate for several days, peaking at 1.1 million views on Sunday, August 27 (that's not a cumulative number—that's just for that one day). Every day between August 24 and August 29, the site had at least 300,000 views, and many had far more. Between Eric’s first <a href="https://spacecityweather.com/texas-faces-a-tropical-threat-later-this-week-heavy-rains-possible/">Harvey-related post</a> on August 22 and the time the whole mess was finally over a week later, Space City Weather had served 4.3 million pages to 2.1 million uniques—and the only downtime was when I called the hosting company on August 25 to have the server re-cabled to a gigabit switch port so we’d have more burst capacity.</p>
<p>Some of the site’s staying power is due to simplicity: SCW is a vanilla self-hosted WordPress site without much customization. There’s nothing terribly special about the configuration—the only bits of custom code are <a href="https://codex.wordpress.org/Customizing_the_Login_Form#Make_a_Custom_Login_Page">a few lines of PHP</a> I copied off of the WordPress Codex site in order to display the site’s logo on the WordPress login screen, and another bit <a href="http://techantidote.com/how-to-remove-query-strings-from-static-resources-in-wordpress/">strips query strings from some static resources</a> to help the cache hit rate. The site runs an <a href="https://www.silocreativo.com/en/wordpress/jennifer-clean-responsive-wordpress-blog-theme/">off-the-shelf theme</a>. Including the two bits of custom code, the site uses a total of eight plug-ins, rather than the dozens that many WP sites saddle themselves with.</p>
<p>I’d like to be an immodest rock star sysadmin and claim that I customized my hosting specifically around some prescient guess at SCW's worst-case traffic nightmare scenario, but that would be a lie. A lot of what kept SCW up was a basic philosophy of “cache the crap out of everything possible in case traffic arrives unexpectedly.” The SCW team usually posts no more than twice a day, and the site uses WordPress’ integrated comment system. The site is therefore aptly suited to take advantage of as many levels of caching as possible, and my setup tries to cram cache in everywhere.</p>
<p>Any sysadmin who has spent a bit of time deploying Web apps in a non-simple environment can tell you that configuring cache properly can take years off your life; you can burn a ridiculous amount of time tracking down edge cases and handling the exclusions. Cache at multiple levels in your stack makes for annoyances and extra configuration changes when setting up new sites, and it can greatly complicate deployment troubleshooting.</p>
<p>But in this case, it’s what saved the site from drowning in the traffic tidal wave.</p>
<figure class="image shortcode-img center large" style="width:640px"><a href="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scw-jetpack-stats-final-sept3.png" class="enlarge" data-height="353" data-width="1058" alt='SCW stats via WordPress.com&#039;s reporting tool, with the busiest day highlighted. This is what a traffic storm looks like.' ><img alt='SCW stats via WordPress.com&#039;s reporting tool, with the busiest day highlighted. This is what a traffic storm looks like.'  src="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scw-jetpack-stats-final-sept3-640x214.png" width="640" height="214" srcset="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scw-jetpack-stats-final-sept3.png 2x" alt='SCW stats via WordPress.com&#039;s reporting tool, with the busiest day highlighted. This is what a traffic storm looks like.' ></a><figcaption class="caption"><div class="caption-text"><a href="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scw-jetpack-stats-final-sept3.png" class="enlarge-link" data-height="353" data-width="1058">Enlarge</a> <span class="sep">/</span> SCW stats via WordPress.com's reporting tool, with the busiest day highlighted. This is what a traffic storm looks like.</div></figcaption></figure>
<h2>How to have a hurricane (server) party</h2>
<p>From a hosting perspective, engineering a site to handle SCW’s <em>normal</em> daily traffic load is easy—you could do it with a <a href="https://www.digitalocean.com/community/tutorials/how-to-use-the-wordpress-one-click-install-on-digitalocean">Digital Ocean droplet</a> or a free <a href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hosting-wordpress.html">Amazon AWS micro</a> instance. But building in capacity to serve a million views a day requires a different vision—you can’t just throw that much traffic at an AWS micro and have it live.</p>
<p><aside class="pullbox sidebar story-sidebar right"><div class="story-sidebar-part"><a href="https://arstechnica.com/gadgets/2012/11/how-to-set-up-a-safe-and-secure-web-server/" class="story-sidebar-part-img" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2012/11/secure-server-300x100.jpg');"></a><div class="story-sidebar-part-content"><h3>Further Reading</h3><a href="https://arstechnica.com/gadgets/2012/11/how-to-set-up-a-safe-and-secure-web-server/">How to set up a safe and secure Web server</a></div></div></aside>Fortunately, when I offered to take over SCW’s hosting in July, I didn’t have to worry very much about the base requirements. A few years ago, I wrote a series for Ars called <a href="https://arstechnica.com/series/web-served/">Web Served</a>, which focused on walking readers through some basic (and some not-so-basic) Web server setup tasks. The guide is sorely out of date, and I’m planning on updating it. So to facilitate that update and give me a big sandbox to play in, late in 2016 I acquired a dedicated server at <a href="https://www.liquidweb.com/">Liquid Web</a> in Michigan and migrated my little closet data center onto it.</p>
<p>The box was happy serving my <a href="https://www.bigdinosaur.org/">personal domain</a> and a few other things—namely the <a href="https://www.chroniclesofgeorge.com/">Chronicles of George</a> and <a href="https://fangs.ink/">Fangs</a>, an <em>Elite Dangerous</em> webcomic—but it was grossly underutilized and essentially sitting idle. Except for the occasional Reddit hug when the Chronicles of George got mentioned in the <a href="https://www.reddit.com/r/talesfromtechsupport/">Tales from Tech Support</a> subreddit, traffic was generally no more than a few hundred page views per day across all sites.</p>
<p>Still, as someone who suffers from an irresistible urge to tinker, I’d spent the past several years screwing around with and blogging about <a href="https://blog.bigdinosaur.org/finally-moving-to-letsencrypt-with-haproxy-varnish-and-nginx/">adventures in Web hosting</a>. In order to satisfy my own curiosity on how stuff works, I’d managed to cobble together a reasonably Reddit-proof Web stack—again, not through requirements-based planning, but just through the urge to have neat stuff to play with. Through luck or chance, this stack ended up being just the thing to soak up hurricane traffic.</p>
<p>By the time Hurricane Harvey started making life difficult, here’s what Space City Weather was running on, sharing server space with my other sites:</p>
<figure class="image shortcode-img center large" style="width:640px"><a href="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scwdiagram.png" class="enlarge" data-height="720" data-width="1280" alt='The software stack behind Space City Weather (as well as everything else on the &lt;a href=&quot;https://www.bigdinosaur.org&quot;&gt;BigDinosaur.org&lt;/a&gt; Web server.)' ><img alt='The software stack behind Space City Weather (as well as everything else on the &lt;a href=&quot;https://www.bigdinosaur.org&quot;&gt;BigDinosaur.org&lt;/a&gt; Web server.)'  src="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scwdiagram-640x360.png" width="640" height="360" srcset="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scwdiagram-1280x720.png 2x" alt='The software stack behind Space City Weather (as well as everything else on the &lt;a href=&quot;https://www.bigdinosaur.org&quot;&gt;BigDinosaur.org&lt;/a&gt; Web server.)' ></a><figcaption class="caption"><div class="caption-text"><a href="https://cdn.arstechnica.net/wp-content/uploads/2017/09/scwdiagram.png" class="enlarge-link" data-height="720" data-width="1280">Enlarge</a> <span class="sep">/</span> The software stack behind Space City Weather (as well as everything else on the <a href="https://www.bigdinosaur.org">BigDinosaur.org</a> Web server.)</div><div class="caption-credit">Lee Hutchinson</div></figcaption></figure>
<p>Every layer here played a role in keeping the site up. If you’d rather just have the “tl;dr” version of how to sustain a lot of traffic on a single server, here it is:</p>
<ul>
<li>Dedicated hardware server—no shared hosting</li>
<li>Gigabit uplink to handle burst traffic</li>
<li>Varnish cache with lots of RAM</li>
<li>Plugin-light WordPress installation</li>
<li>Off-box stats via WordPress/Jetpack</li>
<li>Cloudflare as a CDN</li>
<li>No heavy dependencies (i.e., ad networks)</li>
</ul>
<p>Now, let’s get to the details.</p>

        </div>

        
                  <nav class="page-numbers">Page: <span class="numbers">1 <a href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/2/">2</a> <a href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/3/">3</a> <a href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/2/"><span class="next">Next <span class="arrow">&rarr;</span></span></a></span></nav>
        
      </section>
          </div>

    <div class="xrail">
      <div class="xrail-content">
                
        
                  <aside class="ad ad_xrail ad_xrail_top" id="ad_xrail_top"></aside>
          <aside class="ad_native" id="ad_xrail_native"></aside>
        
      </div>
    </div>

  </div>

  <div class="column-wrapper">
    <div class="left-column">
              <!-- cache hit 116:single/author:6870642f9cfb8ea6772d3db9d0c23858 --><section class="article-author">
      <a style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2016/05/l.hutchinson-1394.jpg');" class="author-photo" href="/author/lee-hutchinson"></a>
  
  <div class="author-bio">
    <section class="author-bio-top">
      <a href="/author/lee-hutchinson" class="author-name">Lee Hutchinson</a>
      Lee is the Senior Technology Editor at Ars and oversees gadget, automotive, IT, and culture content. He also knows stuff about enterprise storage, security, and manned space flight. Lee is based in Houston, TX.    </section>
    <section class="author-social">
              <strong>Email</strong> <a href="mailto:lee.hutchinson@arstechnica.com">lee.hutchinson@arstechnica.com</a>
                    <span class="slashes">//</span>
                    <strong>Twitter</strong> <a href="https://www.twitter.com/Lee_Ars" target="_blank">@Lee_Ars</a>
          </section>
    
  </div>

</section>
      
      <aside id="social-footer">
        <a title="43 posters participating, including story author." class="comment-count icon-comment-bubble-down" href="https://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?comments=1">
      <span class="comment-count-before">reader comments</span>
    <span class="comment-count-number">65</span>
  </a>  

<div class="share-links">
  <span>Share this story</span>
  <a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-facebook" title="Share on Facebook"></a>
  <a href="https://twitter.com/share?text=How+to+hurricane-proof+a+Web+server&url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-twitter" title="Share on Twitter"></a>
  <a href="https://www.reddit.com/submit?url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809&title=How+to+hurricane-proof+a+Web+server" target="_blank" class="social-icon share-reddit" title="Share on Reddit"></a>
  <a href="https://plus.google.com/share?url=https%3A%2F%2Farstechnica.com%2F%3Fpost_type%3Dpost%26p%3D1157809" target="_blank" class="social-icon share-gplus" title="Share on Google+"></a>
</div>
      </aside>
    </div>
    <div class="xrail">
    </div>
  </div>


  <div id="article-footer-wrap">
          <div class="row comments-row">
  <section id="comments-area">
    <a name="comments-bar"></a>
          <div id="comments-container"></div>
      <div id="comments-posting-container" class="thick-divide-bottom">
        <p id="reply">You must <a href="https://arstechnica.com/civis/ucp.php?mode=login&return_to/information-technology/2017/09/how-to-hurricane-proof-a-web-server/" class="vote_login">login or create an account</a> to comment.</p>
      </div>
      <section>
</div>
      <div class="prev-next-links">
  <a href="https://arstechnica.com/tech-policy/2017/09/1st-amendment-wins-in-self-proclaimed-e-mail-inventors-techdirt-libel-suit/" rel="prev"><span class="arrow">&larr;</span> Previous story</a>  <a href="https://arstechnica.com/cars/2017/09/jaguars-restored-this-old-e-type-with-an-electric-upgrade/" rel="next">Next story <span class="arrow">&rarr;</span></a></div>      <footer id="article-footer">
  <div id="recommendations-footer">
    <aside id="story-recommendations">
  <div class="heading-column">
    <h3>Related Stories</h3>
  </div>
  <div id="story-recs" class="rec-wrap"></div>
</aside>
        <aside id="sponsored-recommendations">
  <div class="heading-column">
    <h3>Sponsored Stories</h3>
    <a href="http://www.outbrain.com/what-is/default/en" target="_blank">Powered by <span class="icon outbrain-logo icon-logo-outbrain"></span></a>
  </div>
  <div id="outbrain-recs">
  </div>
</aside>
        <aside id="latest-stories">
  <div class="heading-column">
    <h3>Today on Ars</h3>
  </div>
  <div id="latest-recs" class="rec-wrap"></div>
</aside>
  </div>
</footer>
    
  </div>
</article>
  </div>

  <footer class="site-footer">
    <nav class="nav-footer">

	<section>
		<ul>
			<li><a href="/rss-feeds/">RSS Feeds</a></li>
			<li><a rel="nofollow" href="http://arstechnica.com/information-technology/2017/09/how-to-hurricane-proof-a-web-server/?view=mobile">View Mobile Site</a></li>
			<li><a href="/about-us/">About Us</a></li>
			<li><a href="/store/product/subscriptions/">Subscribe</a></li>
		</ul>
	</section>

	<section>
		<ul>
			<li><a href="/contact-us/">Contact Us</a></li>
			<li><a href="/staff-directory/">Staff</a></li>
			<li><a href="/advertise-with-us/">Advertise with us</a></li>
			<li><a href="/reprints/">Reprints</a></li>
		</ul>
	</section>

</nav>

<section class="footer-terms-logo">
	<div class="cn-logo">
		<a href="http://condenast.com/" class="icon icon-logo-cn-us" title="Visit Condé Nast"></a>
	</div>

	<div id="copyright-terms">
  CNMN Collection<br>
  WIRED Media Group<br>
  Use of this Site constitutes acceptance of our <a href="http://www.condenast.com/privacy-policy" target="_blank">User Agreement</a> (effective 1/2/14) and <a href="http://www.condenast.com/privacy-policy#privacypolicy">Privacy Policy</a> (effective 1/2/14), and <a href="/amendment-to-conde-nast-user-agreement-privacy-policy/">Ars Technica Addendum (effective 5/17/2012)</a>. View our <a href="/affiliate-link-policy/">Affiliate Link Policy</a>. <a href="http://www.condenast.com/privacy-policy#privacypolicy-california">Your California Privacy Rights</a>. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written <a href="https://www.condenast.com/reprints-permissions">permission of Condé Nast</a>.
</div>
</section>  </footer>
</div>

<script type="text/javascript" src="https://cdn.arstechnica.net/wp-content/themes/ars/assets/js/main-5b7030f0c8.js"></script>


<!-- cache hit 116:single/javascript-footer:93c11ed69e12b6ec628c426d7d65b2b7 -->
        



  <script type="text/javascript" src="https://cdn.arstechnica.net/wp-content/themes/ars/assets/js/ars-7309851ac7.ads.us.js"></script>
    <!-- Google Analytics start -->
	<script type="text/javascript">
	var _gaq = _gaq || [];
  _gaq.push(
    ['_setAccount', 'UA-31997-1'],
    ['_setCustomVar', 1, 'view', "grid"],
    ['_setCustomVar', 2, 'theme', "light"],
    ['_setCustomVar', 3, 'logged_in', "false"],
    ['_setCustomVar', 4, 'show_comments', "false"],
    ['_setCustomVar', 5, 'is_subscriber', "false"],
    ['_trackPageview']
  );
	(function() {
	  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	})();
	</script>
  <!-- Google Analytics end -->

  <!-- Parse.ly start -->
	<script type="text/javascript">
  (function(d) {
    var site = "arstechnica.com",
    b = d.body,
    e = d.createElement("div");
    e.innerHTML = '<span id="parsely-cfg" data-parsely-site="'+site+'"></span>';
    e.id = "parsely-root";
    e.style.display = "none";
    b.appendChild(e);
  })(document);

  (function(s, p, d) {
    var h=d.location.protocol, i=p+"-"+s,
    e=d.getElementById(i), r=d.getElementById(p+"-root"),
    u=h==="https:"?"d1z2jf7jlzjs58.cloudfront.net"
      :"static."+p+".com";
    if (e) return;
    e = d.createElement(s); e.id = i; e.async = true;
    e.src = h+"//"+u+"/p.js"; r.appendChild(e);
  })("script", "parsely", document);
	</script>
  <!-- Parse.ly end -->

  <!-- Adobe Tag Mgr. -->
  <script src="//assets.adobedtm.com/6372cf21ef88ee60bc2977a4898dcb5c7945a212/satelliteLib-56a425e07376b6977c987d46ef46ba636a6e2036.js"></script>

  <script type="text/javascript">_satellite.pageBottom();</script>




<script type="text/javascript" src="//s.skimresources.com/js/100098X1555750.skimlinks.js"></script>
</body>
</html>