当前位置: 首页 > news >正文

安装和配置 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 的运行状态。
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,下面要对 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
没有密码,直接采用系统用户登录,还是感觉到不太方便,所以,我们设置一下密码

设置 Mysql root 用户密码

# 设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
# 刷新权限
FLUSH PRIVILEGES;

设置 Mysql Root 用户密码

用 Navicat 连接 Mysql 服务

Navicat 是一款非常好用的数据库软件。在以往,我们经常使用它的破解版,但是现在,官方已经放出了 Navicat Premium Lite 版本的免费版,因此,大家就不要找破解版了。

根据我的试用,其免费版是足够我们日常开发使用的,并且,它是完全支持 Mac、Windows、Linux 全平台的,因此我强烈推荐哦!

官网介绍以及下载地址:https://www.navicat.com/en/products/navicat-premium-lite

我们在本机打开 Navicat 软件,新建 Mysql 连接,打开如下图的面板:
填写 Mysql 服务基础信息
在面板中,我们填写基础信息。然后点击 SSH 标签,然后按照下图进行设置:

连接 MYSQL 的 SSH 设置

通过配置 SSH 隧道,就可以正常连接 MySQL 数据库了。如下图所示,已经顺利登录了。
成功连接 Mysql 数据库

小结

通过这篇文章,我相信各位看官已经基本掌握了 Nginx 和 Mysql 的安装和基本的设置和连接了。

我的以配置 Ubuntu Server 的 NodeJS 服务器为主题的系列文章,目前已经完成六篇,大家喜欢的话,一定要多多点赞收藏,评论留言,关注我哦!谢谢大家!

大概目录如下:

《PVE虚拟机 安装 Ubuntu Server 系统》
《SSH 配置,让我们远程连上虚拟机》
《服务器软件更新,以及常用软件安装》
《配置服务器终端环境 zsh , oh my zsh, vim》
《NVM 安装 NodeJS环境,以及 PNPM 的安装》
《Nginx 和 Mysql 的安装和配置》
《pm2 服务端进程管理的使用和配置》

相关文章:

  • 原子操作与非原子操作
  • ollama的安装及加速下载技巧
  • 【计算机系统结构】知识点总结
  • 今日主题二分查找(寻找峰值 力扣162)
  • 如何提高工作效率
  • PyTorch——非线性激活(5)
  • 用Python训练自动驾驶神经网络:从零开始驾驭未来之路
  • unity UI Rect Transform“高”性能写法
  • Percona Toolkit利器pt-config-diff:MySQL配置差异分析与实战指南
  • 安全大模型的思考
  • WPS 利用 宏 脚本拆分 Excel 多行文本到多行
  • React 第五十一节 Router中useOutletContext的使用详解及注意事项
  • 【前端并发请求控制:必要性与实现策略】
  • web攻防之SSTI 注入漏洞
  • web第九次课后作业--SpringBoot基于mybatis实现对数据库的操作
  • JavaScript 数据处理 - 数值转不同进制的字符串(数值转十进制字符串、数值转二进制字符串、数值转八进制字符串、数值转十六进制字符串)
  • 学习资料搜集-ARMv8 cache 操作
  • Go Modules 详解 -《Go语言实战指南》
  • CentOS 7镜像源替换
  • Ntfs!NtfsLookupAllocation函数分析之读取runs的一个例子
  • 河北手机网站制作哪家好/网页制作软件推荐
  • 网站在哪设置关键词/友情链接交易购买
  • 日本 网站 设计 模仿欧美/做网络推广工作怎么样
  • 虚拟服务器建网站/公司网站的作用
  • 做网站要源代码/seo软件代理
  • 新疆建设兵团职改办网站/seo产品推广