Windows服务静态部署之Nginx篇(二)

此文章为<Windows服务静态部署>的Nginx篇,MySQL可参考

Windows服务静态部署之MySQL篇(一)-CSDN博客

一、下载Nginx静态包

下载地址:

nginx: download

下载稳定版本

解压nginx-1.26.3.zip,更名为nginx,复制到安装包根目录

二、界面设计

  1. 启动时加载配置,修改配置,然后使用Save按键保存配置
  2. Start按键启动/停止Nginx服务

三、代码设计

#ifndef NGINXTABWIDGET_H
#define NGINXTABWIDGET_H

#include "ui_widget.h"
#include "com.h"
class NginxTabWidget
{
public:
    NginxTabWidget();
    void Init(Ui::Widget *ui);
    void Deinit();
public:
    void Config();
    void StartOrStop();
protected:
    void ReFresh();
private:
    Com _com;
    Ui::Widget *_ui;
};

#endif // NGINXTABWIDGET_H
#include "nginx.h"
#include <QDir>
#include <QDebug>
NginxTabWidget::NginxTabWidget()
{
}

void NginxTabWidget::Init(Ui::Widget *ui){
    _ui=ui;
    ReFresh();
}
void NginxTabWidget::Deinit(){
    if(_com.TaskList("nginx.exe")){
        QStringList args;
        args.append("/f");
        args.append("/im");
        args.append("nginx.exe");
        QString result;
        _com.Execute("taskkill.exe",args,result);
        qDebug()<<result;
        result="";
    }
}
void NginxTabWidget::Config(){
    QString nginxConfigPath = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()+"\\nginx\\conf\\nginx.conf");
    _com.WriteFile(nginxConfigPath,_ui->NginxConfigTextBrowser->toPlainText());
}
void NginxTabWidget::StartOrStop(){
    QString nginxExe = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()+"\\nginx\\nginx.exe");
    QString nginxConfig = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()+"\\nginx\\conf\\nginx.conf");
    QString result;
    if(_ui->NginxStartBtn->text()=="Start"){
        QString currentDir = QDir::toNativeSeparators(QCoreApplication::applicationDirPath());
        QString targetDir = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()+"\\nginx");
        if (QDir::setCurrent(targetDir)) {
            qDebug() << "Working directory set to:" << QDir::currentPath();
        } else {
            qDebug() << "Failed to set working directory to:" << currentDir+"\\nginx";
        }

        QStringList args;
        args.append("-c");
        args.append(nginxConfig);
        _com.Execute(nginxExe,args,result);

        if (QDir::setCurrent(currentDir)) {
            qDebug() << "Working directory set to:" << QDir::currentPath();
        } else {
            qDebug() << "Failed to set working directory to:" << currentDir+"\\nginx";
        }

        qDebug()<<result;
        result="";

    }else{
        QStringList args;
        args.append("/f");
        args.append("/im");
        args.append("nginx.exe");
        _com.Execute("taskkill.exe",args,result);
        qDebug()<<result;
        result="";
    }
    ReFresh();
}
void NginxTabWidget::ReFresh(){
    if(_com.TaskList("nginx.exe")){
        _ui->NginxStartBtn->setText("Stop");
    }else{
        _ui->NginxStartBtn->setText("Start");
    }
    QString nginxConfigPath = QDir::toNativeSeparators(QCoreApplication::applicationDirPath()+"\\nginx\\conf\\nginx.conf");
    _ui->NginxConfigTextBrowser->setText(_com.ReadFile(nginxConfigPath));
    _ui->NginxConfigTextBrowser->setEnabled(true);
    _ui->NginxConfigTextBrowser->setReadOnly(false);
}

四、测试

注意事项,每次运行Nginx时将当前路径切换到nginx目录中,否则会运行失败,该问题调试时间比较长,未找到更好的实现方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值