安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
前言
昨天更新了四篇博客,我们顺利的 安装了 ubuntu server 服务器,并且配置好了 ssh 免密登录服务器,安装好了 服务器常用软件安装, 配置好了 zsh 和 vim 以及 通过 NVM 安装好Nodejs,还有PNPM包管理工具 。
作为服务器的运行,一定少不了 Nginx 这款提供 HTTP 和反向代理的的 Web 服务器软件。在数据库方面,MySQL 是我们最常用的数据库软件,今天,我们就来安装和配置这两款我们所需要的服务。
安装 Nginx
首先,我们通过终端登录服务器,然后开始执行如下命令
# 更新软件源列表
sudo apt update
# 升级已有软件包
sudo apt upgrade -y
## 上面两步建议过一段时间或者在安装新的软件之前要执行一下。
## 因为我们昨天执行过,并非一定要执行。# 安装 Nginx
sudo apt install nginx -y
# 启动 Nginx 服务
sudo systemctl start nginx
# 将 Nginx 服务设置为开机启动
sudo systemctl enable nginx
# 验证 Nginx 启动状态
sudo systemctl status nginx
通过上面的命令,我们已经顺利安装好了 Nginx,下图就是 Nginx 的运行状态。
然后,我们通过访问 http://192.168.8.7 这个内网 IP,就可以看到已经正常运行了。
Nginx 的一些常用配置
Nginx 的配置是一个非常复杂的事情,想要详细的了解,可以参考它的官方网站的文档:https://nginx.org/en/docs/
我这边只提几个咱们前端经常用到的配置。
首先,配置文件位于 /etc/nginx/nginx.conf
这里。我们直接编辑这个文件即可。
Linux 下,大多数的软件的配置文件都在 /etc 目录下。
# 定义 Nginx 工作进程的运行用户为 www-data 账户
user www-data;
# 设置工作进程数量为 auto(自动匹配 CPU 核心数,优化性能)
worker_processes auto;
# 指定错误日志存储路径为
error_log /var/log/nginx/error.log;
# 记录主进程 ID 的存储位置(用于服务管理
pid /run/nginx.pid;# 引入一些模块的配置文件.
include /usr/share/nginx/modules/*.conf;# 设置单个工作进程的最大并发连接数为 1024
events {worker_connections 1024;
}## 以上配置我加了注释,但一般情况下,保持默认即可,不需要调整http {# 定义日志的格式,可根据情况自行调整log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 日志文件存储位置access_log /var/log/nginx/access.log main;# 启用零拷贝文件传输(减少内核态与用户态数据拷贝)sendfile on;# 优化 TCP 数据包发送策略tcp_nopush on;# 禁用 Nagle 算法,降低小数据包传输延迟tcp_nodelay on;# 设置 Keep-Alive 连接超时为 65 秒keepalive_timeout 65;# 扩展 MIME 类型哈希表大小,提升处理性能types_hash_max_size 2048;# 加载预定义的 MIME 类型映射文件include /etc/nginx/mime.types;# 默认响应类型为二进制流(未识别类型时使用)default_type application/octet-stream;# 限制客户端请求体最大为 20MB (上传文件大小控制)client_max_body_size 20M;# 引入一些模块的配置文件include /etc/nginx/conf.d/*.conf;## 以上是一些基本的配置,可以按需调整# server 是一个站点的配置# 每一个 server 可以处理一个特定的服务## 下面第一个站点的配置server {# 监听 80 端口listen 80 default_server;# 监听 ipv6 的 80 端口listen [::]:80 default_server;# 第一个站点配置的域名,多个域名用空格分隔,末尾要有分号server_name fungleo.com www.fungleo.com;# 网站文件目录(我这个配置没用到,保持了默认)root /usr/share/nginx/html;# 加载一些配置文件,我没管.include /etc/nginx/default.d/*.conf;# 访问域名根的时候,反向代理到 3888 端口的服务# 这也是为什么上面的网站文件目录我说我没用到的原因location / {proxy_pass http://127.0.0.1:3888;}# 将 /api 反向代理到 3000 端口的 /apilocation ^~ /api {proxy_pass http://127.0.0.1:3000/api;}# 将 /upfile 反向代理到 3000 端口的 /upfilelocation ^~ /upfile {proxy_pass http://127.0.0.1:3000/upfile;}# 将 /user 指向到了 /srv/web-site/fungleo/user-fe 目录# 这是一个用 vue 开发的 spa 类型的项目location /user {alias /srv/web-site/fungleo/user-fe;# 由于该项目入口是 index.html 文件,# 所以如果访问 /user/love 这样的路径会找不到文件# 所以,要将所有的请求指向到 index.html 文件# 参考文档 https://router.vuejs.org/zh/guide/essentials/history-mode#nginxtry_files $uri $uri/ /user/index.html;}# 异常错误配置error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}# 第二个站点的配置server {server_name manage.fungleo.com;# 域名根配置location / {# 文件目录root /srv/web-site/fungleo/manage-fe;# 默认首页文件index index.html Index.html;# 和上面一样try_files $uri $uri/ /index.html;}# 下面是两个反向代理,不重复注释了。location ^~ /api {proxy_pass http://127.0.0.1:3000/api;}location ^~ /upfile {proxy_pass http://127.0.0.1:3000/upfile;}}
}
由于我们搞服务器,只是内网测试使用,真正部署生产,还是交给运维比较稳妥,所以,我这里没有讲 ssl 的内容。
如果要深入这一部分,可以去 https://github.com/acmesh-official/acme.sh/ 这里,有全套的解决方案和文档。
安装 Mysql
目前很流行 Docker 安装,也比较简单。只是现在国内由于网络的一些特殊原因,速度比较慢。所以,我这边还是使用正常的安装方式。
# 安装 Mysql
sudo apt install mysql-server -y
# 启动 Mysql
sudo systemctl start mysql
# 设置 Mysql 服务开机自启
sudo systemctl enable mysql
# 验证 Nginx 启动状态
sudo systemctl status mysql
Mysql 配置
通过上面的命令,我们已经顺利安装好了 Mysql,下面要对 Mysql 进行一些初始设置,我们运行 sudo mysql_secure_installation
命令开始。
# Mysql 初始设置命令
sudo mysql_secure_installation
# 返回如下内容,问你是否开启高密码验证,我们输入 YSecuring the MySQL server deployment.Connecting to MySQL using a blank password.VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No:# 输入 Y 以后,又返回了如下内容,我们输入 2 选择最强
There are three levels of password validation policy:LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:# 告诉我们,没有为 Root 用户设置密码,如果需要设置,可以使用 "ALTER_USER" 命令设置。
# 默认 root 用户使用 auth_socket 方式登录
Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.# 是否删除 anonymous 用户,我们输入 Y
Remove anonymous users? (Press y|Y for Yes, any other key for No) :Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.# 是否禁止 root 用户远程登录,我们输入 Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :# 是否删除测试数据库,我们输入 Y
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.Remove test database and access to it? (Press y|Y for Yes, any other key for No) :# 是否重载权限表 ,我们输入 Y- Dropping test database...
Success.- Removing privileges on test database...
Success.Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.Reload privilege tables now? (Press y|Y for Yes, any other key for No) :# 告诉我们成功了,全部干完。
Success.All done!
命令行连接 Mysql 服务
好,Mysql 已经配置成功了。接下来,我们登录看一下
# 因为采用 auth_socket 方式登录,因此无需密码
sudo mysql -u root
没有密码,直接采用系统用户登录,还是感觉到不太方便,所以,我们设置一下密码
设置 Mysql root 用户密码
# 设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
# 刷新权限
FLUSH PRIVILEGES;
用 Navicat 连接 Mysql 服务
Navicat 是一款非常好用的数据库软件。在以往,我们经常使用它的破解版,但是现在,官方已经放出了 Navicat Premium Lite 版本的免费版,因此,大家就不要找破解版了。
根据我的试用,其免费版是足够我们日常开发使用的,并且,它是完全支持 Mac、Windows、Linux 全平台的,因此我强烈推荐哦!
官网介绍以及下载地址:https://www.navicat.com/en/products/navicat-premium-lite
我们在本机打开 Navicat 软件,新建 Mysql 连接,打开如下图的面板:
在面板中,我们填写基础信息。然后点击 SSH 标签,然后按照下图进行设置:
通过配置 SSH 隧道,就可以正常连接 MySQL 数据库了。如下图所示,已经顺利登录了。
小结
通过这篇文章,我相信各位看官已经基本掌握了 Nginx 和 Mysql 的安装和基本的设置和连接了。
我的以配置 Ubuntu Server 的 NodeJS 服务器为主题的系列文章,目前已经完成六篇,大家喜欢的话,一定要多多点赞收藏,评论留言,关注我哦!谢谢大家!
大概目录如下:
《PVE虚拟机 安装 Ubuntu Server 系统》
《SSH 配置,让我们远程连上虚拟机》
《服务器软件更新,以及常用软件安装》
《配置服务器终端环境 zsh , oh my zsh, vim》
《NVM 安装 NodeJS环境,以及 PNPM 的安装》
《Nginx 和 Mysql 的安装和配置》
《pm2 服务端进程管理的使用和配置》
相关文章:

安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
前言 昨天更新了四篇博客,我们顺利的 安装了 ubuntu server 服务器,并且配置好了 ssh 免密登录服务器,安装好了 服务器常用软件安装, 配置好了 zsh 和 vim 以及 通过 NVM 安装好Nodejs,还有PNPM包管理工具 。 作为服务器的运行…...
Linux 测试本机与192.168.1.130 主机161/udp端口连通性
Linux 测试本机与 192.168.1.130 主机 161/UDP 端口连通性 161/UDP 端口是 SNMP(简单网络管理协议)的标准端口。以下是多种测试方法: 🛠️ 1. 使用 nmap 进行专业测试(推荐) sudo nmap -sU -p 161 -Pn 1…...
OpenCV 滑动条调整图像亮度
一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…...

图解gpt之注意力机制原理与应用
大家有没有注意到,当序列变长时,比如翻译一篇长文章,或者处理一个长句子,RNN这种编码器就有点力不从心了。它把整个序列信息压缩到一个固定大小的向量里,信息丢失严重,而且很难记住前面的细节,特…...
硬件学习笔记--65 MCU的RAM及FLash简介
MCU(微控制器单元)内部的 RAM 和 Flash 是最关键的两种存储器,它们直接影响MCU的性能、功耗和编程方式。以下是它们的详细讲解及作用: 1. RAM(随机存取存储器) 1.1 特性 1)易失性:…...

【Oracle】视图
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 视图基础概述1.1 视图的概念与特点1.2 视图的工作原理1.3 视图的分类 2. 简单视图2.1 创建简单视图2.1.1 基本简单视图2.1.2 带计算列的简单视图 2.2 简单视图的DML操作2.2.1 通过视图进行INSERT操作2.2.2 通…...
数据库 MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比
MongoDB (NoSQL) 与 MySQL (SQL) 的写法对比及优劣势分析 基本概念差异 MySQL/SQL:关系型数据库,使用结构化查询语言(SQL),数据以表格形式存储,有预定义的模式(schema)MongoDB/NoSQL:文档型数据库,无固定…...
基于粒子滤波的PSK信号解调实现
基于粒子滤波的PSK信号解调实现 一、引言 相移键控(PSK)是数字通信中广泛应用的调制技术。在非高斯噪声和动态相位偏移环境下,传统锁相环(PLL)性能受限。粒子滤波(Particle Filter)作为一种序列蒙特卡洛方法,能有效处理非线性/非高斯系统的状态估计问题。本文将详细阐…...

更强劲,更高效:智源研究院开源轻量级超长视频理解模型Video-XL-2
长视频理解是多模态大模型关键能力之一。尽管OpenAI GPT-4o、Google Gemini等私有模型已在该领域取得显著进展,当前的开源模型在效果、计算开销和运行效率等方面仍存在明显短板。近日,智源研究院联合上海交通大学等机构,正式发布新一代超长视…...

2025.6.3学习日记 Nginx 基本概念 配置 指令 文件
1.初始nginx Nginx(发音为 “engine x”)是一款高性能的开源 Web 服务器软件,同时也具备反向代理、负载均衡、邮件代理等功能。它由俄罗斯工程师 Igor Sysoev 开发,最初用于解决高并发场景下的性能问题,因其轻量级、高…...

【连接器专题】案例:产品测试顺序表解读与应用
在查看SD卡座连接器的规格书,一些测试报告时,你可能会看到如下一张产品测试顺序表。为什么会出现一张测试顺序表呢? 测试顺序表的使用其实定义测试环节的验证的“路线图”和“游戏规则”,本文就以我人个经验带领大家一起看懂这张表并理解其设计逻辑。 测试顺序表结构 测试…...

星动纪元的机器人大模型 VPP,泛化能力效果如何?与 VLA 技术的区别是什么?
点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 VPP 利用了大量互联网视频数据进行训练,直接学习人类动作,减轻了对于高质量机器人真机数据的依赖,且可在不同人形机器人本体之间自如切换,这有望…...

4000万日订单背后,饿了么再掀即时零售的“效率革命”
当即时零售转向价值深耕,赢面就是综合实力的强弱。 文|郭梦仪 编|王一粟 在硝烟弥漫的外卖行业“三国杀”中,饿了么与淘宝闪购的日订单量竟然突破了4000万单。 而距淘宝闪购正式上线,还不到一个月。 在大额福利优惠…...

入门AJAX——XMLHttpRequest(Get)
一、什么是 AJAX AJAX Asynchronous JavaScript And XML(异步的 JavaScript 和 XML)。 1、XML与异步JS XML: 是一种比较老的前后端数据传输格式(已经几乎被 JSON 代替)。它的格式与HTML类似,通过严格的闭合自定义标…...

5分钟申请edu邮箱【方案本周有效】
这篇文章主要展示的是成果。如果你是第1次看见我的内容,具体的步骤请翻看往期的两篇作品。先看更正补全,再看下一个。 建议你边看边操作。 【更正补全】edu教育申请通过方案 本周 edu教育邮箱注册可行方案 #edu邮箱 伟大无需多言 我已经验证了四个了…...

闲谈PMIC和SBC
今天不卷,简单写点。 在ECU设计里,供电芯片选型是逃不开的话题,所以聊聊PMIC或者SBC的各自特点,小小总结下。 PMIC,全称Power Management Intergrated Circuits,听名字就很专业:电源管理&…...

Java垃圾回收机制深度解析:从理论到实践的全方位指南
Java垃圾回收(GC)是Java虚拟机(JVM)的核心功能,它自动管理内存分配与回收,避免了C/C中常见的内存泄漏问题。本文将深入剖析Java垃圾回收的工作原理、算法实现、收集器类型及调优策略,助你全面掌握JVM内存管理的精髓。 一、垃圾回收基础概念 …...
Ubuntu系统 | 本地部署ollama+deepseek
1、Ollama介绍 Ollama是由Llama开发团队推出的开源项目,旨在为用户提供高效、灵活的本地化大型语言模型(LLM)运行环境。作为Llama系列模型的重要配套工具,Ollama解决了传统云服务对计算资源和网络连接的依赖问题,让用户能够在个人电脑或私有服务器上部署和运行如Llama 3等…...

论文阅读:CLIP:Learning Transferable Visual Models From Natural Language Supervision
从自然语言监督中学习可迁移的视觉模型 虽然有点data/gpu is all you need的味道,但是整体实验和谈论丰富度上还是很多的,也是一篇让我多次想放弃的文章,因为真的是非常长的原文和超级多的实验讨论,隔着屏幕感受到了实验的工作量之…...

在图像分析算法部署中应对流行趋势的变化|文献速递-深度学习医疗AI最新文献
Title 题目 Navigating prevalence shifts in image analysis algorithm deployment 在图像分析算法部署中应对流行趋势的变化 01 文献速递介绍 机器学习(ML)已开始革新成像研究与实践的诸多领域。然而,医学图像分析领域存在显著的转化鸿…...

CAMEL-AI开源自动化任务执行助手OWL一键整合包下载
OWL 是由 CAMEL-AI 团队开发的开源多智能体协作框架,旨在通过动态智能体交互实现复杂任务的自动化处理,在 GAIA 基准测试中以 69.09 分位列开源框架榜首,被誉为“Manus 的开源平替”。我基于当前最新版本制作了免安装一键启动整合包。 CAMEL-…...
Selenium 中 JavaScript 点击的优势及使用场景
*在 Selenium 自动化测试中,使用 JavaScript 执行点击操作(如driver.execute_script("arguments[0].click();", element))相比直接调用element.click()有以下几个主要优势: 1. 绕过元素不可点击的限制 问题场景&#x…...

Linux系统-基本指令(5)
文章目录 mv 指令cat 指令(查看小文件)知识点(简单阐述日志)more 和 less 指令(查看大文件)head 和 tail 指令(跟查看文件有关)知识点(管道)时间相关的指令&a…...
C++ set数据插入、set数据查找、set数据删除、set数据统计、set排序规则、代码练习1、2
set数据插入,代码见下 #include<iostream> #include<set> #include<vector>using namespace std;void printSet(const set<int>& s) {for (set<int>::const_iterator it s.begin(); it ! s.end(); it) {cout << *it <…...
[android]MT6835 Android 指令启动MT6631 wifi操作说明
问题说明 MT6835使用指令启动wifi 使用andorid指令启动 2.4G启动方式 cmd wifi start-softap ctltest wpa2 11111111 -b 2 5G启动指令 cmd wifi start-softap ctltest wpa2 11111111 -b 5 使用linux指令启动 指令启动wifi 新建br-lan brctl addbr br-lan 关闭wifi a…...

C# winform教程(二)
一、基础控件 常用的基础控件主要有按钮,文本,文本输入,组,进度条,等等。 基础控件 名称含义详细用法Button按钮Buttoncheckbox多选按钮Combobox下拉选择groupbox组控件label标签,显示文字panel控件集合&a…...
Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 环形链表的可视化2.2 核心难点 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:快慢指针法(…...

【仿生机器人】刀剑神域计划——仿生机器人.亚丝娜
我在做仿生机器人头,硬件部分已经搭建完毕,包括头部和颈部,用的23个舵机驱动机器人做表情,也支持头部的旋转(就是颈部的功能),安装了摄像头在眼睛中,还有麦克风接受周围环境声音&…...

ARM架构推理Stable Diffusiond
代码仓库: https://github.com/siutin/stable-diffusion-webui-docker.git Docker容器地址: https://hub.docker.com/r/siutin/stable-diffusion-webui-docker/tags git clone https://github.com/siutin/stable-diffusion-webui-docker.git cd stabl…...

仓颉项目调试配置与多文件场景下的问题解析
1. 调试配置指南 在 VS Code 中配置好仓颉开发工具链后,只需按下 F5 或 Fn F5 即可启动调试。 在 CodeArts IDE for Cangjie 中,需先通过右上角的 编辑配置 -> 新增配置项 -> 选择 Cangjie (cjdb) Debug -> 选择 launch 模式 -> 点击 确认…...