V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cdwyd
V2EX  ›  程序员

WSL“完美”安装 LNMP 环境(宝塔面板)

  •  
  •   cdwyd · 2018-10-15 00:01:11 +08:00 · 5727 次点击
    这是一个创建于 1991 天前的主题,其中的信息可能已经有所发展或是发生改变。

    WSL"完美"安装 LNMP 环境(宝塔面板)

    优点

    简单:Windows 自带功能,而且不需要设置网络映射,自动进行了硬盘挂载,真正实现了 Windows 下编辑 Linux 下运行的目的。同时也能解决不少 PHP 扩展在 Windows 下编译困难的问题。

    步骤

    安装 Ubuntu

    • 在开启或关闭 Windows 功能那勾选:适用于 Linux 系统的 Windows 子系统
    • 应用商店搜索 Ubuntu 点击获取并安装
    • 启动安装后的 Ubuntu 系统并按照提示设置用户名密码

    关闭杀毒软件的“实时保护”功能

    这一步很重要,因为如果不关闭会导致磁盘 IO 下降从而导致编译速度很慢


    安装宝塔面板

    选择 Ubuntu 版本正常安装就行,5.9 和 6.0 版本都测试过,安装过程没有问题。


    配置宝塔面板

    常规配置就不再提,主要是把 Web 根目录,Web 备份目录,以及数据库的数据目录修改为 Windows 系统下的相应目录以方便进行编辑和备份。


    开始填坑(重点)

    • Linux 的子系统是不支持开机启动脚本的,所以需要利用 vbs 脚本设置好开机自动运行宝塔以及相关的服务

    • 部分页面打开非常慢,修复办法: 打开 nginx 配置文件,在 http 区段添加如下代码然后重启 Nginx 服务( 详细解释)

      fastcgi_buffering off;
      
    • 杀毒软件实时保护功能导致的页面缓慢不流畅

      完成上面这些操作以后 LNMP 各项功能已经能够正常使用,但是页面仍然会有卡顿感,原因还是上面提到的实时保护功能会影响到效率(详细解释)。解决办法是把常用进程添加到杀毒软件的例外清单里面,可用下面的 ps1 脚本完成(记得替换自己的用户名以及 package 名)。

        $win_user = "pc_user"
        $linux_user = "linux_user"
        $package = "CanonicalGroupLimited.UbuntuonWindows_acdefkp1fndgsc"
        $base_path = "C:\Users\" + $win_user + "\AppData\Local\Packages\" + $package + "\LocalState\rootfs"
        $dirs = @("\bin", "\sbin", "\usr\bin", "\usr\sbin", "\www\server")
        $dirs | ForEach { Add-MpPreference -ExclusionProcess ($base_path + $_ + "\*") }
        Add-MpPreference -ExclusionPath $base_path
      

    其他

    差不多断断续续的用了整个周末的时间,才算把这些坑填完了,来回重启了不下 10 次。什么都弄好以后突然觉得:既然环境都弄好了,那就不用着急写代码了,先写个总结吧(手动狗头)。

    7 条回复    2019-07-01 22:06:08 +08:00
    ddup
        1
    ddup  
       2018-10-15 01:21:48 +08:00 via Android
    是方便,不过 Win 10 不定时不规律出现奇怪 BUG 然后有一天实在受不了重装系统,Over …
    建议在 WSL 能单独备份之前,还是用 Docker 或虚拟机吧。
    cdwyd
        2
    cdwyd  
    OP
       2018-10-15 01:32:20 +08:00
    @ddup
    win10 一直用全新安装版本还没出过莫名其妙的问题,可能和我用的硬件都是比较常规的主流厂家有关系。

    另外 网站文件 和 数据库文件并没有保存在 wsl 里面,在宿主机的硬盘上。
    beginor
        3
    beginor  
       2018-10-15 07:48:10 +08:00 via Android
    @ddup docker 下磁盘性能也不怎么样, 特别是在使用卷 volumes 的情况下。
    lhx2008
        4
    lhx2008  
       2018-10-15 08:35:33 +08:00 via Android
    WSL 的 IO 非常渣,epoll 也不知道怎么转的,所以不太适合这么玩
    artandlol
        5
    artandlol  
       2018-10-15 08:54:53 +08:00
    @beginor docker 下的 volumes 的本质是重用 inode 性能是宿主的性能。docker 的本质就是文件卷 再使用 cgroup namespace 进行隔离
    cdwyd
        6
    cdwyd  
    OP
       2018-10-15 10:29:07 +08:00 via Android
    @lhx2008 关掉实时防护后性能还是可以的
    zhengwhizz
        7
    zhengwhizz  
       2019-07-01 22:06:08 +08:00
    nginx 多站点不起作用,只有 localhost 能访问。hosts 也加了,一直不响应。只有 servername _ 才能访问。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3433 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:13 · PVG 19:13 · LAX 04:13 · JFK 07:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.