Document

windows下部署Blynk服务器部署最新教学

Step1. 下载链接

链接:https://pan.baidu.com/s/1ysbAYhyxUGx1ZG3xNMdsAw?pwd=1fel 
提取码:1fel

Step2.部署

Step2.1软件安装及载入工程

1.安装Intellij 社区版 正常安装即可

https://www.jetbrains.com.cn/idea/download/?section=windows

2.下载maven 并将其添加进环境变量

img

Step2.2 软件配置 右键使用ij打开该文件 等待其加载完成

img

1.点击编辑配置

img

2.添加新配置 选择应用程序(Applicantion)

img

3.配置变量 并点击运行

img

4.会提示报错(net.glxn.qrgen.core.image不存在),全局搜索2.2.0,将其改为2.6.0,修改完成后刷新maven

img
img

5.修改maven运行配置,并屏蔽test

clean install -Dcheckstyle.skipExec=true -Dcheckstyle.skip=true -f pom.xml

img
img
img

6.开始编译

img

Setp2.2 启动服务(一下操作均在一个文件夹内,随便找个地方创建就可以)

1.创建txt文件 输入以下代码 保存 将文件类型设置为bat即可

Java -jar server-0.41.14.jar -dataFolder Sever_LOG

2.找到server-0.41.14.jar文件复制到bat所在文件夹

此文件在这个文件夹内  blynk-server-0.41.14\server\launcher\target

3.双击bat文件 会自动启动服务器,启动时候大概会有十秒左右的等待创建的时间,打开输出的网址,输入邮箱密码即可

Step2.3 修改文件 ServerLauncher.java 这一步不是必须的,如果第一次开启服务的时候显示端口占用就这样修改一下啊


package cc.blynk.server.launcher;

import cc.blynk.server.Holder;
import cc.blynk.server.servers.BaseServer;
import cc.blynk.server.servers.application.MobileAndHttpsServer;
import cc.blynk.server.servers.hardware.HardwareAndHttpAPIServer;
import cc.blynk.server.servers.hardware.MQTTHardwareServer;
import cc.blynk.utils.AppNameUtil;
import cc.blynk.utils.JarUtil;
import cc.blynk.utils.LoggerUtil;
import cc.blynk.utils.SHA256Util;
import cc.blynk.utils.StringUtils;
import cc.blynk.utils.properties.GCMProperties;
import cc.blynk.utils.properties.MailProperties;
import cc.blynk.utils.properties.ServerProperties;
import cc.blynk.utils.properties.SmsProperties;
import cc.blynk.utils.properties.TwitterProperties;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.io.File;
import java.net.BindException;
import java.security.Security;
import java.util.HashMap;
import java.util.Map;

/**
 * Entry point for server launch.
 *
 * By default starts 4 servers on different ports:
 *
 * 1 server socket for HTTP API, Blynk hardware protocol, web sockets (8080 default)
 * 1 server socket for HTTPS API, Blynk app protocol, hardware secured blynkapp, web sockets (9443 default)
 * 1 server socket for MQTT (8440 default)
 *
 * In addition launcher start all related to business logic threads like saving user profiles thread, timers
 * processing thread, properties reload thread and shutdown hook tread.
 *
 * The Blynk Project.
 * Created by Dmitriy Dumanskiy.
 * Created on 2/16/2015.
 */
public final class ServerLauncher {

    //required for QR generation
    static {
        System.setProperty("java.awt.headless", "true");
    }

    private ServerLauncher() {
    }

    public static void main(String[] args) throws Exception {
        Map<String, String> cmdProperties = ArgumentsParser.parse(args);

        ServerProperties serverProperties = new ServerProperties(cmdProperties);

        LoggerUtil.configureLogging(serverProperties);

        //required for logging dynamic context
        System.setProperty("data.folder", serverProperties.getProperty("data.folder"));

        //required to avoid dependencies within model to server.properties
        setGlobalProperties(serverProperties);

        MailProperties mailProperties = new MailProperties(cmdProperties);
        SmsProperties smsProperties = new SmsProperties(cmdProperties);
        GCMProperties gcmProperties = new GCMProperties(cmdProperties);
        TwitterProperties twitterProperties = new TwitterProperties(cmdProperties);

        Security.addProvider(new BouncyCastleProvider());

        boolean restore = Boolean.parseBoolean(cmdProperties.get(ArgumentsParser.RESTORE_OPTION));
        start(serverProperties, mailProperties, smsProperties,
                gcmProperties, twitterProperties, restore);
    }

    private static void setGlobalProperties(ServerProperties serverProperties) {
        Map<String, String> globalProps = new HashMap<>(4);
        globalProps.put("terminal.strings.pool.size", "25");
        globalProps.put("initial.energy", "2000");
        globalProps.put("table.rows.pool.size", "100");
        globalProps.put("csv.export.data.points.max", "43200");

        for (var entry : globalProps.entrySet()) {
            String name = entry.getKey();
            String value = serverProperties.getProperty(name, entry.getValue());
            System.setProperty(name, value);
        }
    }

    private static void start(ServerProperties serverProperties, MailProperties mailProperties,
                              SmsProperties smsProperties, GCMProperties gcmProperties,
                              TwitterProperties twitterProperties,
                              boolean restore) {
        Holder holder = new Holder(serverProperties,
                mailProperties, smsProperties, gcmProperties, twitterProperties,
                restore);

        BaseServer[] servers = new BaseServer[] {
                new HardwareAndHttpAPIServer(holder),
                new MobileAndHttpsServer(holder),
                new MQTTHardwareServer(holder)
        };
        startServers(servers);
        if (true) {
            //Launching all background jobs.
            JobLauncher.start(holder, servers);

            System.out.println();
            System.out.println("Blynk Server " + JarUtil.getServerVersion() + " successfully started.");
            String path = new File(System.getProperty("logs.folder")).getAbsolutePath().replace("/./", "/");
            System.out.println("All server output is stored in folder '" + path + "' file.");

            holder.sslContextHolder.generateInitialCertificates(holder.props);

            createSuperUser(holder);
        }
    }

    private static void createSuperUser(Holder holder) {
        ServerProperties props = holder.props;
        String url = props.getAdminUrl(props.host);
        String email = props.getProperty("admin.email", "admin@blynk.cc");
        String pass = props.getProperty("admin.pass");

        if (true) {
            if (pass == null || pass.isEmpty()) {
                System.out.println("Admin password not specified. Random password generated.");
                pass = StringUtils.randomPassword(24);
            }

            System.out.println("Your Admin url is " + url);
            System.out.println("Your Admin login email is " + email);
            System.out.println("Your Admin password is " + pass);

            String hash = SHA256Util.makeHash(pass, email);
            holder.userDao.add(email, hash, AppNameUtil.BLYNK, true);
        }
    }

    private static boolean startServers(BaseServer[] servers) {
        //start servers
        try {
            for (BaseServer server : servers) {
                server.start();
            }
            return true;
        } catch (BindException bindException) {
            System.out.println("Server ports are busy. Most probably server already launched. See "
                    + new File(System.getProperty("logs.folder")).getAbsolutePath() + " for more info.");
        } catch (Exception e) {
            System.out.println("Error starting Blynk server. Stopping.");
        }

        return false;
    }

}
posted @ 2024-02-06 09:30  qdyaodao  阅读(787)  评论(0)    收藏  举报
Document