安裝和配置 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 服務端進程管理的使用和配置》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83542.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙版Taro 搭建開發環境

鴻蒙版Taro 搭建開發環境 一、配置鴻蒙環境 下載安裝 DevEco 建議使用最新版本的 IDE,當前為 5.0.5Release 版本。 二、創建鴻蒙項目 打開 DevEco,點擊右上角的 Create Project,在 Application 處選擇 Empty Ability,點擊 Ne…

Could not get unknown property ‘mUser‘ for Credentials [username: null]

最近遇到jekins打包報錯: Could not get unknown property mUser for Credentials [username: null] of type org.gradle.internal.credentials.DefaultPasswordCredentials_Decorated。 項目使用的是gradle,通過pipeline打docker包;因為ma…

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例 一、項目結構 src/main/java/com/example/demo/ ├── config/ │ ├── DataSourceConfig.java # 數據源配置 │ ├── MyBatisPlusConfig.java # MyBatis-Plus配置 ├── constant/ │…

android binder(1)基本原理

一、IPC 進程間通信(IPC,Inter-Process Communication)機制,用于解決不同進程間的數據交互問題。 不同進程之間用戶地址空間的變量和函數是不能相互訪問的,但是不同進程的內核地址空間是相同和共享的,我們可…

高密爆炸警鐘長鳴:AI為化工安全戴上“智能護盾”

一、高密爆炸:一聲巨響,撕開化工安全“傷疤” 2025年5月27日,山東高密友道化學有限公司的車間爆炸聲,像一把利刃劃破了化工行業的平靜。劇烈的沖擊波將車間夷為平地,黑色蘑菇云騰空而起,刺鼻的化學氣味彌漫…

雙擎驅動:華為云數字人與DeepSeek大模型的智能交互升級方案

一、技術融合概述 華為云數字人 華為云數字人,全稱:數字內容生產線 MetaStudio。數字內容生產線,提供數字人視頻制作、視頻直播、智能交互、企業代言等多種服務能力,使能千行百業降本增效。另外,數字內容生產線&#…

Linux運維筆記:1010實驗室電腦資源規范使用指南

文章目錄 一. 檢查資源使用情況,避免沖突1. 檢查在線用戶2. 檢查 CPU 使用情況3. 檢查 GPU 使用情況4. 協作建議 二. 備份重要文件和數據三. 定期清理硬盤空間四. 退出 ThinLinc 時注銷,釋放內存五. 校外使用時配置 VPN注意事項 總結 實驗室的電腦配備了…

手機郵箱APP操作

收發電子郵件方式 郵箱可以在網絡段登錄,也可以在手機端登錄。 大學網絡服務 收發電子郵件有三種方式: 1、Web方式: 1)登錄“網絡服務”(https://its.pku.edu.cn),點頁面頂端“郵箱”。 2&…

Dockerfile 使用多階段構建(build 階段 → release 階段)后端配置

錯誤Dockerfile配置示例: FROM python:3.11 as buildENV http_proxyhttp://172.17.0.1:7890 ENV https_proxyhttp://172.17.0.1:7890WORKDIR /appENV PYTHONPATH/app# Install Poetry # RUN curl -sSL https://install.python-poetry.org | POETRY_HOME/opt/poetry…

webstrom中git插件勾選提交部分文件時卻出現提交全部問題怎么解決

原因是我有個.husky的文件制定了執行提交的時候就是提交所有的文件 修改.husky/pre-commit文件就可以啦 #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh"# 獲取通過 WebStorm 提交的暫存文件(僅勾選的部分) STAGED_FILES$(gi…

OSG編譯wasm嘗試

最近遇到一個情況,需要嘗試一下OSG到webassembly 發現官網有教程 于是順著看了看,默認教程是xubuntu的一個系統跑的,但是我本著試一試的想法,拉下來直接在windows上跑,奇奇怪怪的報錯簡直頭皮發麻 然后怎么辦呢&#x…

QT中子線程觸發主線程彈窗并阻塞等待用戶響應-傳統信號槽實現

目錄 QT中子線程觸發主線程彈窗并阻塞等待用戶響應傳統信號槽實現實現思路具體步驟1. 定義信號與槽2. 異步任務中觸發彈窗3. 主線程處理彈窗4. 連接信號與槽關鍵點總結 更簡單實現 QT中子線程觸發主線程彈窗并阻塞等待用戶響應 傳統信號槽實現 場景需求:在子線程執…

STM32學習之WWDG(原理+實操)

📢:如果你也對機器人、人工智能感興趣,看來我們志同道合? 📢:不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸對你有幫助,可點贊 👍…

【端午安康】龍舟爭渡Plug-In

文章目錄 正文附錄A:關于Python的錄屏方法總結(來自DeepSeek的回答)1. 使用 pyautogui 和 OpenCV 錄制屏幕2. 使用 mss 庫(高效屏幕捕獲)3. 使用 PIL.ImageGrab 錄制屏幕4. 使用 Windows 原生快捷鍵錄制(非…

Apache SeaTunnel部署技術詳解:模式選擇、技巧與最佳實踐

Apache SeaTunnel(原Waterdrop)作為高性能、分布式數據集成平臺,支持海量數據的離線與實時同步。其靈活多樣的部署模式可適配不同規模的生產環境需求。本文將系統解析SeaTunnel的部署架構、技術要點及最佳實踐,幫助用戶高效構建穩定可靠的數據管道。 一、部署模式全景概覽 …

【機械視覺】Halcon—【六、交集并集差集和仿射變換】

【機械視覺】Halcon—【六、交集并集差集和仿射變換】 目錄 【機械視覺】Halcon—【六、交集并集差集和仿射變換】 介紹 交集并集差集介紹: 1. 交集(Intersection) 2. 并集(Union) 3. 差集(Difference&#xff…

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.6 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.6 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖&#xff0c;等值線圖。 dataframe <-data.frame…

劍指offer15_數值的整數次方

數值的整數次方 實現函數 double Power(double base, int exponent) 題目要求 計算 base exponent \text{base}^{\text{exponent}} baseexponent&#xff1a; 不得使用庫函數不需要考慮大數問題&#xff0c;絕對誤差不超過 10 ? 2 10^{-2} 10?2不會出現底數和指數同為 0…

【Typst】1.Typst概述

概述 Typst是一種用于排版文檔的標記語言&#xff0c;可以用于排版各種精美的論文、文章、書籍、報告和作業等。它是LaTex的精神續作&#xff0c;但是運行環境和編譯速度都要更簡單、更快捷。 它設計了一種腳本結合簡單的標記語法實現復雜的排版效果。并且支持模板創建、文件…

[Java惡補day14] 56. 合并區間

以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1&#xff1a; 輸入&#xff1a;intervals [[1,3…