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

news/2025/1/19 19:55:55/文章来源:https://www.cnblogs.com/Yogile/p/18679869

一、安装虚拟机

使用 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 启用。下次重启后即可。

参考

  • Kimi.ai - 帮你看更大的世界 (现在 AI 真是厉害)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871818.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

请问如何修改zblog的数据库连接信息以适应新的主机环境?

当您需要将zblog迁移到新的主机或更改数据库配置时,必须更新zblog的数据库连接信息。以下是详细的步骤和注意事项,确保您的博客能够顺利连接到新的数据库。找到配置文件: zblog的数据库配置文件位于zb_users/c_option.php。打开此文件,准备进行编辑。更新数据库连接参数: …

10M或100M带宽的服务器每个月可用的流量是多少?

选择合适的服务器带宽对于网站的性能和用户体验至关重要。了解不同带宽下的可用流量可以帮助您更好地规划资源,避免因流量不足而导致的服务中断。本文将详细介绍10M和100M带宽服务器每月的理论可用流量,并探讨实际使用中的影响因素。 1. 理论计算 根据带宽和时间的关系,我们…

如何在ASP页面中实现移动端与PC端的自动跳转?

在ASP页面中,可以通过检查HTTP_USER_AGENT字符串来判断客户端浏览器是否为移动设备,并根据结果进行相应的页面跳转。以下是详细的实现步骤和代码示例:检查HTTP_USER_AGENT字符串:HTTP_USER_AGENT是服务器接收到的请求头信息之一,包含了客户端浏览器的信息。 通过InStr函数…

如何在IIS中配置https重定向到http?

问题描述: 如何在IIS架构的服务器中配置https重定向到http? 答案: 将以下代码另存为web.config文件后保存到网站根目录即可生效。 <?xml version="1.0" encoding="UTF-8"?> <configuration><system.webServer><rewrite><r…

什么是IPMI及其在独立服务器中的作用?

IPMI的优势功能 描述提高效率 减少了对现场技术人员的依赖,加快问题解决速度。增强安全性 提供了额外的安全层,确保只有授权人员才能访问敏感信息。降低运营成本 避免了频繁派遣技术人员到现场,节省了时间和费用。简化管理 统一的管理界面使多台服务器的管理和维护变得更加简…

2024春秋杯冬季赛day3writeup_cyi

2024春秋杯冬季赛day3writeup_cyicyi WRITEUP 个人信息 个人名称:cyi 个人排名:112 解题情况解题过程 misc Infinity(fail) 操作内容: Png后藏zip,提出来随便解压几个发现是无限,解压缩有7z,zip,tar格式,gpt整个jio本 得到最后的secret文件,内容是Inf1nityIsS0CoOL,…

搭建本地大模型-ollama-conda

搭建大模型的前期工作构建本地大模型-ollama-conda 安装conda 环境 Win10LTSC 下载安装包 有两个版本,Anaconda3和Miniconda3。 两者的区别: 1、Anaconda3包含了很多库,Miniconda3只包含了基础库; 2、Anaconda3的安装包有Jupyter Notebook,Miniconda3没有。 建议: 刚入门…

[rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(05):svg图片转为png格式(暨svg部件的使用)

前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发。 iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动。 本合集是基于新版本的关于分部件(widget)的使用介绍,包括源代码介绍、实例使用等。 环境配置 系统:window10 平台:visual…

春秋杯冬季赛-EzMisc WP

后面两天本来没打算写出来啥题的,因为都太难了呜呜,但是这道题竟然做出来了(虽然花了接近3个小时),还是有点小激动 前排提醒 1、是看了提示之后才做出来的题目提示:1、利⽤DP泄露来求出私钥,从⽽还原私钥流解密密⽂ 2、图片经过了Arnold变换2、存在偶然性,复现难度挺大…

信息量,熵,交叉熵,相对熵的定义

本文将介绍信息量,熵,交叉熵,相对熵的定义,以及它们与机器学习算法中代价函数的定义的联系。转载请保留原文链接:http://www.cnblogs.com/llhthinker/p/7287029.html 1. 信息量 信息的量化计算:解释如下:信息量的大小应该可以衡量事件发生的“惊讶程度”或不确定性: 如…

探索照片新艺术:在线将你的照片转为油画杰作

在数字时代,我们每天都在捕捉生活的瞬间,但你是否想过将这些平凡的照片转变为独一无二的艺术品?今天,我要向大家推荐一个令人兴奋的在线平台——img4you,它利用尖端的AI技术,让你的照片瞬间“穿上”油画的华服。 轻松体验在线照片转油画: https://www.img4you.com/style…

通俗理解深度学习中的熵相关知识【信息量、熵、相对熵(KL散度)、交叉熵】

https://zhuanlan.zhihu.com/p/647312079 通俗理解:一个事件从不确定变为确定的难度有多大 往往某件事情发生概率越低,信息量越大,从不确定变为确定的难度越大 ex:【中国队想要在世界杯夺冠】这一事件发生概率极极极低,信息量非常大,想要实现即“从不确定变为确定”的难度…