首页 > 系统相关 >Unraid 安装 WindowsServer2019 及 NGINX、PHP、Python 环境

Unraid 安装 WindowsServer2019 及 NGINX、PHP、Python 环境

时间:2025-01-19 20:13:02浏览次数:1  
标签:cgi exe Python Unraid nginx WindowsServer2019 pip php PHP

一、安装虚拟机

使用 Unraid 安装。

项目
初始 内存: 4096 MB
最大值 内存: 6144 MB
机器: i440fx-7.2
BIOS: OVMF
启用 USB 启动引导: No
Hyper-V:
USB 控制器: 2.0(EHCI)
操作系统安装 ISO: windows_server_2019.iso
操作系统安装光盘总线: SATA
VirtIO 驱动程序 ISO: /mnt/user/isos/virtio-win-0.1.240.iso
VirtIO 驱动程序光盘总线: SATA
主要 虚拟磁盘位置: 固态
主要 虚拟磁盘总线: VirtIO
主要 串口: vdisk1
启用虚拟控制台拷贝/黏贴:
网络资源: br0
网络模式: virtio-net

随后通过 VM Console(VNC) 启动,并在 VNC 中立即回车 Enter 加载 ISO 。否则进入 BIOS 命令行。

二、配置基础设置

  • 安装 virtio-win-guest-tools

  • 激活

    Windows Server 2019 Standard: N69G4-B89J2-4G8F4-WWYCC-J464C

    或者使用其他手段。

  • 配置 IPv4 内网地址。

  • 配置 IPv6 公网地址(参考我的其他文章)。

  • 加载系统更新。

  • 安装 Edge 浏览器。

    安装 VSCode 。

    安装 Office 套件。

  • 卸载 微软OfficePLUS

    卸载 OneDrive

三、安装 NGINX

  1. 官网下载解压。

  2. 设置系统环境变量 PATH ,新增 C:\Service\nginx-1.24.0\

  3. 下载 Github | RunHiddenConsole.exe

  4. 创建 nginx-start.bat 文件,备用开机自启动项目。

    @echo off
    C:\Service\nginx-1.24.0\nginx.exe
    
  5. 创建 nginx-stop.bat 文件,备用停止项目。

    C:\Service\nginx-1.24.0\nginx.exe -s stop
    
  6. 开放服务端口。

    • 进入 控制面板\系统和安全\Windows Defender 防火墙 ,确保防火墙打开。

    • 高级设置 -> 入站规则 中,新建规则

      • 规则类型: 端口

      • 应用: TCP

      • 特定本地端口80, 443, 1000-5000 (举例)

  7. 双击 nginx-start.bat 测试,访问 http://localhost

三、安装 PHP

3.1 基本安装

  1. 安装 visual c++ 2017 (以上)
    官网:https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170

  2. 官网下载解压。

  3. 设置系统环境变量 PATH ,新增 C:\Service\php-8.4.2-Win32-vs17-x64\

  4. 下载 RunHiddenConsole.exe 。

  5. 复制 php.ini-developmentphp.ini ,并修改内容。

    • cgi.fix_pathinfo=1
    • extension_dir = "ext"
    • cgi.force_redirect = 0
    • disable_functions = ,( = 后无参数)。
    • extension=sqlite3
    • extension=zip
  6. 修改 NGINX 配置文件 nginx.conf

    ······
    http {
        ······
        server {
            ······
            location / {
                root   html;
                index  index.php index.html index.htm;
            }
            ······
            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
            ······
        }
    }
    
    

    其中, fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;/scripts ,变为 $document_root

  7. 创建 php-cgi-start.bat 文件,备用开机自启动项目 ,并复制到桌面。

    C:\Service\php-8.4.2-Win32-vs17-x64\RunHiddenConsole.exe /l /r C:\Service\php-8.4.2-Win32-vs17-x64\php-cgi.exe -b 127.0.0.1:9000 -c C:\Service\php-8.4.2-Win32-vs17-x64\php.ini
    
  8. 创建 php-cgi-stop.bat 文件,备用停止项目,并复制到桌面。

    taskkill /f /im RunHiddenConsole.exe
    taskkill /f /im php-cgi.exe
    
  9. 在 NGINX C:\Service\nginx-1.24.0\html 文件夹下创建 index.php 文件,删除 index.html

    <?php
    echo phpinfo();
    ?>
    
  10. 双击运行 php-cgi-start.bat 测试,访问 http://localhost

3.2 防护配置

在Windows环境下,Nginx不支持Unix Socket,所以无法直接实现不通过端口访问PHP - CGI。

要让PHP - CGI端口只提供给本机访问,可以通过以下几种方式来实现:

  1. 配置 php-cgi.exe 监听本地地址。

    在启动 php-cgi.exe 时,指定其只监听本地地址 127.0.0.1 ,这样外部网络就无法直接访问该端口。

    启动命令示例:

    php-cgi.exe -b 127.0.0.1:9000 -c 你的php解压目录\php.ini
    

    这里的 -b 127.0.0.1:9000 参数指定了 php-cgi.exe 绑定的地址和端口,只绑定在本地地址 127.0.0.1 上,外部网络无法通过其他IP地址访问该端口。

  2. 使用防火墙限制访问。

    通过 Windows 防火墙或其他防火墙软件,限制对 php-cgi.exe 端口的外部访问,只允许本地访问。

    以 Windows 防火墙为例:

    • 打开 控制面板 ,选择 系统和安全 中的 Windows Defender 防火墙

      点击 高级设置 ,打开 Windows Defender 防火墙与高级安全

      在左侧导航栏中,选择 入站规则

      点击 新建规则 ,选择 端口 ,点击 下一步

      指定要限制的端口号(如9000),选择 TCPUDPphp-cgi.exe 通常使用TCP),点击 下一步

      选择 阻止连接 ,点击 下一步

      配置文件 页面,根据需要选择适用的网络配置文件(如 私有公共),点击 下一步

      给规则命名,例如输入 限制 PHP-CGI 端口 ,点击 完成

    这样设置后,外部网络将无法访问该端口,只有本机可以访问。

  3. 配置Nginx限制访问

    虽然这种方法主要是限制对Nginx端口的访问,但也可以间接保护PHP - CGI端口,因为Nginx是PHP - CGI的前端代理。

    在Nginx的配置文件中,可以使用allow和deny指令来限制对特定路径或服务的访问。例如,在nginx.conf文件中,可以添加以下配置:

    location / {
        allow 127.0.0.1;  # 允许本地访问
        deny all;         # 拒绝其他所有访问
        ...
    }
    

    这样配置后,只有来自本地的请求可以访问Nginx提供的服务,包括对PHP - CGI的请求。不过,这种方法主要是限制对Nginx层面的访问,对于直接访问PHP - CGI端口的情况,还是需要结合上述其他方法来实现更全面的保护。

四、安装 Python

4.1 配置 Python

  1. 勾选 use admin privileges when installing py.exe

    当安装时使用管理员权限。

    这是:当在 VS Code 上使用 PHP Server 可以执行 exec() 调动 python 程序,但通过 NGINX + PHP 环境下执行 exec() 调动 python 程序失败(总是返回 1)的主要原因。

  2. 勾选 Add python.exe to PATH

  3. 选择 Customize installation

  4. 勾选 Install Python 3.12 for all users

  5. 自定义安装地址。

  6. 选择 Disable path length limit

    取消路径长度限制,Python 安装程序会修改系统的注册表,取消 260 个字符的路径长度限制。这样,Python 可以处理更长的路径,避免因路径过长而导致的错误。

  7. 安装完成测试 python -V

  8. 复制 python.exepython3.exe 以统一支持 python3 命令。

4.2 配置 pip

在Windows Server 2019上,将pip的源更换为国内源可以加快Python包的下载速度。以下是几种常见的国内源以及更换源的方法:

常见的国内源

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科学院:https://pypi.mirrors.opencas.cn/simple/
华为云:https://mirrors.huaweicloud.com/pypi/simple/
网易:https://pypi.163.com/simple/
南京大学:https://pypi.nju.edu.cn/simple/

临时使用国内源

在使用pip命令时,可以通过-i参数临时指定国内源。例如,使用清华大学的源安装xlwings:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwings

永久更换国内源

要永久更换国内源,可以修改pip的配置文件。pip的配置文件通常位于用户目录下的.pip文件夹中,文件名为 pip.conf (Windows 系统中为 pip.ini )。如果该文件夹或文件不存在,可以手动创建。

  • 创建配置文件

    打开命令提示符(CMD)。

    输入以下命令创建.pip文件夹(如果不存在):

    mkdir %APPDATA%\pip
    

    使用文本编辑器(如记事本)创建pip.ini文件:

    notepad %APPDATA%\pip\pip.ini
    
  • 编辑配置文件

    在pip.ini文件中,添加以下内容(以清华大学源为例):

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    

    保存并关闭文件。

  • 验证配置

    为了验证配置是否成功,可以尝试安装一个包:

    pip install xlwings
    

    如果配置成功,pip将从指定的国内源下载包。

  • 其他常用命令

    查看当前配置

    pip config list
    

    查看帮助信息

    pip help
    

通过以上步骤,你可以将pip的源永久更换为国内源,从而加快Python包的下载速度。

常用项目依赖

pip install xlwings python-docx docx2pdf 

五、开机启动设置

Windows 菜单搜索 任务计划, 打开 任务计划程序

任务计划程序(本地) -> 任务计划程序库 创建 新文件夹 Web

Web 下创建基本任务 NGINX Server ,触发器选择 计算机启动时 ,操作选择 启动程序 ,选择 NGINX 脚本 C:\Service\nginx-1.24.0\nginx-start.bat

创建完成后,双击基本任务 NGINX Server ,打开 NGINX Server 属性

安全选项 中,设置使用用户账户 Administrator ,勾选 不管用户是否登录都要运行 ,不勾选 不存储密码······ ,勾选 使用最高权限运行

六、重启电脑测试

电脑重启后,NGINX 服务应该已启动。

因 PHP 调动 Python 程序的权限异常,故手动通过桌面 php-cgi-start.bat 启动 php-cgi 服务。

七、疑难杂症

  1. 无法访问其他共享资源

    运行 输入 gpedit.msc 打开 组策略编辑器计算机配置 -> 管理模板 -> 网络 -> Lanman工作站 -> 启用不安全的来宾登录 -> 启用

  2. 关闭 Ctrl+Alt+Delete 解锁屏幕功能。

    Windows 菜单搜索 本地安全策略 ,在 安全设置 -> 本地策略 -> 安全选项 中,设置 交互式登录:无需按Ctrl+Alt+Del 启用。下次重启后即可。

参考

标签:cgi,exe,Python,Unraid,nginx,WindowsServer2019,pip,php,PHP
From: https://www.cnblogs.com/Yogile/p/18679869

相关文章

  • 图解 Python 编程(5) | Python流程控制
    ......
  • 极简python编程 CH0--python的下载与环境配置
    写在前面    本教程是一篇极简python教程,旨在使读者能够在最短的时间内掌握python的基础语法并能进行简单的数据处理工作。    由于本教程的目标读者是所有水平的编程初学者,因此所涉及的内容必然都是最简单的,且必然会有一定疏漏,希望各位大佬多多包涵orz。 ......
  • Python与Excel:开启自动化办公新时代 
    引言 在当今数字化办公的大环境下,日常工作中处理Excel表格的任务愈发频繁且繁杂。传统的手动操作不仅耗时费力,还容易出错。而Python作为一门功能强大且应用广泛的编程语言,为我们实现Excel办公自动化提供了高效的解决方案。借助Python的丰富库和简洁语法,能够轻松完成诸如数......
  • 【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
    【华为OD-E卷-第k个排列100分(python、java、c++、js、c)】题目给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!种排列。按大小顺序升序列出所有排列的情况,并一一标记,当n=3时,所有排列如下:“123”“132”“213”“231”“312”“321”给......
  • python图书管理系统
    效果展示概述本教程将引导你构建一个基于Python的图书管理系统,该系统使用Tkinter作为图形用户界面(GUI),并利用SQLite数据库存储和管理图书信息。通过本教程,你将学习如何实现添加、编辑、删除以及查询图书的功能。准备工作确保你的计算机上安装了Python3.x版本。由于我们......
  • 【华为OD-E卷 - 最长连续子序列 100分(python、java、c++、js、c)】
    【华为OD-E卷-最长连续子序列100分(python、java、c++、js、c)】题目有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度,如果没有满足要求的序列,返回-1输入描述第一行输入是:N个正整数组成的一个序列第二行输入是:给定......
  • 【华为OD-E卷 - 找出两个整数数组中同时出现的整数 100分(python、java、c++、js、c)】
    【华为OD-E卷-找出两个整数数组中同时出现的整数100分(python、java、c++、js、c)】题目现有两个整数数组,需要你找出两个数组中同时出现的整数,并按照如下要求输出:有同时出现的整数时,先按照同时出现次数(整数在两个数组中都出现并目出现次数较少的那个)进行归类,然后按照出......
  • 【华为OD-E卷 - 计算疫情扩散时间 100分(python、java、c++、js、c)】
    【华为OD-E卷-计算疫情扩散时间100分(python、java、c++、js、c)】题目在一个地图中(地图由n*n个区域组成),有部分区域被感染病菌。感染区域每天都会把周围(上下左右)的4个区域感染。请根据给定的地图计算,多少天以后,全部区域都会被感染。如果初始地图上所有区域全部都被感......
  • Python 项目和Pytorch 项目的环境构建
    python项目环境搭建首先下载软件包,打开安装创建项目:点击主菜单新建项目位置+pythonProject1构建python环境condecreate–p.envpython=3.10解释器:文件设置解释器本地解释器现有调试运行pytorch项目环境搭建先检查版本pip--version首先下载anaconda安装包这里......
  • python毕设婚纱影楼管理平台程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于婚纱影楼管理平台的研究,现有研究主要以传统管理模式为主,专门针对基于Python构建婚纱影楼管理平台的研究较少。在国内外,婚纱影楼行......