TinyWebserver的复现与改进(1):服务器环境的搭建与测试

news2024/11/15 22:20:18

计划开一个新坑, 主要是复现qinguoyi/TinyWebServer项目,并且使用其它模块提升性能。

本文开发服务器配置:腾讯云轻量级服务器,CPU - 2核 内存 - 2GB,操作系统 Ubuntu Server 18.04.1 LTS 64bit

打开端口

需要打开服务器3306、8000-10000端口!

image-20240809211016116

安装MySQL

下载MySQL

sudo apt install mysql-server

确定MySQL已成功下载

image-20240809211509272

查看用户名和密码

sudo cat /etc/mysql/debian.cnf

在这里,我的用户名是 debian-sys-main,密码是 uUakoE1X8Ei6TqLJ

image-20240809211646829

登录MySQL

mysql -u debian-sys-maint -p

image-20240809211815524

如果每次都需要输入用户名和密码,比较麻烦(我的MySQL版本为5.7.35)

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限

FLUSH PRIVILEGES;

创建数据库

查看当前数据库

show databases;

image-20240809214227120

建立一个数据库,在这里我建立了一个名为serverdb的数据库

create database serverdb;

切换为该数据库

use serverdb;

创建user表

CREATE TABLE user(
    username char(50) NULL,
    passwd char(50) NULL
)ENGINE=InnoDB;

添加数据,这里插入一个用户名为ggbond、密码为123456的数据

INSERT INTO user(username, passwd) VALUES('ggbond', '123456');

下载、修改、编译代码

为了简单起见,本文使用TinyWebServer- raw_version版本

git clone git@github.com:qinguoyi/TinyWebServer.git

修改main.c中的数据库初始化信息

// root 123456修改为你的服务器数据库的登录名和密码
// serverdb修改为你创建的库名
connPool->init("localhost", "root", "123456", "serverdb", 3306, 8);

修改http_conn.cpp中的root路径

// 修改为root文件夹所在路径
const char *doc_root = "/home/TinyWebServer-raw_version/root";

编译代码,其中 10000 是 端口号

./server 10000

make时出现mysql.h找不到的报错,mysql.h:没有那个文件或目录编译中断。

解决方案:缺少libmysqlclient-dev
ubuntu:sudo apt-get install libmysqlclient-dev
centos: yum install mysql-devel

登录网站

http://192.128.121.236:10000

成功跑通项目!

image-20240809225043553

总结

通过项⽬作者的指示,我们终于把项⽬跑起来了,然后就可以对作者的项⽬进⾏功能测试了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字节跳动2025校园招聘内推

快来投递简历吧:https://job.toutiao.com/s/ir2RpsLR 快来投递简历吧:https://job.toutiao.com/s/ir2RpsLR

Vue3 组件通信

目录 create-vue创建项目 一. 父子通信 1. 父传子 2. 子传父 二. 模版引用(通过ref获取实例对象) 1.基本使用 2.defineExpose 三. 跨层通信 - provide和inject 1. 作用和场景 2. 跨层传递普通数据 3. 跨层传递响应式数据 4. 跨层传递方法 create-vue创建项目 npm ini…

使用Charles Proxy进行更好的移动的应用程序测试

许多移动的和Web应用程序测试人员普遍存在的一个错误是认为大多数测试只需要观察和与用户界面(UI)本身的交互。另一方面,当我们开始看到甚至操纵幕后发生的事情时,更具体地说,我们的应用程序正在向后端服务发送数据和从…

堆的实现(偷懒版)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、堆的实现 1.1 堆的向下调整算法 思路: 1.2 堆的向上调整算法 1.3 堆的创建 1.4 堆的复杂度计算 向下调整建堆的复杂度…

4款智能ai 写作工具助你探索智能写作的无限可能!

智能 AI 写作已经成为一个十分热门的工具。因为它可以从新闻报道到小说创作,从广告文案到学术论文,各个领域都可以给我们很有效的写作帮助。今天,我就给大家介绍4个在网上非常火的智能AI 写作工具。 1、笔灵写作助手 直通车 :https://ibilin…

基于Java中的SSM框架实现软件bug管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现软件bug管理系统演示 摘要 随着我们的智能生活到来,人们越来越意识到计算机生活在工作中的重要性,职场上大部分职业都是需要我们会熟练运用计算机知识的,所以我们要掌握计算机技能,这样才能在以后的职业生…

【学习笔记】Matlab和python双语言的学习(多目标规划)

文章目录 前言一、多目标规划1.特点2.一般形式3.多目标规划的解4.线性加权法 二、典型示例-----化工厂生产问题三、代码实现----Matlab四、代码实现----python总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili…

XJTUSE-离散数学-关系

集合的叉积 二元组(a,b) (a,b) (c,d) <> ac,bd m元组 叉积的结合律 关系 R 是 的子集&#xff0c;称为一个二元关系 前域&#xff0c;后域的概念 关系的表示方法 图表示法 矩阵表示法 关系的运算 逆运算: 逆运算的一些定理 复合关系 and 闭包运算 …

如何创建一个Gralde项目

如何创建一个Gralde项目 1. 使用IDEA创建一个Gradle项目&#xff1a; 1.1 打开Idea&#xff0c;新建项目&#xff1a; 选择File-> New -> Project 1.2 在项目类型列表中找到并选择Gradle 1.3 验证Gradle项目 可以通过运行 gradle.tasks 命令来验证项目是否正确创建&a…

【C++ Primer Plus】学习笔记 5

文章目录 前言一、指针和自由存储空间1. 声明和初始化指针2. 指针的危险3. 指针和数字4. 使用 new 来分配内存5. 使用 delete 释放内存6. 使用 new 来创建动态数组1.使用new创建动态数组2.使用动态数组 二、指针、数组和指针算术1. 指针小结1.声明指针2.给指针赋值3.对指针解除…

PCL 曲线4点细分算法

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 四点细分算法(Four-Point Subdivision Scheme)是一种用于生成平滑曲线的细分算法。与 Chaikin 逼近型细分算法不同,四点细分算法通过插入新的控制点来细化曲线,并生成一条逐步逼近的平滑曲线。该算法通常用于生…

Vue组件间传值总结

1.组件可以由内部的Data提供数据展示&#xff0c;也可以由父组件ajax取到数据后通过prop的方式传值进子组件。 样例: 子组件电影组件&#xff0c;展示标题和评分&#xff0c;声明属性props:["title","rating"] <template><div><h1>{{…

8.8作业

LVS 四层结构&#xff08;最多实现到iso第四层&#xff1a;传输层的功能 部署NAT模式集群案例 创建3台主机&#xff0c;分别为&#xff1a;lvs 、 webserver1 、 webserver2&#xff0c;其中lvs有两张网卡分别是net网卡为外网和仅主机内网 主机名网卡IP地址网关 lvsnet和主机…

哪些区块链有利可图?揭秘最赚钱公链背后的数据!

今天&#xff0c;我们将探索按收⼊排名前4位的L1和L2&#xff0c;并探讨这些区块链实际保留了多少收⼊。毕竟&#xff0c;收入能力是判断一条链是否能持续发展的重要之标之一。在此&#xff0c;我们将收益定义为&#xff1a;总收⼊减去代币发⾏量。 Layer 1 以太坊Ethereum 就…

LeeCode Practice Journal | Day37_DP05

完全背包 有N件物品和一个容量为W的背包&#xff0c;第 i 件物品的重量是weight[ i ]&#xff0c;价值为value[ i ]&#xff0c;每件物品都有无限个&#xff0c;求解使用背包物品价值总和达到最大的装包方案 二维 static int CompleteKnapsack2D(int[] weights, int[] value…

第三篇远程连接工具介绍及使用

目录 一、远程连接工具的介绍 1、作用 2、常用的远程连接工具 1) XShell 2) FinalShell 3) PuTTY 4) SecureCRT 5) MobaXterm 6) WinSCP 7) NxShell 3、Xshell 安装使用 1&#xff09;Xshell 安装 2&#xff09;Xshell 使用​编辑 4、Finalshell 安装使用 1&…

C++初学者指南-5.标准库(第二部分)--排序序列操作

C初学者指南-5.标准库(第二部分)–排序序列操作 文章目录 C初学者指南-5.标准库(第二部分)--排序序列操作二分查找binary_searchlower_boundupper_boundequal_rangeincludes 合并mergeinplace_merge 设置操作set_unionset_intersectionset_differenceset_symmetric_difference …

最“抠门”千亿儿媳,一件衣服穿五年!

文&#xff5c;琥珀食酒社 作者 | 积溪 我真是震惊了&#xff01; 刚刚刷奥运会 看解说员介绍称呼 说跳水名将郭晶晶和他的先生 我才知道霍家对郭晶晶的夸奖 绝非随口一说 她跟很多嫁入豪门的人 不一样 因为太“抠门”了 身为霍家儿媳妇 身价千亿的郭晶晶 一个头绳…

C++STL~~string

文章目录 一、string类的发展历史二、string的使用三、string的练习四、总结 一、string类的发展历史 在C 的早期版本中&#xff0c;处理字符串主要依赖于 C 风格的字符数组。但这种方式存在诸多不便&#xff0c;如手动管理内存、容易出现缓冲区溢出等问题。随着 C 标准的不断…

使用Linux实现FTP云盘1

关于FTP服务器 FTP&#xff08;文件传输协议&#xff09;服务器是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行&#xff0c;服务端不断接收客户端指令&#xff0c;服务 端可同时处…