iis配置web服务器_【手把手教会搭建你的web服务器】第一课:Ubuntu安装及BOA 服务的配置。...

下滑底部添加微信好友

腾牌云科技|版权局一级代理

计算机软著 商标全包材料低价代理

【任务目标】:

Ø 任务 1:完成 Ubuntu/Centos 虚拟机的安装;

Ø 任务 2:搭建 gcc、make、sshd 服务等嵌入式开发环境;

Ø 任务 3:完成 BOA 软件服务的移植和 BOA 服务的配置;

Ø 任务 4:完成 Web 服务中静态页面的测试;

【任务说明】:

l 任务 1 描述:

 可以在 vmware workstation 软件中安装 Ubuntu 或者 Centos 系统。以下以 Ubuntu18.04 为例作任务说明。   Ubuntu 版本建议:18.04LTS  20.04LTS(最小系统安装即可)   Centos 版本建议:6.x  7.x(最小系统安装即可)  阿里云服务器也可以(但需要后期配置防火墙和访问策略)

l 任务 2 描述:

 1、由于最小系统没有 C 语言编译环境,需要进行安装。建议安装软件有 gcc、 make、vim 工具。 

 $ sudo apt install gcc make vim-nox

1fe106edd520b115ccf315265c567dd6.png

“现在没有可用的软件包 gcc,但是它被其它的软件包引用了。”

首先我检查了虚拟机从主机映射过来的的网络连接,找到右下角的“网络适配器”右键“设置”,手动选择 【NAT模式(N):用于共享主机Ip地址】,然后确定。

fd8639f27d1565466ddeb5ea2d08aeed.png

caf3e4f58fc4efed9998323fcec32e5f.png

再次输入14a6f6a98f396b4a2ce15b9a0b27e4fd.png依然报错

c1c09133cf9c25e1e43d56339144e627.png

使用“sudo gedit /etc/apt/sources.list”修改源,在文件末尾手动加上两行代码:“deb http://dk.archive.ubuntu.com/ubuntu/ xenial main”和“deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe”保存

0910ca65426a2c127f5af0d030237fad.png

3efcc888dde83f9728ebf7f4d25b1ecb.png

会有警告出现,但是这个警告不是错误,

ce8e44428b2ffc23a861cc4fc3896048.png

于是我用命令行打开GTK应用程序“sudo -H gedit /some/where/file.txt &>/dev/null “

c244c5c3b438eb7aa8bdc7312bc254b9.png

caaab8489dfb8e6279732b3431a70d8e.png

重新安装vim工具“sudo apt-get install vim”

210bd9bdc8fc481cd2d8a8db4ab2b0d0.png

再切换到之前的终端执行gcc安装,成功!

a8ca9f47e7a40f3592dd54ccfeb57dec.png

2、为了方便后期向虚拟机传送文件和操作 Linux 系统,安装 sshd 服务。  

$ sudo apt install openssh-server 

8617ee31cf5489cc8d4bdac367d93b9e.png

Y继续执行

c51ae0a92e6b4c54acac170a6be40400.png

3、若需要在开发板上进行 web 服务的搭建,还需要安装对应开发板的交叉编译器环 境,同时配置系统环境变量和交叉编译器所依赖的库问题。  

$ sudo apt install lib32ncurses5 lib32z1

e163f3de0b53fbf2b09668e99efc51a6.png

Y继续执行

dfd655a7bf2bdad7f604847e6f10a9e3.png

 4、在 windows 中可以使用 mobaxterm 这类软件,配置 ssh 客户端信息,连接虚拟机 的 Ubuntu 系统。 

841d1c8ba7aad3b5f9f09863a2029cf6.png

5、选择一款自己熟悉的编辑器,比如 vscode,notepad++,clion 等。 

6、如果需要开发板,配置好串口、虚拟机双网卡(可选)环境。

 l 任务 3 描述:

 1、什么是 TCP 服务器,TCP 服务器运行后的效果怎么验证?

        什么是 TCP 服务器我们现在设备使用的网络环境是四层TCP/IP协议族(一系列协议的集合),TCP/IP协议族可按层次划分为四层,从上层到底层为:应用层,传输层,网络层,数据链路层。TCP / IP在工程开发应用中,我们更多的是指在IP(互联网协议)上运行TCP(传输控制协议),核心协议包括IP,TCP、UDP(用户数据报协议)和其他相关应用水平协议,如DNS,HTTP,FTP,Telnet及更多。

              应用层我们要做一个嵌入式web控制器,下一层传输层我们需要选择TCP协议(TCP有三次握手和超时重传机制,所以TCP里面包含了数据发送的防丢失措施)。

f4c96e9b3a419617bd754db82937f1a9.png

TCP IP UDP在socket通信的关系图

TCP 服务器运行后的效果如果TCP服务器运行成功,在操作系统上,传输层上应该体现出TCP的-一个特性(端口号),而这个特性属于操作系统内核,不能直接查看的。Linux系统提供了一个观察传输层状态的工具: netstat -tuan

 2、什么是 Web 服务器,Web 服务器和 TCP 服务器的区别是什么?

区别:web服务器是应用层,TCP服务器更多的是指我在传输层选择了TCP协议。

定义:web服务器也称为www服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。

TCP服务器:一个应用服器只要传输层协议使用了TCP,那么这样的应用程序就称之为TCP服务器

Web服务器:本身就是一个TCP服务器,应用层又在数据格式处理上采用了一个HTTP的协议标准,这样的TCP服务器称之为web服务器。web服务器可以为用户的浏览器提供合法的数据,浏览器能够识别网页的数据所以我们才能上网看到网页内容。

通俗理解:只要web服务器在传输层采用了TCP协议来传输,我们就将这个web服务器等效为TCP服务器。我们的浏览器是客户端,TCP服务器相当于web服务器。

 3、嵌入式系统中,常用的开源 Web 服务器有哪些?

Unix和Linux平台下常用的服务器有BOA、appweb、Apache、Nginx、Lighttpd、Tomcat、IBM WebSphere等,其中应用最广泛的是Apache。而Window NT/2000/2003平台下最常用的服务器是微软公司的IIS。

BOA

功能简单

代码量少

学习

appweb

功能强大

代码量大

工程使用

4、如何移植 BOA 服务器(X86 版,ARM 版)?

运行于我们电脑(客户端)的浏览器首先要与嵌入式Web服务器BOA端建立连接,打开一个套接字虚拟文件,此文件建立标志着SOCKET连接建立成功。然后客户端浏览器通过套接字SOCKET以GET或者POST参数传递方式向Web服务器提交请求,Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到请求后,根据请求的不同进行事务处理,返回HTML文件或者通过CGI调用外部应用程序,返回处理结果。服务器通过CGI与外部应用程序和脚本之间进行交互,根据客户端浏览器在请求时所采用的方法,服务器会搜集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序,CGI扩展程序进行信息处理并将结果返回给服务器,然后服务器对信息进行分析,并将结果发送回电脑(客户端)在浏览器上显示出来。

嵌入式Web服务器BOA移植:

1.官网下载好BOA源码压缩文件boa-0.94.13.tar.gz。

2.编辑TCP socket连接代码文档,MobaXterm 创建tcp_base_server.c文档:

源码:

#include

#include

#include

#include

#include

#include

#include

#include

/*

 * TCP初始化服务器模型代码

 * */

int init_socket(unsigned short port)

{

    int tcp_socket;

    struct sockaddr_in self;

    int ret;

    tcp_socket = socket(AF_INET, SOCK_STREAM, 0);

    if (tcp_socket == -1) {

        perror("socket");

        return -1;

    }

    // 绑定自己开放的IP和端口

    memset(&self, 0, sizeof(self));

    self.sin_family = AF_INET;

    self.sin_port = htons(port);

    self.sin_addr.s_addr = INADDR_ANY;

    ret = bind(tcp_socket, (struct sockaddr *)&self, sizeof(self));

    if (ret == -1) {

        perror("bind");

        return -1;

    }

    listen(tcp_socket, 5);

    return tcp_socket;

}

int main()

{

    int listen_fd;

    int new_fd;

    char buf[1024];

    int ret;

    char *tmp = "Hello World";

    listen_fd = init_socket(8181);

    if (listen_fd == -1){

        fprintf(stderr, "init socket error!\n");

        return -1;

    }

    printf("listen...\n");

    // getchar();

    // 接收有没有新的连接请求,

    // 从listen_fd描述符对应的空间来取出客户端连接

    while (1) {

        new_fd = accept(listen_fd, NULL, NULL);

        if (new_fd == -1) {

            perror("accept");

            return -1;

        }

        printf("have a new connection!\n");

        // 接收新客户端发来的请求

        ret = recv(new_fd, buf, sizeof(buf)-1, 0);

        buf[ret] = 0;

        printf("接收的内容: %s\n", buf);

        // 响应客户端的请求

        write(new_fd, tmp, strlen(tmp));

        // getchar();

        close(new_fd);

    }

    close(listen_fd);

    return 0;

}

f9e287f24488328e504f04eec39b3120.png

b71bd2abff38977bd05a97567bdc1506.png

c34fea0f5d3d52a1ec153abdfe0c1141.png

4084d08415d54bbaa98d0c49adf303c2.png

3.“mkdir web_prj”在根目录下创建一个目录6135a6078ced9379f5774fb58ee5b101.png,“cd web_prj”进入目录里,

d9d5ce6b9b392bc38d6eb38d2de295f6.png

在web_prj再创建一个test “mkdir test”,进入test目录里面“cd test”

b8ae0a419c287d9b194005da12fa50ff.png

把tcp_base_server.c文档移动到test目录下

b0417525ac8b28a2860847da9c8f7d73.png

“gcc -o tcpserver tcp_base_server.c”编译

71452a5e6074a7c6ad6f74ef647ec799.png

直接运行tcpserver程序“./tcpserver”,打印出监听描述符

ecf143476d34ae5b3f9d40e9a9628083.png

netstat查看TCP有没有留下烙印,由于是新装的系统需要按提示安装netstat,安装完毕查看netstat

57c7ac9018992d773bb5c3c7482c92b9.png

tcpserver程序已经在一个终端运行,我们在另一个终端用“netstat -tan”查看(已经出现了8181端口和80端口)

921a6c313b00835c9c3cbd60354fe25a.png

468d0bbb7f724de791573353611671e4.png

39abb652f1a3c454974dd3b213dce216.png

在第一个终端摁“Ctrl c”结束掉tcpserver程序运行,在另一个终端再次用“netstat -tan”查看(8181没有了,80有)8181开启相当于在运输层TCP上烙下烙印,这样才能保证后面的实验服务器正常访问。

cda9dc168b565ad2541fce9d7c2b1aca.png

24b1c34e3d39a240ed8a5691ea26673f.png

 5、移植服务后的配置文件在哪里,配置选项有哪些?

 l 任务 4 描述:

 1、Web 服务的页面存放目录在哪里?

         在web_prj再创建一个sources“mkdir sources”

9932baa411a80cae8bdc829217b4edd6.png

把boa-0.94.13.tar.gz拷到sources目录下“cp boa-0.94.13.tar.gz web_prj/sources/”

f5d108bf106ffbd3dbffc611f10b7e91.png

          解压到上级目录web_prj 下,“tar -zxvf boa-0.94.13.tar.gz -C ../”

52cd615eac475b749759d10dc1b1a720.png

e930f35534e09e779cd712f56606965e.png

进入boa-0.94.13,“cd boa-0.94.13/”

f403899ad8fcda16ddf1da21a8e6c448.png

boa-0.94.13源码中没有makefile,所以需要我们自己配置生成makefile。

1.根据目标机器特性进行配置(configure脚本)进入src目录,“./configure

a149fb8ae7450e87f74621c6e84d56f9.png

通过“./configure”我们就可以看到Makefile的出现

cd693ec099b689e970537f5013fb48cb.png

2.工具的指定,修改Makefile使得支持目标板的工具

230025ed4a97699200bb0ae280f2921b.png

“vim Makefile”修改Makefile

4f2940c0a274b1b8a37e56122b2436d3.png

Esc,命令行下输入:“:wq! (保存退出)

3.生成(make)

e42cd88e286ea5055d0df8ac890a2045.png

出错,没有yacc命令,进行安装024b9353d35918c10fd7fe4554392165.png

da7d70a355b51056ea2131886a3d9aa3.png

再执行make,第一个工具解决,还有第二个需要安装,因为我们的版本比较老,系统用了flex代替lex

406e1ed050b5fd00956972517e0b01e4.png

22ed9278c0d3a9d372b25ba76d4ed720.png

装完以后再make,Makefile的警告权限开的比较大

ece219fc583f1429d5063dc9d25ecf37.png

出错,需要修改compat.h,“vim compat.h”,打开后它处于普通模式,这时按键盘i,进入插入编辑模式,如果按a是追加编辑模式。编辑模式中按esc又变成普通模式,

修改后:

deaf1e8e8c073ab0afa2e02d8b48d9af.png

4af099adf4669f1e8b9ab5152e3a454c.png

保存退出后继续make

3e28bfdb28f24461cc89ed7b5b7c2011.png

剔除

f5bc120453176f07395e4f6a385a54c3.png

 2、浏览器访问路径原理和服务配置文件的对应关系?

程序的一次编译,能够在多个不同的环境进行运行。

boa配置文件告诉boa程序如何进行工作 (/etc/boa/boa. conf)

修改配置文件之前先备份,防止改错了恢复不了,“cp boa.conf boa_bak.conf

f74b09e74f92c62406aca1ac0524ee56.png

boa-0.94.13 目录下创建,“sudo mkdir /etc/boa”,再将boa.conf 拷贝到/etc/boa 目录里面,“sudo cp boa.conf /etc/boa/

sudo vim /etc/boa/boa.conf“将/etc/boa下的boa.conf真正修改

修改用户:

367292a213aef0209aada59dc9c84939.png0b7802138975e17ab279f51195faa7aa.png           3fc283ca9526f36390651ba58e7af702.png

错误日志修改

b43f83b0429beb8577fdb9ba5b2d33a1.png

访问日志修改

dac74fc717e5fb8e1236bfd1830a459e.png

DocumentRoot修改

3b14dd7b567ddda9e7265e77052968c2.png

3822240fb6e61108d92a7c5c1fe50ebb.png这个是空洞文件

保存退出

再次查看修改已经保存

c7a96d58cf5412b3e375dabce6398d3d.png

在home/fy下创建log和www目录“mkdir log”,“mkdir www”

53ecf5f2e986e4165a0f160213cf7a60.png

c5b2008b114cb9f31d29411747903aec.png

移除.boa.conf.swp和.boa.conf.swo,非正常关闭vi编辑器时会生成一个.swp文件和.swo文件

15815c0c9e2b29ef303c84666d955872.png

0ddc581304f3d88db52b249a8ce26881.png

重启虚拟机

e1e417e44208f877db78efe036fa4ad9.png

boa.conf配置文件里写了什么目录,就看你实际上有没有这个目录,程序是根据你配置文件里写的目录去创建文件,系统没有这些目录,肯定要报错。变量后面的路径信息,系统上有没有这些目录值,没有就创建

4f928bd932d83a9846411300b403684d.png7d51b1fb0c094ed7edfdce5472bcb3b2.png

进入目录“cd ~/web_prj/boa-0.94.13/src” 再次执行命令,成功!

0384674079c3074a6df42b9aff5ea019.png

确定静态文件测试通过,开始创建一个前端页面:

把前端作业移植到linux下

1b4b5c37bd3df4f0d677e72cda122281.png 

f28930082ba6de2f48e86154258dbb9f.png 70f9d4a6100f5068e2ff5bc3953de422.png

输入“http://192.168.117.136/index.html”出错了

05ca6f447417d614f71947017c468cf7.png

查看error_log里面的报错

f639efbbe71315f19593a70028279ced.png

boa没有绑定成功是因为端口号被占用了,所以修改boa.conf文件配置的端口,一定要加sudo否则保存不了!!!!!

d6186ad8066935aebdfb63adce3c0c47.png

2ce8229c3adbda3aa37cf2d03c1df20a.png0f00d96e995d8326838edd3eede9ffc3.png              83b2e279eec46efb99afb7e63ce583c9.png

重新运行./boa

36e5e0642e491ebb7d695394e1b16b69.png

再次查看报错,路径没写全

011e5789e92a8cb86e1b51995fbdd6d9.png

7f351fa0a8437f9115210991a3653c95.png

记得一定要补全绝对路径,然后可以实现浏览器访问了

a20f74b2df7595f138e68e63ee7393e3.png

9625179696d245450f5079459aefa6b5.png 计算机软著 商标全包材料代理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值