[c/c++]为nginx写的一个管理程序

【[c/c++]为nginx写的一个管理程序】看过《2011中国PHP技术高峰论坛:PHP在金山游戏运营中的应用》中的介绍,觉得为项目发开中的每一个成员配置相同的开发环境,项目结构,测试环境等等内容显得十分重要。于是就有了如何为别人部属一整套完整开发环境的想法。方案是有了,就是使用之前打成安装包的wamp框架进行修改,将Apache换成Nginx服务,并将项目目录结构配置也一并写进去。如此一来,别人要做的只是选择安装的目录,一路的Next下去,最终可以保证每一个成员的开发环境和配置都是一模一样的。

由于Nginx不同于Apache,无法添加到windows系统服务里,而且php-cgi启动的时候,无法隐藏那个控制台窗口。使用起来多有不便,于是就自己用C语言编写了以下的程序,为这个WNMP环境开发一个控制器出来,以实现:启动,停止,重启,重载Nginx配置等接口。
以下将完整代码记录以此,于免丢失。

#include char *nginx_path = "//bin//nginx"; char *nginx_app = "nginx.exe"; char *php_path = "//bin//php"; char *php_app = "php-cgi.exe"; void run_app (char *path, char *appName, char *param) { char filepath[MAX_PATH], filename[MAX_PATH]; GetCurrentDirectory(MAX_PATH, filepath); strcat(filepath, path); strcpy(filename, filepath); strcat(filename, "//"); strcat(filename, appName); ShellExecute(NULL, NULL, appName, param, filepath, SW_HIDE); } void taskkill (char *appName) { char param[50]; strcpy(param, "/c taskkill /IM "); strcat(param, appName); strcat(param, " /F"); ShellExecute(NULL, NULL, "cmd.exe", param, NULL, SW_HIDE); } /** * void server_stop () * 停止服务 */ void server_stop () { run_app(nginx_path, nginx_app, "-s stop"); taskkill(php_app); } /** * void server_start () * 启动服务 */ void server_start () { run_app(nginx_path, nginx_app, NULL); run_app(php_path, php_app, "-b 0.0.0.0:9000 -q"); } int main (int argc, char *argv[]) { if (argc < 2) return 1; //停止服务 if (strcmp(argv[1], "stop")==0) { server_stop(); } //启动服务 if (strcmp(argv[1], "start")==0) { server_start(); } //重启服务 if (strcmp(argv[1], "restart")==0) { server_stop(); Sleep(2); server_start(); } //重新加载nginx配置文件 if (strcmp(argv[1], "reload")==0) { run_app(nginx_path, nginx_app, "-s reload"); } return 0; }
[c/c++]为nginx写的一个管理程序
文章图片

    推荐阅读