C++ TinyWebServer项目总结(1. 配置安装)

news2024/11/25 5:01:05

语雀文档

项目记录会先更新在我的语雀文档 :Webserver

然后再同步发送到CSDN上,有些格式问题实在是懒得改了,可能会导致大家看的不舒服,建议有需要的大家可以看看我的原文。

安装环境

Ubuntu 20.04

mysql Ver 8.0.39-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

下载源码

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

MySQL 配置

安装 MySQL

查看是否已经安装 MySQL:

rpm -qa | grep mysql

无任何显示则未安装。

安装 MySQL:

sudo apt-get install mysql-server

查询 SQL 版本:

mysql --version

初始化配置

sudo mysql_secure_installation

由于在初始化配置时,

默认情况下,由于使用了 auth_socket 进行身份验证,因此跳过为 root 设置密码。如果您希望改为使用密码身份验证,可以使用“ALTER_USER”命令。

因此我们要在后面重新设置密码。

配置过程:

Securing 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

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                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

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.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : N

 ... skipping.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

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) : n

 ... skipping.
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) : y
Success.

All done! 

检查 MySQL 状态

systemctl status mysql.service

进入 MySQL

设置 MySQL 密码

首先,我们直接使用 sudo 登录数据库,此时不需要输入密码:

sudo mysql -uroot -p

查看当前 MySQL 的密码策略:

SHOW VARIABLES LIKE 'validate_password%';

策略说明:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |	决定是否使用该插件(及强制/永久强制使用):ON/OFF/FORCE/FORCE_PLUS_PERMANENT
| validate_password_dictionary_file    |        |	插件用于验证密码强度的字典文件路径
| validate_password_length             | 8      |	密码最小长度
| validate_password_mixed_case_count   | 1      |	密码至少要包含的小写字母个数和大写字母个数
| validate_password_number_count       | 1      |	密码至少要包含的数字个数
| validate_password_policy             | MEDIUM |	密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
| validate_password_special_char_count | 1      |	密码至少要包含的特殊字符数
+--------------------------------------+--------+
7 rows in set (0.02 sec)
													0/LOW:只检查长度。
                          1/MEDIUM:检查长度、数字、大小写、特殊字符。
                          2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

修改密码为:xxxx(这里的密码格式需要遵照上面的密码策略)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxx';

ctrl + d 或者输入 quit 退出 SQL。

重启 SQL:

sudo service mysql restart

登录数据库(此时需要输入上面修改的密码):

mysql -uroot -p

创建数据库

建立yourdb库:

create database yourdb;

查看当前数据库:

show database;

创建 user 表:

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

添加数据:

INSERT INTO user(username, passwd) VALUES('name', 'passwd');

查看数据库名称和密码:(这步可以不做,不影响后续的部署)

	cd /etc/mysql
	sudo vim debian.cnf

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

//需要修改的数据库信息,登录名,密码,库名
string user = "root";
string passwd = "xxxx"; // 这里修改为我们设置的MySQL密码
string databasename = "yourdb"; // 这里修改为我们设置的数据库名

编译运行

进入文件夹

cd ~/TinyWebServer

build:

sh ./build.sh

启动server:

./server

查看效果

查询主机 ip 地址,显示主机地址为:(ip)

ifconfig

在浏览器中输入(下面两条选择一条输入就行):

localhost:9006
(ip):9006

即可显示:

压力测试

这里用到了一个压测软件 Webbench,原理参考小白视角:一文读懂社长的TinyWebServer | HU

安装依赖

sudo apt-get install exuberant-ctags

下载源码 && 安装

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5/
make && sudo make install

运行

在解压目录打开终端运行:

./webbench -c 10001 -t 5 http://127.0.0.1:9006/

效果:

参考文档

  1. 常见问题与解决方案 · Issue #8 · qinguoyi/TinyWebServer
  2. MySQL问题:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements-CSDN博客
  3. MySQL提示ERROR 1698 (28000): Access denied for user ‘root’@’localhost’错误解决办法-腾讯云开发者社区-腾讯云
  4. https://zhuanlan.zhihu.com/p/445362693
  5. c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)-CSDN博客
  6. WebServer 跑通/运行/测试(详解版)_webserver测试-CSDN博客

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

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

相关文章

活动策划必备:活动页面设计全攻略

活动页面是营销策略中的重要环节,它不仅传递活动信息,更是吸引用户参与和转化的关键。设计师需要深入理解活动的核心价值和目标受众的需求,确保设计能够准确传达活动信息,同时激发用户的参与欲望。通过这样的设计,活动…

【AI Agent极限挑战赛】三大赛题揭晓

由AIGC开放社区联合联想拯救者、英特尔共同主办的【2024 AI Agent极限挑战赛】于8月17日在上海中庚聚龙酒店成功举办。赛事全面考察参赛者将AI技术应用于实际问题的能力。比赛内容包括对大语言模型的理解、提示词(Prompt)的结构化调优技术、个人助理Agen…

做谷歌seo如何确保网站的速度快?

想做谷歌seo,网站的快慢也是一个重要因素,至少不能慢的让客户等得不耐烦,以下是一些实用的小建议,帮助你提高页面加载速度,确保用户体验的顺畅。 压缩图片文件大小:图片通常是网页上最占用带宽的资源之一&a…

记一次:Datawhale AI夏令营-第五期-CV-Task01

前言:前面参加了第四期AIGC算是入门了,第五期我又来了,这期我参加了两个,计算机视觉CV所以按照惯例写一个笔记。 学习任务 一、计算机视觉CV的了解 1.1、什么是计算机视觉? 1.2、什么是YOLO?什么是物体…

SAP赋能消费品行业:创新与效率的双重驱动

在快速消费品行业,市场变化如同潮水般汹涌,消费者需求日益个性化,竞争愈发激烈。SAP系统以其先进的企业资源规划技术,为消费品行业提供了强大的数字化解决方案,助力企业在创新与效率的双重驱动下,实现业务的…

上位机图像处理和嵌入式模块部署(linux Qt程序的编译)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 linux上位机写程序,大家都喜欢用designer设计界面,用qt creator编写程序。这样其实也无可厚非。但是从效率和快速开发的角度…

视频智能分析工业排污检测算法及算法源码全套应用方案

工业排污检测算法在环境保护领域发挥着至关重要的作用,其主应用场景可以归纳如下: 应用场景 1、化工厂:监测化工厂的废气、废水排放情况,预防化学品泄漏污染环境。通过实时监测和数据分析,确保化工厂的排放符合环保标…

鸿蒙Harmony开发知识:Arkts函数

函数 函数声明 函数声明引入一个函数,包含其名称、参数列表、返回类型和函数体。 以下示例是一个简单的函数,包含两个string类型的参数,返回类型为string: function add(x: string, y: string): string {let z: string ${x} …

Xinstall:让App下载摆脱注册码的束缚,效率翻倍!

你是否曾经因为繁琐的注册码而放弃了某个App的下载?或者在安装过程中因为邀请码填写错误而功亏一篑?这些问题,相信很多人都曾遇到过。今天,我要为大家介绍一个神奇的品牌——Xinstall,它凭借强大的免注册码下载技术&am…

二叉树练习

1.认识树 树的根节点及其子树,都是相对的概念。在任何一棵树中都有一个根节点,而这棵树本身又可以是别的树的子树。树的基本概念有: A)双亲和孩子:一个节点的后继节点被称为该节点的孩子,该节点称为这些孩子的双亲。…

面试车载测试岗位,我们应该如何准备呢?

在进行车载测试方面的简历撰写以及面试时,我们需要注意的几点如下: 01、简历方面 1.没有相关项目怎么办? 要投递和面试的岗位所要参与的项目和做过的项目不可能是完全一样的。招聘企业更关注工作思路以及解决问题的思路。 不同的公司就算是做一样的项…

无人机:航拍书籍推荐

写在前面 学习航拍,整理一些书籍分享理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻&…

JavaWeb基础 -- Servlet

JavaWeb基础 – Servlet 1.Servlet简介 1.1 Servlet是什么 Servlet本身是用Java编写的,运行在Web服务器上的应用程序,并作为Web浏览器和其他HTTP客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet可以收集来自网页表单输入的数据…

iOS 修改 tabbar 图标大小 01

0x00 transform 在点击 tabbar 时,通过修改图片的 transform 属性,来修改图片大小。 遍历 self.tabBar.subviews 来查找 图片。 imageView.transform CGAffineTransformScale(imageView.transform, 4, 4); 你会发现,根本改不动&#xff01…

CSS知识点详解:div盒子模型

盒子模型: 边框: border-color:边框颜色 border-width:边框粗细 1.thin 2.medium 3.thick 4.像素值 border-width:5px ; border-width:20px 2px; border-width:5px 1px 6px; border-width:1px 3px 5px 2px; 这个简写属性…

豆瓣评分9.0!Python3网络爬虫开发实战,堪称教学典范!

今天我们所处的时代是信息化时代,是数据驱动的人工智能时代。在人工智能、物联网时代,万物互联和物理世界的全面数字化使得人工智能可以基于这些数据产生优质的决策,从而对人类的生产生活产生巨大价值。 在这个以数据驱动为特征的时代&#…

Python导出所有已安装包及其版本信息

目录 导出导入 如果使用了虚拟环境,则先激活当前项目虚拟环境 venv\Scripts\activate导出 在当前目录下生成一个requirement.txt文件,记录当前环境的所有pyhton依赖包及其版本信息。 pip freeze > requirement.txt导入 pip install -r requiremen…

C语言手撕实战代码_循环单链表和循环双链表

C语言手撕实战代码_循环单链表和循环双链表 循环单链表习题1.建立带头结点的循环链表2.设计一个算法,将一个带有头结点的循环单链表中所有结点的链接方向逆转3.设计一个算法,将一个循环单链表左移k个结点4.设计一个算法将循环单链表中的结点p的直接前驱删除5.设计算…

如何使用 Higress 快速构建 AI 应用?

随着 AI 时代到来,基于大模型的应用对网关提出了新的要求,例如在不同 LLM 提供商之间进行负载均衡、构建 AI 应用的可观测能力、基于 token 的限流保护与配额管理、AI 应用内容安全等等。Higress 基于企业内外的丰富场景沉淀了众多面向AI的功能&#xff…

pip3 : 无法将“pip3”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

1.找到python安装目录底下的Scripts,复制该路径:你安装python的目录\Scripts 我本地的:D:\devSoftware\python-all\Python39\Scripts 2.将该路径配置到环境变量Path里面 我的电脑 - 右键属性 - 系统 - 环境变量 - 找到path点击编辑 - 新建&a…