Ubuntu 22.04.5 LTS (Jammy Jellyfish)系统下部署环境:集群聊天服务器
技术栈
Json序列化和反序列化
muduo网络库开发
nginx源码编译安装和环境部署
nginx的tcp负载均衡器配置
redis缓存服务器编程实践
基于发布-订阅的服务器中间件redis消息队列编程实践
MySQL数据库编程CMake构建编译环境
Github托管项目
项目需求
1. 客户端新用户注册
2. 客户端用户登录
3. 添加好友和添加群组
4. 好友聊天
5. 群组聊天
6. 离线消息
7. nginx配置tcp负载均衡
8. 集群聊天系统支持客户端跨服务器通信
项目目标
1. 掌握服务器的网络I/O模块,业务模块,数据模块分层的设计思想
2. 掌握C++ muduo网络库的编程以及实现原理
3. 掌握Json的编程应用
4. 掌握nginx配置部署tcp负载均衡器的应用以及原理
5. 掌握服务器中间件的应用场景和基于发布-订阅的redis编程实践以及应用原理
6. 掌握CMake构建自动化编译环境
7. 掌握Github管理项目
开发环境部署:
1. ubuntu linux环境
系统环境来源:
Ubuntu 22.04.5 LTS (Jammy Jellyfish)
设置静态ip(虚拟机NAT模式):
在虚拟机上配置静态 IP 地址(尤其是在使用 NAT 网络连接的情况下)通常涉及两个步骤:
(1)为虚拟机配置静态 IP 地址:这通常在虚拟机的操作系统内进行设置。
(2)配置虚拟机网络(如果使用 NAT):确保宿主机和虚拟机之间能够正常通信。
配置静态 IP 地址
假设你使用的是 Ubuntu 22.04.5 LTS,你可以按以下步骤操作:
1. 确定当前的网络接口名称
首先,查看当前网络接口的名称,以便为其配置静态 IP。
ip addr
你应该看到类似于以下的输出:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:a3:ee:3a brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.80.135/24 brd 192.168.80.255 scope global dynamic noprefixroute ens33
valid_lft 1646sec preferred_lft 1646sec
inet6 fe80::d256:aef3:6a7b:dab3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2. 修改 Netplan 配置文件
Ubuntu 22.04 使用 Netplan 来管理网络配置。你需要编辑相关的配置文件来设置静态 IP 地址。
首先,打开 Netplan 配置文件,通常位于 /etc/netplan/ 目录下。文件名通常类似于 00-installer-config.yaml。
sudo nano /etc/netplan/00-installer-config.yaml
3. 配置静态 IP
假设你要设置静态 IP 地址为 192.168.1.100,子网掩码为 255.255.255.0,网关为 192.168.1.1,你可以修改该文件如下:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.80.100/24
routes:
- to: default
via: 192.168.80.2
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: false:禁用 DHCP,意味着你将手动指定 IP 地址。
addresses:指定静态 IP 地址和子网掩码。
gateway4:指定默认网关。
nameservers:指定 DNS 服务器(可以是 Google 的公共 DNS)。
4. 应用配置
保存文件后,修改文件权限:
sudo chmod 600 /etc/netplan/00-installer-config.yaml
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
应用网络配置:
sudo netplan apply
5. 验证网络设置
验证静态 IP 是否生效:
ip a
你应该能看到配置的静态 IP 地址出现在 ens33 接口上。
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:a3:ee:3a brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.80.100/24 brd 192.168.80.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea3:ee3a/64 scope link
valid_lft forever preferred_lft forever
测试:
ping 8.8.8.8 # 测试外网连接
ping 192.168.80.1 # 测试网关连接
ping google.com # 测试 DNS 配置
配置虚拟机的网络设置(NAT)
如果你的虚拟机使用 NAT 网络连接,并且你希望虚拟机通过宿主机共享外部网络连接(比如互联网),那么你通常不需要更改宿主机的设置,只需确保虚拟机能够通过 NAT 获取到正确的外部 IP。
2. 安装Json开发库
使用 nlohmann/json(最流行的 C++ JSON 库)
sudo apt update
sudo apt install nlohmann-json3-dev
3. 安装boost库
Ubuntu 自带 Boost 软件包,最简单的方法是通过 apt 安装:
sudo apt install -y libboost-all-dev
-
安装完成后,头文件在
/usr/include/boost/ -
库文件在
/usr/lib/x86_64-linux-gnu/ -
可以用下面命令检查版本:
dpkg -s libboost-dev | grep Version
Version: 1.74.0.3ubuntu7
4. muduo网络库
Muduo 是一个基于 C++ 的高性能多线程网络库,需要 C++11 或以上支持。
a. 安装编译依赖
sudo apt install -y cmake g++ make libpthread-stubs0-dev
b. 下载 Muduo
git clone https://github.com/chenshuo/muduo.git
cd muduo
c. 编译 Muduo
Muduo 使用 cmake 编译(带 muduo/base 和 muduo/net 模块):
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
安装完成后,Muduo 的头文件会被放到
/usr/local/include/muduo/
库文件在/usr/local/lib/
d. 配置动态库路径(可选)
如果系统找不到 Muduo 库,需要将 /usr/local/lib 加入库搜索路径:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/muduo.conf
sudo ldconfig
5. 安装redis环境
安装redis环境:
sudo apt install -y redis-server
测试 Redis
进入 Redis CLI:
redis-cli
在 Redis 命令行中输入:
ping
如果返回:
127.0.0.1:6379> ping
PONG
说明 Redis 安装成功且可以正常使用。
6. 安装mysql数据库环境
安装 MySQL 服务器
sudo apt install -y mysql-server
安装完成后,MySQL 服务会自动启动。
安全配置执行安全脚本,设置 root 密码、删除测试用户和匿名账户:
sudo mysql_secure_installation
-
会提示设置 root 密码
-
询问是否删除匿名用户、禁用远程 root 登录、删除测试数据库、重载权限表等,建议全部选择
Y。
7. 安装nginx
安装 Nginx:
sudo apt upgrade -y
sudo apt install -y nginx
安装完成后,Nginx 会自动作为服务启动。
查看 Nginx 状态:
sudo systemctl status nginx
测试 Nginx 是否安装成功在浏览器访问虚拟机 IP(或者本机 IP,如果在本地):
http://your-server-ip/
8. 安装CMake环境
Ubuntu 默认仓库自带 CMake,但版本通常不是最新的:
sudo apt install -y cmake
安装完成后,检查版本:
cmake --version
输出示例:
cmake version 3.22.1







