tencent cloud

Feedback

Quickly Deploying Egg Framework

Last updated: 2022-07-22 15:10:58

    The SLS framework deployment scheme has been upgraded. You can use an SCF HTTP-triggered function to quickly deploy your Egg service to the cloud.

    Note:

    What are the differences between SLS console deployment and direct function deployment?
    Both SLS console deployment and function deployment can be based on HTTP-triggered functions, and quick deployment is usually used for web frameworks.

    • If you only need to develop code logic and do not need to create additional resources, you can perform quick deployment through the Serverless console.
    • If you need to create more capabilities or resources, such as automatic creation of layer hosting dependencies, quick implementation of static resource isolation, and support for direct code repository pulling, in addition to code deployment, you can use the SLS console to create web applications.

    This document introduces the SLS console deployment scheme. You can also complete the deployment in CLI by referring to Deploying Web Function on Command Line.

    Template Deployment - Deploying Egg Sample Code

    1. Log in to the SLS console.
    2. Choose Create Application and select Web Application > Egg Framework.
    3. Click Next and complete basic configuration.
    4. Select Sample Code as the upload mode and click Complete. The application deployment starts.
    5. After the application deployment is completed, you can view the basic information of the sample application on the application details page. In addition, you can use access the deployed Egg project at the access path URL generated by API Gateway.

    Custom Deployment - Quickly Deploying Web Application

    Prerequisites

    The Node.js runtime environment has been installed locally.

    Local development

    1. Refer to Quick Start to quickly initialize the sample project as follows:
      mkdir egg-example && cd egg-example
      npm init egg --type=simple
      npm i
      
    1. In the root directory, run the following command to directly start the service locally.
      npm run dev
      open http://localhost:7001
      
    1. Start a browser, and you can access the sample Egg project locally.

    Deployment in cloud

    Next, perform the following steps to make simple modifications to the locally created project, so that it can be quickly deployed through an HTTP-triggered function. The steps of project transformation for the Egg framework are as follows:

    • Change the listening address and port to 0.0.0.0:9000.
    • Modify the write path. Only the /tmp directory is readable/writable in the SCF environment.
    • Add the scf_bootstrap file.

    1. (Optional) Configure the scf_bootstrap file.

    Note:

    You can also complete the configuration in the console.

    Create the scf_bootstrap file in the root directory of the project and add the following content to it (the file is used to configure environment variables and start the service. Here is only a sample. Please adjust the configuration according to your actual business scenario):

    #!/var/lang/node12/bin/node
    'use strict';
    /**
    * Node path in docker: /var/lang/node12/bin/node
    * As only `/tmp` is readable/writable in SCF, two environment variables need to be modified at startup
    * `NODE_LOG_DIR` changes the default node write path of `egg-scripts` (~/logs) to `/tmp`
    * `EGG_APP_CONFIG` changes the default directory of the Egg application to `/tmp`
    */
    process.env.EGG_SERVER_ENV = 'prod';
    process.env.NODE_ENV = 'production';
    process.env.NODE_LOG_DIR = '/tmp';
    process.env.EGG_APP_CONFIG = '{"rundir":"/tmp","logger":{"dir":"/tmp"}}';
    const { Application } = require('egg');
    // If you deploy `node_modules` through layers, you need to modify `eggPath`
    Object.defineProperty(Application.prototype, Symbol.for('egg#eggPath'), {
    value: '/opt',
    });
    const app = new Application({
    mode: 'single',
    env: 'prod',
    });
    app.listen(9000, '0.0.0.0', () => {
    console.log('Server start on http://0.0.0.0:9000');
    });
    

    After the file is created, you need to run the following command to modify the executable permission of the file. By default, the permission 777 or 755 is required for the service to start normally. Below is the sample code:

    chmod 777 scf_bootstrap
    

    2. Console upload

    Log in to the SLS console, select Web Application > Egg Framework, and select Local Upload or Code Repository Pull as the upload mode.

    You can configure the scf_bootstrap file in the console. When the configuration is completed, the console automatically generates the scf_bootstrap file and packages it and the project code for deployment.

    Note:

    The actual scf_bootstrap file in your project prevails. If the scf_bootstrap file already exists in your project, its content will not be overwritten.

    When the configuration is completed, click Complete to deploy your Egg project.

    Advanced configuration management

    In Advanced Configuration, you can perform more application management operations, such as creating layers, binding custom domains, and configuring environment variables.

    Contact Us

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support