utopia 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.codeclimate.yml +1 -0
- data/.travis.yml +3 -1
- data/Gemfile +2 -0
- data/README.md +2 -2
- data/Rakefile +19 -7
- data/docs/.nojekyll +0 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.apache.css +6 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.applescript.css +5 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.assembly.css +8 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash-script.css +6 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.bash.css +10 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.clang.css +3 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.css.css +14 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.diff.css +16 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.html.css +5 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ocaml.css +3 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.protobuf.css +2 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.python.css +6 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.ruby.css +2 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.brush.xml.css +18 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.core.css +62 -0
- data/docs/_components/jquery-syntax/base/jquery.syntax.editor.css +6 -0
- data/docs/_components/jquery-syntax/base/theme.js +1 -0
- data/docs/_components/jquery-syntax/bright/jquery.syntax.core.css +27 -0
- data/docs/_components/jquery-syntax/bright/theme.js +1 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.apache.js +41 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.applescript.js +57 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.assembly.js +37 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash-script.js +67 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.bash.js +33 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.basic.js +51 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.clang.js +89 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.csharp.js +47 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.css.js +80 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.diff.js +24 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.go.js +47 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.haskell.js +45 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.html.js +66 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.io.js +45 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.java.js +45 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.javascript.js +40 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.kai.js +29 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lisp.js +34 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.lua.js +44 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.nginx.js +31 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ocaml.js +73 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ooc.js +46 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.pascal.js +51 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.perl5.js +52 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php-script.js +48 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.php.js +15 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.plain.js +10 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.protobuf.js +43 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.python.js +44 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.ruby.js +77 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.scala.js +44 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.smalltalk.js +29 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.sql.js +31 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.super-collider.js +57 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.swift.js +55 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.trenni.js +35 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.xml.js +50 -0
- data/docs/_components/jquery-syntax/jquery.syntax.brush.yaml.js +29 -0
- data/docs/_components/jquery-syntax/jquery.syntax.cache.js +65 -0
- data/docs/_components/jquery-syntax/jquery.syntax.core.js +1098 -0
- data/docs/_components/jquery-syntax/jquery.syntax.editor.js +291 -0
- data/docs/_components/jquery-syntax/jquery.syntax.js +258 -0
- data/docs/_components/jquery-syntax/jquery.syntax.min.js +13 -0
- data/docs/_components/jquery-syntax/paper/jquery.syntax.core.css +31 -0
- data/docs/_components/jquery-syntax/paper/theme.js +1 -0
- data/docs/_components/jquery/core.js +482 -0
- data/docs/_components/jquery/jquery.js +10220 -0
- data/docs/_components/jquery/jquery.min.js +4 -0
- data/docs/_components/jquery/jquery.min.map +1 -0
- data/docs/_components/jquery/jquery.slim.js +8107 -0
- data/docs/_components/jquery/jquery.slim.min.js +4 -0
- data/docs/_components/jquery/jquery.slim.min.map +1 -0
- data/docs/_static/icon.png +0 -0
- data/docs/_static/site.css +205 -0
- data/docs/_static/utopia-background.svg +1 -0
- data/docs/_static/utopia.svg +1 -0
- data/docs/code/Utopia.html +511 -0
- data/docs/code/Utopia/Basename.html +654 -0
- data/docs/code/Utopia/Bootstrap.html +538 -0
- data/docs/code/Utopia/Command.html +207 -0
- data/docs/code/Utopia/Command/Environment.html +321 -0
- data/docs/code/Utopia/Command/Server.html +214 -0
- data/docs/code/Utopia/Command/Server/Create.html +222 -0
- data/docs/code/Utopia/Command/Server/Environment.html +236 -0
- data/docs/code/Utopia/Command/Server/Update.html +317 -0
- data/docs/code/Utopia/Command/Setup.html +145 -0
- data/docs/code/Utopia/Command/Setup/Server.html +298 -0
- data/docs/code/Utopia/Command/Setup/Site.html +180 -0
- data/docs/code/Utopia/Command/Site.html +279 -0
- data/docs/code/Utopia/Command/Site/Create.html +324 -0
- data/docs/code/Utopia/Command/Site/Update.html +407 -0
- data/docs/code/Utopia/Command/Top.html +279 -0
- data/docs/code/Utopia/Content.html +826 -0
- data/docs/code/Utopia/Content/Document.html +1818 -0
- data/docs/code/Utopia/Content/Document/State.html +1220 -0
- data/docs/code/Utopia/Content/Link.html +1286 -0
- data/docs/code/Utopia/Content/Links.html +841 -0
- data/docs/code/Utopia/Content/MarkupParser.html +881 -0
- data/docs/code/Utopia/Content/MarkupParser/ParsedTag.html +422 -0
- data/docs/code/Utopia/Content/MarkupParser/UnbalancedTagError.html +615 -0
- data/docs/code/Utopia/Content/Namespace.html +485 -0
- data/docs/code/Utopia/Content/Node.html +1188 -0
- data/docs/code/Utopia/Content/Node/Context.html +938 -0
- data/docs/code/Utopia/Content/Response.html +813 -0
- data/docs/code/Utopia/Content/SymbolicHash.html +419 -0
- data/docs/code/Utopia/Content/Tag.html +399 -0
- data/docs/code/Utopia/Content/Tags.html +136 -0
- data/docs/code/Utopia/Content/Tags/ContentTag.html +187 -0
- data/docs/code/Utopia/Content/Tags/DeferredTag.html +193 -0
- data/docs/code/Utopia/Content/Tags/Library.html +333 -0
- data/docs/code/Utopia/Content/Tags/NodeTag.html +193 -0
- data/docs/code/Utopia/Content/UnbalancedTagError.html +298 -0
- data/docs/code/Utopia/ContentLength.html +339 -0
- data/docs/code/Utopia/Controller.html +901 -0
- data/docs/code/Utopia/Controller/Actions.html +289 -0
- data/docs/code/Utopia/Controller/Actions/Action.html +978 -0
- data/docs/code/Utopia/Controller/Actions/ClassMethods.html +442 -0
- data/docs/code/Utopia/Controller/Base.html +1216 -0
- data/docs/code/Utopia/Controller/Respond.html +283 -0
- data/docs/code/Utopia/Controller/Respond/ClassMethods.html +236 -0
- data/docs/code/Utopia/Controller/Respond/Converter.html +256 -0
- data/docs/code/Utopia/Controller/Respond/Converter/Callback.html +484 -0
- data/docs/code/Utopia/Controller/Respond/Converter/ToJSON.html +375 -0
- data/docs/code/Utopia/Controller/Respond/Passthrough.html +291 -0
- data/docs/code/Utopia/Controller/Respond/Responder.html +529 -0
- data/docs/code/Utopia/Controller/Rewrite.html +290 -0
- data/docs/code/Utopia/Controller/Rewrite/ClassMethods.html +242 -0
- data/docs/code/Utopia/Controller/Rewrite/ExtractPrefixRule.html +364 -0
- data/docs/code/Utopia/Controller/Rewrite/Rewriter.html +464 -0
- data/docs/code/Utopia/Controller/Rewrite/Rule.html +209 -0
- data/docs/code/Utopia/Controller/Variables.html +550 -0
- data/docs/code/Utopia/Controllers.html +244 -0
- data/docs/code/Utopia/Exceptions.html +127 -0
- data/docs/code/Utopia/Exceptions/Handler.html +526 -0
- data/docs/code/Utopia/Exceptions/Mailer.html +476 -0
- data/docs/code/Utopia/Extensions.html +117 -0
- data/docs/code/Utopia/Extensions/ArraySplit.html +183 -0
- data/docs/code/Utopia/Extensions/DateTimeComparison.html +193 -0
- data/docs/code/Utopia/Extensions/TimeDateComparison.html +193 -0
- data/docs/code/Utopia/HTTP.html +244 -0
- data/docs/code/Utopia/HTTP/Status.html +415 -0
- data/docs/code/Utopia/Locale.html +606 -0
- data/docs/code/Utopia/Localization.html +1235 -0
- data/docs/code/Utopia/Localization/Wrapper.html +459 -0
- data/docs/code/Utopia/Logger.html +205 -0
- data/docs/code/Utopia/Logger/CompactFormatter.html +335 -0
- data/docs/code/Utopia/Path.html +3304 -0
- data/docs/code/Utopia/Path/Matcher.html +518 -0
- data/docs/code/Utopia/Path/Matcher/MatchData.html +475 -0
- data/docs/code/Utopia/Redirection.html +145 -0
- data/docs/code/Utopia/Redirection/ClientRedirect.html +717 -0
- data/docs/code/Utopia/Redirection/DirectoryIndex.html +298 -0
- data/docs/code/Utopia/Redirection/Errors.html +470 -0
- data/docs/code/Utopia/Redirection/Moved.html +312 -0
- data/docs/code/Utopia/Redirection/RequestFailure.html +226 -0
- data/docs/code/Utopia/Redirection/Rewrite.html +296 -0
- data/docs/code/Utopia/Session.html +883 -0
- data/docs/code/Utopia/Session/LazyHash.html +859 -0
- data/docs/code/Utopia/Setup.html +964 -0
- data/docs/code/Utopia/Static.html +690 -0
- data/docs/code/Utopia/Static/LocalFile.html +1098 -0
- data/docs/code/Utopia/Static/MimeTypeLoader.html +541 -0
- data/docs/code/Utopia/Static/MimeTypeLoader/ExpansionError.html +124 -0
- data/docs/code/Utopia/Tags.html +115 -0
- data/docs/code/Utopia/Tags/Environment.html +314 -0
- data/docs/code/Utopia/Tags/EnvironmentTag.html +314 -0
- data/docs/code/Utopia/Tags/Library.html +340 -0
- data/docs/code/_index.html +758 -0
- data/docs/code/class_list.html +51 -0
- data/docs/code/css/common.css +1 -0
- data/docs/code/css/full_list.css +58 -0
- data/docs/code/css/style.css +499 -0
- data/docs/code/file.README.html +169 -0
- data/docs/code/file_list.html +56 -0
- data/docs/code/frames.html +17 -0
- data/docs/code/index.html +169 -0
- data/docs/code/js/app.js +248 -0
- data/docs/code/js/full_list.js +216 -0
- data/docs/code/js/jquery.js +4 -0
- data/docs/code/materials/utopia.png +0 -0
- data/docs/code/materials/utopia.svg +1 -0
- data/docs/code/method_list.html +3443 -0
- data/docs/code/top-level-namespace.html +110 -0
- data/docs/index.html +92 -0
- data/docs/wiki.html +92 -0
- data/docs/wiki/bower-integration.html +74 -0
- data/docs/wiki/bower-integration/index.html +74 -0
- data/docs/wiki/development-environment-setup.html +60 -0
- data/docs/wiki/development-environment-setup/index.html +60 -0
- data/docs/wiki/edit.html +103 -0
- data/docs/wiki/faq/what-is-xnode.html +79 -0
- data/docs/wiki/faq/what-is-xnode/index.html +79 -0
- data/docs/wiki/middleware/content.html +64 -0
- data/docs/wiki/middleware/content/index.html +64 -0
- data/docs/wiki/middleware/controller.html +104 -0
- data/docs/wiki/middleware/controller/actions.html +117 -0
- data/docs/wiki/middleware/controller/actions/index.html +117 -0
- data/docs/wiki/middleware/controller/actions/rewrite/index.html +48 -0
- data/docs/wiki/middleware/controller/index.html +104 -0
- data/docs/wiki/middleware/controller/rewrite.html +111 -0
- data/docs/wiki/middleware/controller/rewrite/index.html +111 -0
- data/docs/wiki/middleware/localization.html +59 -0
- data/docs/wiki/middleware/localization/index.html +59 -0
- data/docs/wiki/middleware/redirection.html +61 -0
- data/docs/wiki/middleware/redirection/index.html +61 -0
- data/docs/wiki/middleware/session.html +71 -0
- data/docs/wiki/middleware/session/index.html +71 -0
- data/docs/wiki/middleware/static.html +57 -0
- data/docs/wiki/middleware/static/index.html +57 -0
- data/docs/wiki/server-setup.html +118 -0
- data/docs/wiki/server-setup/index.html +118 -0
- data/docs/wiki/testing.html +59 -0
- data/docs/wiki/testing/index.html +59 -0
- data/docs/wiki/updating-utopia.html +108 -0
- data/docs/wiki/updating-utopia/index.html +108 -0
- data/docs/wiki/your-first-page.html +80 -0
- data/docs/wiki/your-first-page/index.html +80 -0
- data/documentation/Guardfile +0 -12
- data/documentation/Rakefile +3 -0
- data/documentation/pages/_page.xnode +2 -0
- data/documentation/pages/wiki/content.md +1 -0
- data/documentation/pages/wiki/faq/what-is-xnode/content.md +37 -0
- data/documentation/pages/wiki/links.yaml +3 -1
- data/documentation/pages/wiki/server-setup/content.md +1 -1
- data/documentation/pages/wiki/show.xnode +2 -0
- data/documentation/pages/wiki/your-first-page/content.md +1 -1
- data/lib/utopia/command.rb +4 -4
- data/lib/utopia/command/environment.rb +73 -0
- data/lib/utopia/command/server.rb +19 -32
- data/lib/utopia/command/site.rb +26 -9
- data/lib/utopia/content/markup.rb +1 -1
- data/lib/utopia/setup.rb +49 -20
- data/lib/utopia/version.rb +1 -1
- data/setup/site/README.md +6 -7
- data/setup/site/Rakefile +3 -0
- data/setup/site/pages/_page.xnode +1 -1
- data/setup/site/public/_static/site.css +1 -1
- data/setup/site/tasks/bower.rake +3 -6
- data/setup/site/tasks/deploy.rake +1 -1
- data/setup/site/tasks/development.rake +1 -1
- data/setup/site/tasks/environment.rake +2 -2
- data/setup/site/tasks/static.rake +43 -0
- data/spec/utopia/command_spec.rb +170 -0
- data/spec/utopia/setup_spec.rb +20 -142
- metadata +225 -42
- data/documentation/public/_components/jquery-syntax/.sass-cache/040afc1428b286fb3c50151378b349a6149698d3/jquery.syntax.core.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.editor.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.fixed.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.inline.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.list.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.plain.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/098642d80a1682613dca2bba6fd0a3bc9fd2bf04/jquery.syntax.layout.table.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.core.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.fixed.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/10c58b30c53bf84f8360af8a864797092be26882/jquery.syntax.layout.inline.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/_layout.scssc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.apache.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.applescript.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.assembly.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash-script.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.bash.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.clang.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.css.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.diff.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.html.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ocaml.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.protobuf.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.python.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.ruby.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.brush.xml.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.core.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.editor.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.editor.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.fixed.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.list.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.plain.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/3c69ad94149e2a6d9f4ffda01814fee3947b1389/jquery.syntax.layout.table.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/8638ad407c5ea29f6547cf8ac6983da587354889/master.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.editor.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.fixed.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.inline.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/b7ab87e6269b4fe89f9475b7a260077391d3567b/jquery.syntax.layout.plain.sassc +0 -0
- data/documentation/public/_components/jquery-syntax/.sass-cache/e82f8cf4c8436da086a4506e01ef78755ebab1ce/master.scssc +0 -0
- data/lib/utopia/command/setup.rb +0 -78
@@ -0,0 +1,71 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Session - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="session.html">Session</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="session">Session</h1>
|
38
|
+
|
39
|
+
<p>The session management uses symmetric private key encryption to store data on the client and avoid tampering.</p>
|
40
|
+
|
41
|
+
<pre><code class="language-ruby">use Utopia::Session,
|
42
|
+
:expires_after => 3600,
|
43
|
+
:secret => '40 or more random characters for your secret key'
|
44
|
+
</code></pre>
|
45
|
+
|
46
|
+
<p>All session data is stored on the client, but it’s encrypted with a salt and the secret key. It would be hard for the client to decrypt the data without the secret.</p>
|
47
|
+
|
48
|
+
<h2 id="using-environmentyaml">Using <code>environment.yaml</code></h2>
|
49
|
+
|
50
|
+
<p>The session secret should not be shared or ideally, not stored in source code. This can be easily achieved using an environment variable, stored in <code>environment.yaml</code> on the production server:</p>
|
51
|
+
|
52
|
+
<pre><code class="language-ruby">use Utopia::Session,
|
53
|
+
:expires_after => 3600,
|
54
|
+
:secret => ENV['UTOPIA_SESSION_SECRET']
|
55
|
+
</code></pre>
|
56
|
+
|
57
|
+
<p>In development, the secret would be reset every time the server is restarted. To set a fixed secret on production, run the following:</p>
|
58
|
+
|
59
|
+
<pre><code class="language-bash">$ utopia server environment UTOPIA_SESSION_SECRET=$(head /dev/urandom | shasum | base64 | head -c 40)
|
60
|
+
</code></pre>
|
61
|
+
|
62
|
+
<p>This is done by default when using <code>utopia server create</code> and <code>utopia server update</code>.</p>
|
63
|
+
|
64
|
+
|
65
|
+
<footer>
|
66
|
+
Last Modified: 2017-02-13 16:30:17 +1300 —
|
67
|
+
</footer>
|
68
|
+
|
69
|
+
</div>
|
70
|
+
</body>
|
71
|
+
</html>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Session - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../../../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../../../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../../../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../../../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../../../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="../session.html">Session</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="session">Session</h1>
|
38
|
+
|
39
|
+
<p>The session management uses symmetric private key encryption to store data on the client and avoid tampering.</p>
|
40
|
+
|
41
|
+
<pre><code class="language-ruby">use Utopia::Session,
|
42
|
+
:expires_after => 3600,
|
43
|
+
:secret => '40 or more random characters for your secret key'
|
44
|
+
</code></pre>
|
45
|
+
|
46
|
+
<p>All session data is stored on the client, but it’s encrypted with a salt and the secret key. It would be hard for the client to decrypt the data without the secret.</p>
|
47
|
+
|
48
|
+
<h2 id="using-environmentyaml">Using <code>environment.yaml</code></h2>
|
49
|
+
|
50
|
+
<p>The session secret should not be shared or ideally, not stored in source code. This can be easily achieved using an environment variable, stored in <code>environment.yaml</code> on the production server:</p>
|
51
|
+
|
52
|
+
<pre><code class="language-ruby">use Utopia::Session,
|
53
|
+
:expires_after => 3600,
|
54
|
+
:secret => ENV['UTOPIA_SESSION_SECRET']
|
55
|
+
</code></pre>
|
56
|
+
|
57
|
+
<p>In development, the secret would be reset every time the server is restarted. To set a fixed secret on production, run the following:</p>
|
58
|
+
|
59
|
+
<pre><code class="language-bash">$ utopia server environment UTOPIA_SESSION_SECRET=$(head /dev/urandom | shasum | base64 | head -c 40)
|
60
|
+
</code></pre>
|
61
|
+
|
62
|
+
<p>This is done by default when using <code>utopia server create</code> and <code>utopia server update</code>.</p>
|
63
|
+
|
64
|
+
|
65
|
+
<footer>
|
66
|
+
Last Modified: 2017-02-13 16:30:17 +1300 —
|
67
|
+
</footer>
|
68
|
+
|
69
|
+
</div>
|
70
|
+
</body>
|
71
|
+
</html>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Static - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="static.html">Static</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="static">Static</h1>
|
38
|
+
|
39
|
+
<p>This middleware serves static files using the <code>mime-types</code> library. By default, it works with <code>Rack::Sendfile</code> and supports <code>ETag</code> based caching. Normally, you’d prefer to put static files into <code>public/_static</code> but it’s also acceptable to put static content into <code>pages/</code> if it makes sense.</p>
|
40
|
+
|
41
|
+
<pre><code class="language-ruby">use Utopia::Static,
|
42
|
+
# The root path to serve files from:
|
43
|
+
root: "path/to/root",
|
44
|
+
# The mime-types to recognize/serve:
|
45
|
+
types: [:default, :xiph],
|
46
|
+
# Cache-Control header for files:
|
47
|
+
cache_control: 'public, max-age=7200'
|
48
|
+
</code></pre>
|
49
|
+
|
50
|
+
|
51
|
+
<footer>
|
52
|
+
Last Modified: 2016-12-13 12:36:48 +1300 —
|
53
|
+
</footer>
|
54
|
+
|
55
|
+
</div>
|
56
|
+
</body>
|
57
|
+
</html>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Static - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../../../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../../../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../../../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../../../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../../../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../../../wiki.html">Wiki</a> › <span>Middleware</span> › <a href="../static.html">Static</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="static">Static</h1>
|
38
|
+
|
39
|
+
<p>This middleware serves static files using the <code>mime-types</code> library. By default, it works with <code>Rack::Sendfile</code> and supports <code>ETag</code> based caching. Normally, you’d prefer to put static files into <code>public/_static</code> but it’s also acceptable to put static content into <code>pages/</code> if it makes sense.</p>
|
40
|
+
|
41
|
+
<pre><code class="language-ruby">use Utopia::Static,
|
42
|
+
# The root path to serve files from:
|
43
|
+
root: "path/to/root",
|
44
|
+
# The mime-types to recognize/serve:
|
45
|
+
types: [:default, :xiph],
|
46
|
+
# Cache-Control header for files:
|
47
|
+
cache_control: 'public, max-age=7200'
|
48
|
+
</code></pre>
|
49
|
+
|
50
|
+
|
51
|
+
<footer>
|
52
|
+
Last Modified: 2016-12-13 12:36:48 +1300 —
|
53
|
+
</footer>
|
54
|
+
|
55
|
+
</div>
|
56
|
+
</body>
|
57
|
+
</html>
|
@@ -0,0 +1,118 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Server Setup - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../wiki.html">Wiki</a> › <a href="server-setup.html">Server Setup</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="server-setup">Server Setup</h1>
|
38
|
+
|
39
|
+
<p>Utopia is designed to make deployment to remote servers easy.</p>
|
40
|
+
|
41
|
+
<h2 id="deployment">Deployment</h2>
|
42
|
+
|
43
|
+
<p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart passenger for that site.</p>
|
44
|
+
|
45
|
+
<p>To setup a server for deployment:</p>
|
46
|
+
|
47
|
+
<pre><code class="language-bash">$ mkdir /srv/http/www.example.com
|
48
|
+
$ cd /srv/http/www.example.com
|
49
|
+
$ sudo -u http utopia server create
|
50
|
+
</code></pre>
|
51
|
+
|
52
|
+
<p>On your development machine, you should setup the git remote:</p>
|
53
|
+
|
54
|
+
<pre><code class="language-bash">$ git remote add production ssh://remote/srv/http/www.example.com
|
55
|
+
$ git push --set-upstream production master
|
56
|
+
</code></pre>
|
57
|
+
|
58
|
+
<h3 id="default-environment">Default Environment</h3>
|
59
|
+
|
60
|
+
<p>Utopia will load <code>config/environment.yaml</code> and update <code>ENV</code> before executing any code. You can set default environment values using the <code>utopia</code> command:</p>
|
61
|
+
|
62
|
+
<pre><code class="language-bash">$ sudo -u http utopia environment RACK_ENV=production DATABASE_ENV=production_cluster_primary
|
63
|
+
ENV["RACK_ENV"] will default to "production" unless otherwise specified.
|
64
|
+
ENV["DATABASE_ENV"] will default to "production_cluster_primary" unless otherwise specified.
|
65
|
+
</code></pre>
|
66
|
+
|
67
|
+
<p>To set a value, write <code>KEY=VALUE</code>. To unset a key, write <code>KEY</code>.</p>
|
68
|
+
|
69
|
+
<p>When you run <code>rake</code> tasks or spawn a server, the values in <code>config/environment.yaml</code> will be the defaults. You can override them by manually specifying them, e.g. <code>DATABASE_ENV=development rake db:info</code>.</p>
|
70
|
+
|
71
|
+
<h2 id="platform">Platform</h2>
|
72
|
+
|
73
|
+
<p>The best deployment platform for Utopia is Linux. Specifically, <a href="https://www.archlinux.org/">Arch Linux</a> with the following packages:</p>
|
74
|
+
|
75
|
+
<ul>
|
76
|
+
<li><a href="https://aur.archlinux.org/packages/nginx-mainline-passenger/">nginx-mainline-passenger</a></li>
|
77
|
+
<li><a href="https://aur.archlinux.org/packages/passenger-nginx-module/">passenger-nginx-module</a></li>
|
78
|
+
</ul>
|
79
|
+
|
80
|
+
<p>There have been issues with the official packages and thus these packages were developed and tested with Utopia deployment in mind.</p>
|
81
|
+
|
82
|
+
<h3 id="sample-nginx-configuration">Sample Nginx Configuration</h3>
|
83
|
+
|
84
|
+
<p>Create a configuration file for your site, e.g. <code>/etc/nginx/sites/www.example.com</code>:</p>
|
85
|
+
|
86
|
+
<pre><code class="language-nginx">server {
|
87
|
+
listen 80;
|
88
|
+
server_name www.example.com;
|
89
|
+
root /srv/http/www.example.com/public;
|
90
|
+
passenger_enabled on;
|
91
|
+
}
|
92
|
+
|
93
|
+
server {
|
94
|
+
listen 80;
|
95
|
+
server_name example.com;
|
96
|
+
rewrite ^ http://www.example.com$uri permanent;
|
97
|
+
}
|
98
|
+
</code></pre>
|
99
|
+
|
100
|
+
<h3 id="sudo-setup">Sudo Setup</h3>
|
101
|
+
|
102
|
+
<p>Create a file <code>/etc/sudoers.d/http</code> with the following contents:</p>
|
103
|
+
|
104
|
+
<pre><code class="language-sudoers"># Allow user samuel to check out code as user http using git:
|
105
|
+
%wheel ALL=(http) NOPASSWD: ALL
|
106
|
+
</code></pre>
|
107
|
+
|
108
|
+
<p>This allows the deploy task to correctly checkout code as user <code>http</code>.</p>
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
<footer>
|
113
|
+
Last Modified: 2018-03-24 20:49:16 +1300 —
|
114
|
+
</footer>
|
115
|
+
|
116
|
+
</div>
|
117
|
+
</body>
|
118
|
+
</html>
|
@@ -0,0 +1,118 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<title>Server Setup - Utopia</title>
|
6
|
+
|
7
|
+
<meta charset="UTF-8"/>
|
8
|
+
|
9
|
+
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"/>
|
10
|
+
|
11
|
+
<link rel="icon" type="image/png" href="../../_static/icon.png"/>
|
12
|
+
<link rel="stylesheet" href="../../_static/site.css" type="text/css" media="screen"/>
|
13
|
+
|
14
|
+
<script src="../../_components/jquery/jquery.min.js"></script>
|
15
|
+
<script src="../../_components/jquery-syntax/jquery.syntax.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
//<![CDATA[
|
19
|
+
jQuery(function($) {
|
20
|
+
$.syntax();
|
21
|
+
});
|
22
|
+
//]]>
|
23
|
+
</script>
|
24
|
+
</head>
|
25
|
+
|
26
|
+
<body class="">
|
27
|
+
<header>
|
28
|
+
<img src="../../_static/utopia.svg"/>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<div id="page">
|
32
|
+
|
33
|
+
<nav>
|
34
|
+
› <a href="../../wiki.html">Wiki</a> › <a href="../server-setup.html">Server Setup</a></nav>
|
35
|
+
|
36
|
+
|
37
|
+
<h1 id="server-setup">Server Setup</h1>
|
38
|
+
|
39
|
+
<p>Utopia is designed to make deployment to remote servers easy.</p>
|
40
|
+
|
41
|
+
<h2 id="deployment">Deployment</h2>
|
42
|
+
|
43
|
+
<p>The preferred method of deployment to a production server is via git. The <code>utopia</code> command assists with setup of a remote git repository on the server. It will setup a <code>git</code> <code>post-update</code> hook which will deploy the site correctly and restart passenger for that site.</p>
|
44
|
+
|
45
|
+
<p>To setup a server for deployment:</p>
|
46
|
+
|
47
|
+
<pre><code class="language-bash">$ mkdir /srv/http/www.example.com
|
48
|
+
$ cd /srv/http/www.example.com
|
49
|
+
$ sudo -u http utopia server create
|
50
|
+
</code></pre>
|
51
|
+
|
52
|
+
<p>On your development machine, you should setup the git remote:</p>
|
53
|
+
|
54
|
+
<pre><code class="language-bash">$ git remote add production ssh://remote/srv/http/www.example.com
|
55
|
+
$ git push --set-upstream production master
|
56
|
+
</code></pre>
|
57
|
+
|
58
|
+
<h3 id="default-environment">Default Environment</h3>
|
59
|
+
|
60
|
+
<p>Utopia will load <code>config/environment.yaml</code> and update <code>ENV</code> before executing any code. You can set default environment values using the <code>utopia</code> command:</p>
|
61
|
+
|
62
|
+
<pre><code class="language-bash">$ sudo -u http utopia environment RACK_ENV=production DATABASE_ENV=production_cluster_primary
|
63
|
+
ENV["RACK_ENV"] will default to "production" unless otherwise specified.
|
64
|
+
ENV["DATABASE_ENV"] will default to "production_cluster_primary" unless otherwise specified.
|
65
|
+
</code></pre>
|
66
|
+
|
67
|
+
<p>To set a value, write <code>KEY=VALUE</code>. To unset a key, write <code>KEY</code>.</p>
|
68
|
+
|
69
|
+
<p>When you run <code>rake</code> tasks or spawn a server, the values in <code>config/environment.yaml</code> will be the defaults. You can override them by manually specifying them, e.g. <code>DATABASE_ENV=development rake db:info</code>.</p>
|
70
|
+
|
71
|
+
<h2 id="platform">Platform</h2>
|
72
|
+
|
73
|
+
<p>The best deployment platform for Utopia is Linux. Specifically, <a href="https://www.archlinux.org/">Arch Linux</a> with the following packages:</p>
|
74
|
+
|
75
|
+
<ul>
|
76
|
+
<li><a href="https://aur.archlinux.org/packages/nginx-mainline-passenger/">nginx-mainline-passenger</a></li>
|
77
|
+
<li><a href="https://aur.archlinux.org/packages/passenger-nginx-module/">passenger-nginx-module</a></li>
|
78
|
+
</ul>
|
79
|
+
|
80
|
+
<p>There have been issues with the official packages and thus these packages were developed and tested with Utopia deployment in mind.</p>
|
81
|
+
|
82
|
+
<h3 id="sample-nginx-configuration">Sample Nginx Configuration</h3>
|
83
|
+
|
84
|
+
<p>Create a configuration file for your site, e.g. <code>/etc/nginx/sites/www.example.com</code>:</p>
|
85
|
+
|
86
|
+
<pre><code class="language-nginx">server {
|
87
|
+
listen 80;
|
88
|
+
server_name www.example.com;
|
89
|
+
root /srv/http/www.example.com/public;
|
90
|
+
passenger_enabled on;
|
91
|
+
}
|
92
|
+
|
93
|
+
server {
|
94
|
+
listen 80;
|
95
|
+
server_name example.com;
|
96
|
+
rewrite ^ http://www.example.com$uri permanent;
|
97
|
+
}
|
98
|
+
</code></pre>
|
99
|
+
|
100
|
+
<h3 id="sudo-setup">Sudo Setup</h3>
|
101
|
+
|
102
|
+
<p>Create a file <code>/etc/sudoers.d/http</code> with the following contents:</p>
|
103
|
+
|
104
|
+
<pre><code class="language-sudoers"># Allow user samuel to check out code as user http using git:
|
105
|
+
%wheel ALL=(http) NOPASSWD: ALL
|
106
|
+
</code></pre>
|
107
|
+
|
108
|
+
<p>This allows the deploy task to correctly checkout code as user <code>http</code>.</p>
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
<footer>
|
113
|
+
Last Modified: 2018-03-24 20:49:16 +1300 —
|
114
|
+
</footer>
|
115
|
+
|
116
|
+
</div>
|
117
|
+
</body>
|
118
|
+
</html>
|