One place for hosting & domains

      Deploy a LEMP Stack With One-Click Apps


      Updated by Linode

      Contributed by
      Linode

      LEMP Stack One-Click App

      A LEMP (Linux, NGINX, MySQL, PHP) stack is a popular, free, and open-source web software bundle used for hosting websites on the Linux operating system. While similar to a LAMP Stack, a LEMP stack uses the NGINX web server as opposed to Apache. NGINX may be a preference for many reasons, however many will choose it due to it’s speed and ability to perform under high load.

      Deploy a LEMP Stack with One-Click Apps

      One-Click Apps allow you to easily deploy software on a Linode using the Linode Cloud Manager. To access Linode’s One-Click Apps:

      1. Log in to your Linode Cloud Manager account.

      2. From the Linode dashboard, click on the Create button in the top right-hand side of the screen and select Linode from the dropdown menu.

      3. The Linode creation page will appear. Select the One-Click tab.

      4. Under the Select App section, select the app you would like to deploy:

        Select a One-Click App to deploy

      5. Once you have selected the app, proceed to the app’s Options section and provide values for the required fields.

      The LEMP Stack Options section of this guide provides details on all available configuration options for this app.

      LEMP Stack Options

      Field Description
      New User The username for a new non-root sudo user. Required.
      New User Password The Password for the new user. Required.
      MySQL Root Password The root password for your LEMP stack’s MySQL database. This is not the same as your Linode’s root password. Required.

      Linode Options

      After providing the app-specific options, enter configuration values for your Linode server:

      Configuration Description
      Select an Image Debian 9 is currently the only image supported by the LEMP One-Click App, and it is pre-selected on the Linode creation page. Required.
      Region The region where you would like your Linode to reside. In general, it’s best to choose a location that’s closest to you. For more information on choosing a DC, review the How to Choose a Data Center guide. You can also generate MTR reports for a deeper look at the network routes between you and each of our data centers. Required.
      Linode Plan Your Linode’s hardware resources. The Linode plan you deploy your LEMP stack on should account for the estimated workload. If you are standing up a simple web page, you can use a Nanode or 2GB Linode. If you are standing up a larger or more robust web app, then consider a plan with higher RAM and CPU allocations. If you decide that you need more or fewer hardware resources after you deploy your app, you can always resize your Linode to a different plan. Required.
      Linode Label The name for your Linode, which must be unique between all of the Linodes on your account. This name will be how you identify your server in the Cloud Manager’s Dashboard. Required.
      Root Password The primary administrative password for your Linode instance. This password must be provided when you log in to your Linode via SSH. It must be at least 6 characters long and contain characters from two of the following categories: lowercase and uppercase case letters, numbers, and punctuation characters. Your root password can be used to perform any action on your server, so make it long, complex, and unique. Required.

      When you’ve provided all required Linode Options, click on the Create button. Your LEMP Stack app will complete installation anywhere between 2-3 minutes after your Linode has finished provisioning.

      Getting Started After Deployment

      After your LEMP stack has finished deploying, you can:

      • Connect to your Linode via SSH as your root or limited user. You will need your Linode’s root and/or user password to proceed. Note that your Linode’s web root will be located in the /var/www/html directory.

      • Navigate to the public IP address of your Linode in a browser. You will see the PHP settings that are active for your Linode.

      • Consult the following guides to learn more about working with the various components of the LEMP stack:

      • Upload files to your web root directory with an SFTP application like FileZilla. Use the same root credentials that you would use for SSH.

      • Assign a domain name to your Linode’s IP address. Review the DNS Manager guide for instructions on setting up your DNS records in the Cloud Manager, and read through DNS Records: An Introduction for general information about how DNS works.

      Software Included

      The LEMP Stack One-Click App will install the following software on your Linode:

      Software Description
      NGINX Web server that can be used to serve your site or web application.
      MySQL Server Relational database.
      PHP 7 General purpose programming language.
      UFW (Uncomplicated Firewall) Firewall utility. Ports 22/tcp and 80/tcp for IPv4 and IPv6 will allow outgoing and incoming traffic.

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      This guide is published under a CC BY-ND 4.0 license.



      Source link

      How to Deploy Ruby on Rails with One-Click Apps


      Updated by Linode

      Contributed by
      Linode

      Ruby on Rails One-Click App

      Ruby on Rails is a server-side web application framework that allows web designers and developers to implement dynamic, fully featured web applications.

      Deploy a Ruby on Rails One-Click App

      One-Click Apps allow you to easily deploy software on a Linode using the Linode Cloud Manager. To access Linode’s One-Click Apps:

      1. Log in to your Linode Cloud Manager account.

      2. From the Linode dashboard, click on the Create button in the top right-hand side of the screen and select Linode from the dropdown menu.

      3. The Linode creation page will appear. Select the One-Click tab.

      4. Under the Select App section, select the app you would like to deploy:

        Select a One-Click App to deploy

      5. Once you have selected the app, proceed to the app’s Options section and provide values for the required fields.

      The Ruby on Rails Options section of this guide provides details on all available configuration options for this app.

      Ruby on Rails Options

      You can configure your Drupal App by providing values for the following fields:

      Field Description
      Rails Application name The name for your rails application. Required.

      Linode Options

      After providing the app specific options, provide configurations for your Linode server:

      Configuration Description
      Select an Image Debian 9 is currently the only image supported by Ruby on Rails One-Click Apps, and it is pre-selected on the Linode creation page. Required.
      Region The region where you would like your Linode to reside. In general, it’s best to choose a location that’s closest to you. For more information on choosing a DC, review the How to Choose a Data Center guide. You can also generate MTR reports for a deeper look at the network routes between you and each of our data centers. Required.
      Linode Plan Your Linode’s hardware resources. Required.
      Linode Label The name for your Linode, which must be unique between all of the Linodes on your account. This name will be how you identify your server in the Cloud Manager’s Dashboard. Required.
      Root Password The primary administrative password for your Linode instance. This password must be provided when you log in to your Linode via SSH. It must be at least 6 characters long and contain characters from two of the following categories: lowercase and uppercase case letters, numbers, and punctuation characters. Your root password can be used to perform any action on your server, so make it long, complex, and unique. Required.

      When you’ve provided all required Linode Options, click on the Create button. Your Ruby on Rails app will complete installation anywhere between 2-5 minutes after your Linode has finished provisioning.

      Getting Started after Deployment

      Access Ruby on Rails

      After Ruby on Rails has finished installing, you will be able to access Ruby on Rails from the console via ssh with your Linode’s IPv4 address:

      1. SSH into your Linode and create a limited user account.

      2. Log out and log back in as your limited user account.

      3. Update your server:

        sudo apt-get update && apt-get upgrade
        
      4. Ruby comes with some pre-made scripts to get you started. One of these is a blog. To begin with the blog example, use the following command:

        rails new blog
        

        This creates a new Rails application called Blog in the blog directory.

      5. Move into the blog directory:

        cd blog
        
      6. Start the built in server with the following command, replacing the IP address with your Linode’s IP address:

        rails server --binding=198.51.100.0
        
          
        Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
        => Booting WEBrick
        => Rails 4.2.7.1 application starting in development on http://198.51.100.0:3000
        => Run `rails server -h` for more startup options
        => Ctrl-C to shutdown server
        [2020-03-11 14:17:16] INFO  WEBrick 1.3.1
        [2020-03-11 14:17:16] INFO  ruby 2.3.3 (2016-11-21) [x86_64-linux-gnu]
        [2020-03-11 14:17:16] INFO  WEBrick::HTTPServer#start: pid=3089 port=3000
        
        
      7. You can visit your application by visiting the address in the browser.

        Rails Welcome Page

      8. Exit the server process with Ctrl+C.

      Create a Controller and View

      A controller will receive requests which are then routed and served by various actions. A view displays information.

      1. Create a controller called Welcome and an action called index:

        rails generate controller Welcome index
        
          
        create  app/controllers/welcome_controller.rb
        route   get 'welcome/index'
        invoke  erb
        create    app/views/welcome
        create    app/views/welcome/index.html.erb
        invoke  test_unit
        create    test/controllers/welcome_controller_test.rb
        invoke  helper
        create    app/helpers/welcome_helper.rb
        invoke    test_unit
        invoke  assets
        invoke    coffee
        create      app/assets/javascripts/welcome.coffee
        invoke    scss
        create      app/assets/stylesheets/welcome.scss
        
        
      2. With the text editor of your choice, edit the file app/views/welcome/index.html.erb and replace the contents with the following:

        app/views/welcome/index.html.erb
        1
        
        <h1>Hello, World! This is Ruby on Rails!</h1>
      3. Tell Rails where to find the document root. Edit the file config/routes.rb, find and uncomment the line root as shown:

        config/routes
        1
        2
        3
        4
        5
        6
        7
        8
        9
        
        Rails.application.routes.draw do
          get 'welcome/index'
        
        ...
        
          root 'welcome#index'
        
        ...
        end
      4. Start the server again:

        rails server --binding=198.51.100.0
        

        You should see your new welcome page in the web browser.

      For more information on setting up a more substantial application, refer to the Ruby on Rails Getting Started Guide.

      Next Steps

      For more on Ruby on Rails, checkout the following guides:

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      This guide is published under a CC BY-ND 4.0 license.



      Source link

      How to Deploy MongoDB with One-Click Apps


      Updated by Linode

      Contributed by
      Linode

      MongoDB One-Click App

      MongoDB is a database engine that provides access to non-relational, document-oriented databases. It is part of the growing NoSQL movement, along with databases like Redis and Cassandra (although there are vast differences among the many non-relational databases).

      MongoDB seeks to provide an alternative to traditional relational database management systems (RDBMS). In addition to its schema-free design and scalable architecture, MongoDB provides a JSON output and specialized, language-specific bindings that make it particularly attractive for use in custom application development and rapid prototyping. MongoDB has been used in a number of large scale production deployments and is currently one of the most popular database engines across all systems.

      Deploy a MongoDB One-Click App

      One-Click Apps allow you to easily deploy software on a Linode using the Linode Cloud Manager. To access Linode’s One-Click Apps:

      1. Log in to your Linode Cloud Manager account.

      2. From the Linode dashboard, click on the Create button in the top right-hand side of the screen and select Linode from the dropdown menu.

      3. The Linode creation page will appear. Select the One-Click tab.

      4. Under the Select App section, select the app you would like to deploy:

        Select a One-Click App to deploy

      5. Once you have selected the app, proceed to the app’s Options section and provide values for the required fields.

      The MongoDB Options section of this guide provides details on all available configuration options for this app.

      MongoDB Options

      You can configure your Drupal App by providing values for the following fields:

      Field Description
      Mongo password Password for your MongoDB admin account. Required.

      Linode Options

      After providing the app specific options, provide configurations for your Linode server:

      Configuration Description
      Select an Image Debian 9 is currently the only image supported by MongoDB One-Click Apps, and it is pre-selected on the Linode creation page. Required.
      Region The region where you would like your Linode to reside. In general, it’s best to choose a location that’s closest to you. For more information on choosing a DC, review the How to Choose a Data Center guide. You can also generate MTR reports for a deeper look at the network routes between you and each of our data centers. Required.
      Linode Plan Your Linode’s hardware resources. Since MongoDB can require a significant amount of RAM, we recommend using a high memory Linode. You can always resize your Linode to a different plan later if you feel you don’t need you need these resources are needed. Required.
      Linode Label The name for your Linode, which must be unique between all of the Linodes on your account. This name will be how you identify your server in the Cloud Manager’s Dashboard. Required.
      Root Password The primary administrative password for your Linode instance. This password must be provided when you log in to your Linode via SSH. It must be at least 6 characters long and contain characters from two of the following categories: lowercase and uppercase case letters, numbers, and punctuation characters. Your root password can be used to perform any action on your server, so make it long, complex, and unique. Required.

      When you’ve provided all required Linode Options, click on the Create button. Your MongoDB app will complete installation anywhere between 2-5 minutes after your Linode has finished provisioning.

      Getting Started after Deployment

      Access MongoDB

      After MongoDB has finished installing, you will be able to access MongoDB from the console via ssh with your Linode’s IPv4 address:

      1. SSH into your Linode and create a limited user account.

      2. Log out and log back in as your limited user account.

      3. Update your server:

        sudo apt-get update && apt-get upgrade
        
      4. Access MongoDB with the admin account password you set when launching the One-Click App:

        mongo -u admin -p --authenticationDatabase admin
        

        The -u, -p, and --authenticationDatabase options in the above command are required in order to authenticate connections to the shell. Without authentication, the MongoDB shell can be accessed but will not allow connections to databases.

        The admin user is purely administrative based on the roles specified. It is defined as an administrator of users for all databases, but does not have any database permissions itself. You may use it to create additional users and define their roles. If you are using multiple applications with MongoDB, set up different users with custom permissions for their corresponding databases.

      5. As the admin user, create a new database to store regular user data for authentication. The following example calls this database user-data:

        use user-data
        
      6. Permissions for different databases are handled in separate roles objects. This example creates the user, example-user, with read-only permissions for the user-data database and has read and write permissions for the exampleDB database that we’ll create in the Manage Data and Collections section below.

        Create a new, non-administrative user to enter test data. Change both example-user and password to something relevant and secure:

        db.createUser({user: "example-user", pwd: "password", roles:[{role: "read", db: "user-data"}, {role:"readWrite", db: "exampleDB"}]})
        

        To create additional users, repeat this step as the administrative user, creating new usernames, passwords and roles by substituting the appropriate values.

      7. Exit the mongo shell:

        quit()
        

      For more information on access control and user management, as well as other tips on securing your databases, refer to the MongoDB Security Documentation.

      Manage Data and Collections

      Much of MongoDB’s popularity comes from its ease of integration. Interactions with databases are done via JavaScript methods, but drivers for other languages are available. This section will demonstrate a few basic features, but we encourage you to do further research based on your specific use case.

      1. Open the MongoDB shell using the example-user we created above:

        mongo -u example-user -p --authenticationDatabase user-data
        
      2. Create a new database. This example calls it exampleDB:

        use exampleDB
        

        Make sure that this database name corresponds with the one for which the user has read and write permissions (we added these permissions in the previous section).

        To show the name of the current working database, run the db command.

      3. Create a new collection called exampleCollection:

        db.createCollection("exampleCollection", {capped: false})
        

        If you’re not familiar with MongoDB terminology, you can think of a collection as analogous to a table in a relational database management system. For more information on creating new collections, see the MongoDB documentation on the db.createCollection() method.

        Note

        Collection names should not include certain punctuation such as hyphens. However, exceptions may not be raised until you attempt to use or modify the collection. For more information, refer to MongoDB’s naming restrictions.
      4. Create sample data for entry into the test database. MongoDB accepts input as documents in the form of JSON objects such as those below. The a and b variables are used to simplify entry; objects can be inserted directly via functions as well.

        var a = { name : "John Doe",  attributes: { age : 30, address : "123 Main St", phone : 8675309 }}
        var b = { name : "Jane Doe",  attributes: { age : 29, address : "321 Main Rd", favorites : { food : "Spaghetti", animal : "Dog" } }}
        

        Note that documents inserted into a collection need not have the same schema, which is one of many benefits of using a NoSQL database.

      5. Insert the data into exampleCollection, using the insert method:

        db.exampleCollection.insert(a)
        db.exampleCollection.insert(b)
        

        The output for each of these operations will show the number of objects successfully written to the current working database:

          
        WriteResult({ "nInserted" : 1 })
        
        
      6. Confirm that the exampleCollection collection was properly created:

        show collections
        

        The output will list all collections containing data within the current working database:

          
        exampleCollection
        
        
      7. View unfiltered data in the exampleCollection collection using the find method. This returns up to the first 20 documents in a collection, if a query is not passed:

        db.exampleCollection.find()
        

        The output will resemble the following:

          
        { "_id" : ObjectId("5e68d4618bd4ea23cc3f5e96"), "name" : "John Doe", "attributes" : { "age" : 30, "address" : "123 Main St", "phone" : 8675309 } }
        { "_id" : ObjectId("5e68d4628bd4ea23cc3f5e97"), "name" : "Jane Doe", "attributes" : { "age" : 29, "address" : "321 Main Rd", "favorites" : { "food" : "Spaghetti", "animal" : "Dog" } } }
        
        

        You may notice the objects we entered are preceded by _id keys and ObjectId values. These are unique indexes generated by MongoDB when an _id value is not explicitly defined. ObjectId values can be used as primary keys when entering queries, although for ease of use, you may wish to create your own index as you would with any other database system.

        The find method can also be used to search for a specific document or field by entering a search term parameter (in the form of an object) rather than leaving it empty. For example:

        db.exampleCollection.find({"name" : "John Doe"})
        

        Running the command above returns a list of documents containing the {"name" : "John Doe"} object:

          
        { "_id" : ObjectId("5e68d4618bd4ea23cc3f5e96"), "name" : "John Doe", "attributes" : { "age" : 30, "address" : "123 Main St", "phone" : 8675309 } }
        
        

      Next Steps

      For more on MongoDB, checkout the following guides:

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      This guide is published under a CC BY-ND 4.0 license.



      Source link