Angel
1.x
1.x
  • Introduction
  • Example Projects
  • Awesome Angel
  • 1.1.0 Migration Guide
  • Social
    • Angel on Gitter
    • Angel on Medium
    • Angel on YouTube
  • The Basics
    • Installation & Setup
      • Without the Boilerplate
    • Requests & Responses
    • Dependency Injection
    • Basic Routing
    • Request Lifecycle
    • Middleware
    • Controllers
    • Handling File Uploads
    • Using Plug-ins
    • Rendering Views
    • REST Client
    • Testing
    • Error Handling
    • Pattern Matching and Parameter
    • Command Line
  • Flutter
    • Writing a Chat App
    • Flutter helper widgets
  • Services
    • Service Basics
    • TypedService
    • In-Memory
    • Custom Services
    • Hooks
      • Bundled Hooks
    • Database-Agnostic Relations
    • Database Adapters
      • MongoDB
      • RethinkDB
      • JSON File-based
  • Plug-ins
    • Authentication
    • Configuration
    • Diagnostics & Logging
    • Reverse Proxy
    • Service Seeder
    • Static Files
    • Validation
    • Websockets
    • Server-sent Events
    • Toggle-able Services
  • Middleware/Finalizers
    • CORS
    • Response Compression
    • Security
    • File Upload Security
    • shelf Integration
    • User Agents
    • Pagination
    • Range, If-Range, Accept-Ranges support
  • PostgreSQL ORM
    • Model Serialization
    • Query Builder + ORM
    • Migrations
  • Deployment
    • Running in Isolates
    • Configuring SSL
    • HTTP/2 Support
    • Ubuntu and nginx
    • AppEngine
    • Production Mode
  • Front-end
    • Mustache Templates
    • Jael template engine
      • Github
      • Basics
      • Custom Elements
      • Strict Resolution
      • Directive: declare
      • Directive: for-each
      • Directive: extend
      • Directive: if
      • Directive: include
      • Directive: switch
    • compiled_mustache-based engine
    • html_builder-based engine
    • Markdown template engine
    • Using Angel with Angular
  • Advanced
    • API Documentation
    • Contribute to Angel
    • Scaling & Load Balancing
    • Standalone Router
    • Writing a Plugin
    • Task Engine
    • Hot Reloading
    • Real-time polling
Powered by GitBook
On this page
  1. Deployment

Ubuntu and nginx

PreviousConfiguring SSLNextAppEngine

Last updated 6 years ago

This is pretty simple, and doesn't require much in the way of DevOps.

Watch the video tutorial .

  1. Create unprivileged user web

    a. Can only operate in /home/web, where we'll host the application.

  2. Install Dart for web

  3. Set ANGEL_ENV=production in web account

  4. Sync changes with the server

    a. Use SFTP

    b. Or, sync from a private Git repo

    c. Host a local Git server to sync changes

    d. Git version histories take up more space, so probably just use SFTP for this guide.

  5. Set up ufw for 80, 443, ssh

  6. Use systemd (comes with Ubuntu) to start server on system boot, and restart if it crashes

    a.

  7. Basic nginx setup with proxy_pass

    • Don't run your application server as root

    • Serve static files via nginx instead of Angel

      • Even though CachingVirtualDirectory is extremely simple to use, it would be served via proxy

      • It's faster for nginx to serve your static files directly.

here
https://askubuntu.com/questions/919054/how-do-i-run-a-single-command-at-startup-using-systemd
YouTube thumbnail