Mayh博客 - mayh
type: channel
link: https://mayh.msgo.xyz/author/1/
description: mayh
items: 树莓派wifi配置
items: mac下python虚拟环境venv的使用
items: acme.sh 使用 DNSPod 验证实现泛域名 SSL 证书申请
items: 负载均衡配置记录
items: Wordpress插件-AI一键补充文章标题，关键字，文章描述，导语和结语
items: 开发者必看！超全免费开发必备资源库大集合
items: docker下进行mysql主从配置实现thinkphp读写分离
items: docker环境下搭建PHP网站，实现nginx负载均衡和mysql主从配置
items: node开发环境(mac)和线上环境(linux)搭建

树莓派wifi配置
type: item
date: 2025-06-15T18:12:20+08:00
description: 启用无线网络在全新安装时，您必须指定设备使用的国家/地区。这可让您的设备选择正确的 5GHz 网络频段。指定无线局域网国家/地区后，您就可以使用 Raspberry Pi 的内置无线网络模块。为此，请使用命令行raspi-config工具设置您的无线局域网国家/地区。运行以下命令：$ sudo raspi-config使用箭头键选择“本地化选项”菜单项。选择“WLAN 国家/地区”选项。使用箭头键从下拉菜单中选择您的国家/地区。按下Enter即可选择您的国家/地区。现在您应该可以访问无线网络了。运行以下命令检查您的 Wi-Fi 无线电是否已启用：$ nmcli radio wifi如果此命令返回“enabled”文本，则表示您可以配置连接。如果此命令返回“disabled”，请尝试使用以下命令启用 Wi-Fi：$ nmcli radio wifi on查找网络要扫描无线网络，请运行以下命令：$ nmcli dev wifi list您应该看到类似以下内容的输出：使用中的 BSSID SSID 模式 信道速率 信号条 安全性 90：72：40：1B：42：05 myNetwork 基础设施 132 405 Mbit/s 89 **** WPA2 90：72：42：1B：78：04 myNetwork5G 基础设施 11 195 Mbit/s 79 *** WPA2 9C:AB:F8:88:EB:0D Pi Towers 基础设施 1 260 Mbit/s 75 *** WPA2 802.1X B4:2A:0E:64:BD:BE 示例基础设施 6 195 Mbit/s 37 ** WPA1 WPA2在“SSID”列中查找您想要连接的网络名称。使用 SSID 和密码连接到网络。连接到网络运行以下命令来配置网络连接，将<example_ssid>占位符替换为您尝试配置的网络的名称：$ sudo nmcli --ask dev wifi connect <example_ssid>出现提示时输入您的网络密码。输入密码后，您的 Raspberry Pi 将自动连接到网络。如果您看到错误输出，提示“需要密钥，但未提供”，则表示您输入了错误的密码。请再次运行上述命令，并仔细输入您的密码。要检查您是否已连接到网络，请运行以下命令：$ nmcli dev wifi list您应该看到类似以下内容的输出：使用中的 BSSID SSID 模式 信道速率 信号条 安全性 * 90:72:40:1B:42:05 myNetwork 基础设施 132 405 Mbit/s 89 **** WPA2 90：72：42：1B：78：04 myNetwork5G 基础设施 11 195 Mbit/s 79 *** WPA2 9C:AB:F8:88:EB:0D Pi Towers 基础设施 1 260 Mbit/s 75 *** WPA2 802.1X B4:2A:0E:64:BD:BE 示例基础设施 6 195 Mbit/s 37 ** WPA1 WPA2检查*“IN-USE”列中是否有星号（）；它应该与您要连接的网络的 SSID 出现在同一行。笔记您可以在/etc/NetworkManager/system-connections/目录中手动编辑您的连接配置。连接到不安全的网络如果您连接的网络不使用密码，请运行以下命令：$ sudo nmcli dev wifi connect <example_ssid>警告不安全的无线网络可能会危及您的个人信息。请尽可能使用安全的无线网络或 VPN。连接到隐藏网络如果您使用隐藏网络，请在运行时指定“hidden”选项的值为“yes” nmcli：$ sudo nmcli --ask dev wifi connect <example_ssid> hidden yes设置网络优先级如果您的设备同时检测到多个已知网络，它可能会连接任何检测到的已知网络。使用优先级选项可以强制您的 Raspberry Pi 优先连接某些网络。您的设备将连接到覆盖范围内优先级最高的网络。运行以下命令查看已知网络的优先级：$ nmcli --fields autoconnect-priority,name connection您应该看到类似以下内容的输出：自动连接优先级名称 0 我的网络 0 低 0 座 Pi 塔 0 示例 -999 有线连接 1使用nmcli connection modify命令设置网络的优先级。以下示例命令将名为“Pi Towers”的网络的优先级设置为10：$ nmcli connection modify "Pi Towers" connection.autoconnect-priority 10您的设备将始终尝试连接到范围…

mac下python虚拟环境venv的使用
type: item
date: 2025-06-11T14:07:27+08:00
description: Mac下Python虚拟环境venv的使用指南为什么需要虚拟环境？在开发Python项目时，不同项目可能依赖不同版本的库（如Django 3.x vs 4.x）。虚拟环境能隔离项目依赖，避免版本冲突，同时保持系统Python环境的干净整洁。创建虚拟环境（Python 3.3+内置支持）打开终端 使用系统自带的终端或iTerm2。创建项目目录并进入mkdir my_project && cd my_project创建虚拟环境 默认使用当前系统的Python3版本：python3 -m venv myenvmyenv：虚拟环境目录名（可自定义）若需指定Python版本（需已安装）:python3.9 -m venv myenv # 示例激活虚拟环境source myenv/bin/activate激活后：终端提示符前显示环境名（如 (myenv) $）所有Python操作将在隔离环境中运行验证与使用环境检查Python路径which python # 应显示: .../myenv/bin/python安装依赖包pip install requests pandas # 安装所需包 pip list # 查看当前环境安装的包生成依赖清单pip freeze > requirements.txt # 用于项目共享退出虚拟环境deactivate退出后终端提示符恢复为普通状态。删除虚拟环境直接删除虚拟环境目录即可：rm -rf myenv其他实用技巧复用环境依赖 在新环境中快速安装依赖：pip install -r requirements.txtVSCode集成 在项目目录下创建虚拟环境后，VSCode会自动检测并提示激活。多版本Python管理 结合工具（如pyenv）管理多版本Python：pyenv install 3.11.4 # 安装指定版本 pyenv local 3.11.4 # 在当前目录使用该版本 python -m venv myenv # 基于此版本创建环境环境共享 将requirements.txt加入Git仓库，他人可通过它重建相同环境。常见问题错误：zsh: command not found: python3 需安装Python3：brew install python@3.11 # 通过Homebrew安装虚拟环境激活无效？ 检查终端是否支持source命令（zsh/bash可用），或尝试：. myenv/bin/activate # 点号 + 空格 + 脚本路径结语使用venv管理虚拟环境是Python开发的最佳实践，只需几分钟就能避免未来依赖冲突的噩梦。立即为你的下一个项目创建专属环境吧！ 🚀

acme.sh 使用 DNSPod 验证实现泛域名 SSL 证书申请
type: item
date: 2025-05-26T17:17:52+08:00
description: 使用 acme.sh 设置 DNSPod 进行域名验证并申请 SSL 证书，需要配置 DNSPod 的 API 密钥，以便自动添加和删除 DNS 解析记录。以下是详细步骤：一、获取 DNSPod API 密钥登录 DNSPod 控制台 访问 DNSPod 官网，登录你的账号。创建 API 密钥进入 用户中心 → 安全设置 → API 密钥。点击 创建密钥，记录生成的 ID（如 12345）和 Token（如 abcdef1234567890）。二、配置 acme.sh 使用 DNSPod API设置环境变量 在终端中运行以下命令，替换 DP_Id 和 DP_Key 为你的 DNSPod API 密钥：export DP_Id="Your_DNSPod_API_ID" export DP_Key="Your_DNSPod_API_Token"这些变量会临时存储在终端会话中，若需永久保存，可将它们添加到 ~/.bashrc 或 ~/.zshrc 文件末尾。生成证书 执行以下命令申请证书（以通配符证书为例）：acme.sh --issue --dns dns_dp -d example.com -d *.example.com--dns dns_dp：指定使用 DNSPod 的 DNS 验证。-d example.com：主域名。-d *.example.com：通配符子域名（可选）。三、证书安装与自动续期安装证书到指定目录 证书生成后，默认保存在 ~/.acme.sh/example.com/。使用以下命令将证书复制到目标路径（如 Nginx）：acme.sh --install-cert -d example.com \ --cert-file /etc/nginx/ssl/example.com/cert.pem \ --key-file /etc/nginx/ssl/example.com/key.pem \ --fullchain-file /etc/nginx/ssl/example.com/fullchain.pem \ --reloadcmd "systemctl reload nginx"--reloadcmd：证书更新后自动执行的命令（如重启 Nginx）。自动续期 acme.sh 会自动创建定时任务（Cron Job），无需手动操作。续期时会复用已配置的 DP_Id 和 DP_Key。四、验证与常见问题验证 DNS 记录 执行命令后，acme.sh 会自动在 DNSPod 中添加一条 _acme-challenge.example.com 的 TXT 记录。申请成功后，该记录会被自动清理。权限问题确保 API 密钥有 修改 DNS 解析 的权限。如果域名不在 DNSPod 中托管，需先将域名解析迁移到 DNSPod。调试命令 若遇到问题，添加 --debug 参数查看详细日志：acme.sh --issue --dns dns_dp -d example.com --debug五、完整示例# 设置 DNSPod API 密钥 export DP_Id="12345" export DP_Key="abcdef1234567890" # 申请证书（主域名 + 通配符） acme.sh --issue --dns dns_dp -d example.com -d *.example.com # 安装证书到 Nginx acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com/key.pem \ --fullchain-file /etc/nginx/ssl/example.com/fullchain.pem \ --reloadcmd "systemctl reload nginx"通过以上步骤，你可以利用 acme.sh 和 DNSPod 的 API 快速申请并管理 SSL 证书，支持自动续期，适合生产环境使用。

负载均衡配置记录
type: item
date: 2024-09-15T21:05:39+08:00
description: B服务器IP 172.17.16.2 和 C服务器IP 172.17.16.10 来修改配置步骤。假设B和C服务器都需要既是NFS服务端又是NFS客户端，并且共享它们各自的目录。B和C服务器既是客户端又是服务端的NFS配置步骤在B和C服务器上安装NFS在B和C服务器上都执行以下命令，安装NFS服务端和客户端工具：bash复制代码sudo yum install nfs-utils -y创建共享目录在B和C服务器上分别创建共享的目录。在B服务器上：bash复制代码sudo mkdir -p /var/nfs/sharedsudo chown nfsnobody:nfsnobody /var/nfs/sharedsudo chmod 755 /var/nfs/shared在C服务器上：bash复制代码sudo mkdir -p /var/nfs/sharedsudo chown nfsnobody:nfsnobody /var/nfs/sharedsudo chmod 755 /var/nfs/shared编辑 /etc/exports 文件在B服务器上，配置让C服务器访问B服务器的共享目录：编辑 /etc/exports 文件：bash复制代码sudo vi /etc/exports在文件中添加以下内容，允许C服务器（172.17.16.10）访问B服务器的共享目录：bash复制代码/var/nfs/shared 172.17.16.10(rw,sync,no_root_squash,no_subtree_check)在C服务器上，配置让B服务器访问C服务器的共享目录：编辑 /etc/exports 文件：bash复制代码sudo vi /etc/exports在文件中添加以下内容，允许B服务器（172.17.16.2）访问C服务器的共享目录：bash复制代码/var/nfs/shared 172.17.16.2(rw,sync,no_root_squash,no_subtree_check)启动NFS服务在B和C服务器上分别启动NFS服务，并确保其自动启动：bash复制代码sudo systemctl enable nfs-serversudo systemctl start nfs-server挂载对方的共享目录接下来，我们在B和C服务器上分别挂载对方的共享目录。在B服务器上挂载C服务器的共享目录：bash复制代码sudo mount 172.17.16.10:/var/nfs/shared /mnt/shared_from_c在C服务器上挂载B服务器的共享目录：bash复制代码sudo mount 172.17.16.2:/var/nfs/shared /mnt/shared_from_b设置自动挂载为了在服务器重启后自动挂载对方的共享目录，你需要编辑每台服务器的 /etc/fstab 文件。在B服务器上，编辑 /etc/fstab 文件：bash复制代码sudo vi /etc/fstab添加以下内容，使C服务器的共享目录在启动时自动挂载：bash复制代码172.17.16.10:/var/nfs/shared /mnt/shared_from_c nfs defaults 0 0在C服务器上，编辑 /etc/fstab 文件：bash复制代码sudo vi /etc/fstab添加以下内容，使B服务器的共享目录在启动时自动挂载：bash复制代码172.17.16.2:/var/nfs/shared /mnt/shared_from_b nfs defaults 0 0验证挂载状态可以通过以下命令检查挂载是否成功：bash复制代码df -h | grep nfs或者通过访问 /mnt/shared_from_b 和 /mnt/shared_from_c 目录中的文件，检查是否可以正常访问共享目录。

Wordpress插件-AI一键补充文章标题，关键字，文章描述，导语和结语
type: item
date: 2024-01-13T16:41:00+08:00
description: 功能介绍💡亮点一、只需要填写文章内容，AI会一键补充文章标题，关键字，文章描述，导语和结语。💡亮点二、提供原始标题，AI会生成符合SEO优化的新标题问题解答1、为什么补充的关键字和摘要内容看不到到文章发布修改页面，点击右上角显示选项，勾选图片中的选项即可。2、为什么会提示响应不正确或没有获取到信息因为接口采用的是gpt3.5模型生成，利用提示词让chatgpt返回json格式数据，但不是每次都能正确返回，避免不了。3、免费KEY如何获取关注微信公众号“网创特工”，回复关键字“免费key”即可获取（因为是共享的，不一定你用的时候还有额度）需要付费key的联系微信：wxsvpid，价格如下类型价格额度有效期gpt3.5 apikey5元/月5美刀月底失效gpt4.0 apikey100元/月10美刀月底失效

开发者必看！超全免费开发必备资源库大集合
type: item
date: 2023-06-01T14:30:00+08:00
description: 收录条件非个人托管(oneman)非短期试用(指试用时间少于一年)以下为免费资源的聚合列表(SaaS, PaaS, IaaS …)。云Google Cloud PlatformApp Engine – 每天28个前端实例小时，每天9个后端实例小时Cloud Firestore – 1GB存储空间，每天50000次读取、20000次写入、20000次删除Compute Engine – f1-micro实例，30GB硬盘，5GB快照存储（仅限某些地区）Cloud Storage – 5GB/月的 Regional 存储空间（仅限美国区域），每月1GB网络出站流量 – 从北美到所有区域目的地（不包括中国和澳大利亚）Cloud Shell – 随附5GB永久性磁盘存储空间。每周限制60小时Cloud Pub/Sub – 每月10GB消息Cloud Functions – 每月200万次调用（包括后台和HTTP调用），40万GB秒、20万GHz秒的计算时间，每月5GB网络出站流量Cloud Run – 每月200万个请求，36万GB-秒内存，18万vCPU-秒计算时间，每月1GB 网络出站流量（从北美）Google Kubernetes Engine – 每个结算帐号可以免除一个地区级集群的管理费用。每个用户节点均按标准的 Compute Engine 价格收费。BigQuery – 每月1TB查询，每月10GB存储空间Cloud Build – 每天120分钟构建时间Cloud Source Repositories – 最多5个用户，50GB存储，50GB出战。出站流量完整列表Amazon Web ServicesAmazon DynamoDB – 25GB NoSQL数据库Amazon Lambda – 100万次请求/月Amazon SNS – 100万次发布Amazon Cloudwatch – 10个自定义指标和10个警报Amazon Glacier – 10GB对象存储Amazon SQS – 100万个消息传递队列请求Amazon CodeBuild – 每月构建时间为100分钟Amazon Code Commit – 每月5位活跃用户Amazon Code Pipeline – 每月1个活动实例完整列表Microsoft AzureApp service – 10个Web，移动或API应用Functions – 每月100万个请求DevTest Labs – 支持快速，轻松和精益的开发测试环境Active Directory – 500000个对象Active Directory B2C – 每月存储50000个用户Azure DevOps – 5个活动用户Microsoft IoT Hub – 每天8000条消息Load Balancer – 1个免费的公共负载均衡IP（VIP）Notification Hubs – 100万个推送通知Bandwidth – 每月5GB出站流量Azure Cosmos DB – 5GB存储和400RU的预配置吞吐量，为期1年完整列表Oracle CloudCompute – 2个VM.Standard.E2.1.Micro 1GB RAMBlock Volume – 2个, 总共100GB (用于计算)Object Storage – 10GBLoad balancer – 1个速度为10Mbps的实例Databases – 2个数据库, 每个20GBBandwidth – 10TB出站流量Notifications – 每月有100万个传递选项，每月发送1000封电子邮件完整列表IBM CloudKubernetes – 1个免费集群Cloud Functions – 每月执行500万次Object Storage – 25GB/月Cloudant database – 1GB数据存储Db2 database – 100MB数据存储API Connect – 每月50,000次API调用Availability Monitoring – 每月300万个数据点Log Analysis – 每日500MB日志完整列表Alibaba CloudCompute – 1个ecs.t5-lc1m1.small，40GB的超级云磁盘或SSD磁盘和1 MB的互联网带宽，持续12个月。Function Compute – 每月免费调用100万次，每月免费40万GB-秒API Gateway – 激活API网关的第一年，每月可获得100万次免费调用。.tech Domain Name – 免费一年完整列表开源存储库Azure DevOps — 无限的私人存储库（Git和TFS），最多5个用户/团队b…

docker下进行mysql主从配置实现thinkphp读写分离
type: item
date: 2022-12-22T17:05:00+08:00
description: 写在前面在上篇 docker环境下搭建PHP网站，实现nginx负载均衡和mysql主从配置中我们使用docker搭建了1台负载均衡器，2个web服务器和两个主、从数据库服务器 实现了nginx负载均衡访问网站web服务器接下来我们看一下如何进行mysql数据库主从配置和读写分离，数据库服务器的搭建部分请看上篇mysql主从配置修改主数据库服务器配置文件sudo vim /data/mysql/mysql_master/conf.d/docker.cnf写入内容{callout color="#f0ad4e"}[mysqld]server-id = 1log-bin=master-binlog-bin-index=master-bin.index{/callout}修改从数据库服务器配置文件sudo vim /data/mysql/mysql_salve/conf.d/docker.cnf写入内容{callout color="#f0ad4e"}[mysqld]server-id = 2relay-log-index=slave-relay-bin.indexrelay-log=slave-relay-bin{/callout}修改完成之后，进行容器重启docker restart mysql_master mysql_salve进入mysql_master主数据库服务器容器内部docker exec -it mysql_master bash切换到mysql命令行界面mysql -uroot -p123456在master数据库（主库）中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限，用于在主从库之间同步数据。create user 'myslave'@'%' identified by '123456'; grant all privileges on *.* to 'myslave'@'%' with grant option; exit; mysql -u myslave -p123456 -h 192.168.0.111 -P8114 --get-server-public-key然后输入命令show master status;获取如下两个参数获取到之后来到从数据库服务器操作进入mysql_slave主数据库服务器容器内部docker exec -it mysql_slave bash切换到mysql命令行界面mysql -uroot -p123456change master to master_host='192.168.0.111',master_port=8114, master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=157; start slave;此处的参数来自主数据库服务器指出来的参数完成之后输入show slave status\G 注意没有; 进行查看是否成功此处为yes即代表成功配置接下来我们进行测试，首先在主数据库服务器创建一个数据库create database test_1;创建成功后来到从数据库服务器，查看是否进行了数据复制可以看到，实现了从主库到从库的数据同步读写分离实现了主从配置后就可以进行读写分离操作了以thinkphp5为例修改.env文件database.php 配置文件

docker环境下搭建PHP网站，实现nginx负载均衡和mysql主从配置
type: item
date: 2022-12-22T17:01:00+08:00
description: 一、基本概念负载均衡大型网站都要面对庞大的用户量，高并发，海量数据等挑战。为了提升系统整体的性能，尽力将网络流量平均分发到多个服务器上，以提高系统整体的响应速度和可用性主从配置主从复制，是用来建立一个和主数据库完全一样的数据库环境，称为从数据库。在赋值过程中，一个服务器充当主服务器，而另外一台服务器充当从服务器。简单来说，数据库主从配置是为了解决读写分离，从而提高数据库性能的一种优化方式。读写分离大多数互联网业务，往往读多写少，这时候，数据库的读会首先称为数据库的瓶颈，这时，如果我们希望能够线性的提升数据库的读性能，消除读写锁冲突从而提升数据库的写性能，那么就可以使用“分组架构”（读写分离架构）二、实现原理如上图所示，用户访问网站，首先由负载均衡器接收，然后根据负载均衡算法，将流量均衡的分配给代理的web服务器以平衡各个服务器的负载压力，此时用户访问数据库时，通过读写分离分配给不同的服务器，当有写入操作时，主服务器通过复制的方式将数据同步到从服务器，从而实现主从服务器的数据统一。三、环境搭建了解完基本概念和实现原理后我们开始进行实验环境搭建，我们需要有1个负载均衡服务器，2个web应用服务器，2个数据库服务器。实验环境为树莓派4B1、docker安装和国内镜像配置curl -sSL https://get.daocloud.io/docker | shsudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2、镜像拉取拉取nginx镜像docker pull nginx:latest拉取mysql镜像docker pull mysql:latest3、启动容器首先我们创建均衡服务器容器，映射容器80端口到宿主机8111端口上,把容器/etc/nginx/conf.d目录挂载到宿主机/data/nginx/conf.d目录docker run --name nginx_balance -p 8111:80 -v /data/nginx/conf.d/:/etc/nginx/conf.d/ -itd nginx再创建两个web服务器容器来承载业务,映射出8112和8113端口docker run --name nginx_web1 -p 8112:80 -itd nginx docker run --name nginx_web2 -p 8113:80 -itd nginx最后再创建两个mysql服务器容器docker run -p 8114:3306 --name mysql_master -v /data/mysql/mysql_master/conf.d/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -itd mysql docker run -p 8115:3306 --name mysql_salve -v /data/mysql/mysql_salve/conf.d/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -itd mysql创建完成之后通过docker ps命令查看创建的容器列表4、web服务器和负载均衡服务器配置修改nginx_web1 和 nginx_web2 服务器默认nginx输出页面来用来区分负载均衡服务器访问了哪个web服务器修改web服务器默认页面进入nginx_web1容器内部，修改默认页面内容docker exec -it nginx_web1 bash root@e94a6acc59fc:/# cd /usr/share/nginx/html/ root@e94a6acc59fc:/usr/share/nginx/html# rm index.html root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx_web1 ninetySeven > index.html root@e94a6acc59fc:/usr/share/nginx/html# exit 再进入nginx_web2容器内部修改默认页面内容docker exec -it nginx_web2 bash root@e94a6acc59fc:/# cd /usr/share/nginx/html/ root@e94a6acc59fc:/usr/share/nginx/html# rm index.html root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx…

node开发环境(mac)和线上环境(linux)搭建
type: item
date: 2022-10-21T16:54:00+08:00
description: 以前一直在做php后台，对node没有认真研究，现在前端发展速度这么快，再加上node的飞速发展，javascript统一中原指日可待啊。em~~，废话不多说开始开发环境和线上环境搭建吧，写一下自己的搭建之旅，记录一下线下环境搭建步骤：1、安装brewbrew 又叫Homebrew，是Mac OSX上的软件包管理工具，能在Mac中方便的安装软件或者卸载软件关于brew的安装配置不做说明，相信你也装了，没装的可以去看https://www.cnblogs.com/fireworld/p/8609190.html2、用nvm安装node.js安装nvm是node.js和npm的管理工具，安装它可以更好的帮助我们来控制node的版本当然不安装mvn也是可以滴。2.1、安装mvn并唤醒mvnbrew install nvm source $(brew --prefix nvm)/nvm.sh2.2查看可用的node.js版本nvm ls-remote2.3安装需要的node.js版本建议安装最近一次长期维护的版本nvm install v8.11.12.4切换node js版本nvm use --delete-prefix v8.11.1检查是否安装成功node和npm（npm集成在了node中）：node -v npm -v至此线下环境搭建完成线上环境搭建步骤：1、安装mvncurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash提示：安装完成后重启shell生效，重启后检查mvn是否安装成功：command -v nvm2、安装node.js此时步骤不用我说了吧，再从线下搭建步骤的2.2开始安装node.js 就可以了npm配置由于国情，从npm上安装资源包会很慢，所以我们可以换成国内镜像来拉取资源，可以直接用淘宝的cnpm来替代npm，但是由于我们还可能会自己搭建npm服务器，这样一来会很容易混淆，所以我们需要一个来管理npm的包，这里用nrm1、安装nrmnpm install nrm -g-g 代表全局安装，以后的每个node项目都用到2、查看可用nrmnrm ls3、切换nrm这里我使用的是淘宝的nrm use taobao至此npm配置完成