IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 使用restbed库的创建基于rest风格的web后端项目 -> 正文阅读

[系统运维]使用restbed库的创建基于rest风格的web后端项目

1 项目背景

1.1 请求与响应

使用restbed库完成基于REST风格的HTTP请求和响应【Restbed 框架为 C++11 构建的程序带来了 restful 功能,它基于 boost.asio 创建。】
完成POST、GET、DELETE、PUT请求,遵循REST的风格

1.2 数据存储

简便起见,本次后台的数据存储在文件中,主要涉及文本文件的操作,不涉及数据库的操作

2 搭建开发环境

基于镜像创建容器,然后在容器中进行代码开发。

2.1 创建容器

1 查看镜像docker images使用的基础镜像如下
xxxxxxxxxxxx         1.1.3           9cad6bb8b6ca        6 months ago

2 使用xxxxx创建容器
按照实际情况一般默认
网络选择桥接模式
注意APP服务端口号不要冲突,一般需要更改

3 容器的一些操作
查看正在运行的容器
docker ps
查看运行包括停止的容器
docker ps -a 
停止运行的容器
docker stop id 
删除容器
docker rm id 
查看容器的详细信息
docker container inspect id (可以查看目录挂载信息)
进入我创建的容器
docker exec –it id /bin/bash

容器的数据卷:

容器挂载了多个数据卷,数据卷内部是同步的,不同数据卷之间是相互隔离的
一个设置为日志的挂载目录:容器内/var/log/和本机的/var/log/同步
一个设置为项目开发的挂载目录:容器内/workspace和本机的/home/xxxxx/workspace同步

"Mounts": [
	{
		"Type": "bind",
		"Source": "/var/log/",
		"Destination": "/var/log/",
		"Mode": "",
		"RW": true,
		"Propagation": "rprivate"
	},
	{
		"Type": "bind",
		"Source": "/home/xxxxxx/workspace",
		"Destination": "/workspace",
		"Mode": "",
		"RW": true,
		"Propagation": "rprivate"
	}
],

2.2 vscode远程连接入容器

  1. 本地启动docker服务

    本地安装docker步骤
    1、下载 docker.exe ,放到任意 PATH 包含的路径(系统环境变量那里,配置完成后cmd中能执行)就可以了。适用于win7 及以上的系统。链接:https://github.com/StefanScherer/docker-cli-builder/releases/
    2、本地配置docker
    创建一个context:
    docker context create dockerservice1 --docker "host=ssh://hostname@ip:port"
    切换到该context:
    docker context use dockerservice1
    测试验证: 
    docker info 如果执行成功,会输出和在远程主机运行 docker info 一样的结果。实际上这里 docker ,会把命令传输到远程主机执行,并把远程主机上的执行结果在本地显示。
    
    设置ssh免密登陆
    1、 生成本机公、私钥: ssh-keygen -t rsab
    2、 拷贝公钥 id_rsa.pub 到远程主机
    3、 添加到认证文件: cat id_rsa.pub >> .ssh/authorized_keys
    
  2. vscode安装远程连接的插件,remote系列

  3. vscode远程连接到docker

3 接口设计

GET /api/v1/item/12
	/api/v1/items

POST /api/v1/item/
PUT /api/v1/item/3
DELETE /api/v1/item/2

http://127.0.0.1:80/api/v1/item

4 前端开发

这里使用postman来发送http请求
在这里插入图片描述
在这里插入图片描述

5 后端开发

主要过程:

  1. 通过restbed库获取request的内容,是get这类方法就从url中获取,是post方法,就从body中获取参数
  2. 进行数据格式的转换,转为后台需要的数据结构
  3. 进行存储,存储到文件或数据库中
  4. 重构优化,多文件

6 测试部署

6.1 编译项目

g++ -o web webserver.cpp ../service/method.cpp -l restbed -l jsoncpp
../web

6.2 测试项目

参照前端开发,通过postman发送各个方法的请求,测试响应结果是否是期待的

6.3 部署项目

通过编写dockerfile,将项目放到docker镜像中,build生成docker镜像。
运行包含这个项目的容器,容器启动自动启动服务。

6.3.1 编写dockerfile

# 设置基础构建镜像
FROM xxxxxxxxx1.1.3
# 设置创建者的基本信息
MAINTAINER xxxxxx@xxxxxx.com
# 项目ADD到容器中
ADD webdemo.tar.gz /workspace
# CD到工作目录
WORKDIR /workspace/webdemo/controller
# 暴露端口 容器打算使用8080端口
EXPOSE 8080
# 进行编译
RUN g++ -o web webserver.cpp ../service/method.cpp -l restbed -l jsoncpp
# 运行
CMD ["./web"]

注意:
这里暴露的端口是我们服务发布的端口,不然到时候无法访问我们的服务。
此外这里EXPOSE只是声明,运行容器的时候要显式指定-p指定宿主机的端口和容器端口的映射
如:docker run -d -p 8064:80 --net=bridge --name=hcy_test hcy_test_webdemo:1.0

6.3.2 通过dockerfile创建docker容器

docker build -f ./Dockerfile -t hcy_test_webdemo:1.0 .
参数说明:
-f指定dockerfile的路径
-t指定镜像的tag名称
. 代表上下文路径

6.3.3 查看镜像

docker images

6.3.4 通过镜像实例化一个容器

docker run -d -p 8064:80 --net=bridge --name=hcy_test hcy_test_webdemo:1.0
参数说明:
–detach -d 在后台运行容器,并且打印容器id。
-p port端口映射 宿主机端口:容器端口

6.3.5 查看容器内进程服务是否启动

docker top id

6.3.6 (可选)进入容器

docker exec -it id /bin/bash
参数说明:
–interactiv -i即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
–tty -t分配一个伪tty,一般与 -i 连用。

6.4 再次测试

6.4.1 进入容器测试web服务

进入容器:docker exec –it id /bin/bash
如: curl -X GET “http://127.0.0.1:80/api/v1/items”

6.4.2 进入宿主机测试web服务

如: curl -X GET “http://127.0.0.1:8064/api/v1/items”

6.4.3 远程主机测试web访问

如: curl -X GET “http://10.67.43.10:8094/api/v1/items”

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:25:19  更:2022-01-14 02:26:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 7:00:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码