❶ linux环境下,c语言怎么读取WEB服务器的80端口上页面的内容
已知url ,host, port;
int s, size;
struct sockaddr_in sin;
struct hostent* phe;
char cmd[256];
char msg_hdr[1000];
char* p;
//准备http中GET 方法的请求。
sprintf(cmd,"GET %s\r\nHTTP/1.1\r\nHost:%s", url, host);
//创建socket
if((s=socket(PF_INET,SOCK_STREAM,0))<0)
return -1;
//取得远程主机的IP地址,失败函数返回-1
if((phe = gethostbyname(host)) == NULL)
return -1;
memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(pms->port);
//跟远程机器建立连接,失败函数返回-1
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return -1;
//发送GET请求
if(write(s,cmd,strlen(cmd))<0)
return 0;
//从链接描述符(连接管道)中读取传送过来的数据
if(read(s, msg_hdr, 300)<0)
error;
close(s);
//读到该文件的大小
if((p=strstr(msg_hdr,"Content-Length"))||(p=strstr(msg_hdr,"Content-length:")))
p+=16;
else
error;
//返回大小
size = atoi(p);
sprintf(cmd,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\nRange: bytes0-%d\r\n\r\n", url, host, size);
//创建套接口
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
return 0;
//取得远程主机的IP地址,失败返回0
if((phe = gethostbyname(host)) == NULL)
return 0;
memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(port);
//建立连接
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return 0;
//发送读取请求
if(write(s,cmd,strlen(cmd))<0)
error;
read(s, buf, BUFSIZE)..............
❷ web服务器 Nginx
(1)概念
Web服务器是一台使用HTTP协议与客户机浏览器进行信息交流(因此又称为HTTP服务器)、为互联网客户提供服务(信息浏览,下载资源等)的主机。发展趋势:从HTML到XML、从有线到无线、从无声到有声
1.Linux是架设安全高效Web服务器的操作系统
架设Web服务器常见的操作系统:Windows、Linux、Unix。Linux安全性能最高,可以支持多个硬件平台,可以根据不同需求随意修改、调整与复制各种程序的源码以及发布在互联网上,网络功能比较强大。
2.目前主流服务器:Apache、 Nginx、 IIS
Unix/Linux操作系统下使用最广泛的免费HTTP服务器:Apache、Nginx。Windows(NT/2000/2003)操作系统使用ⅡS,综合使用最多的Web服务器是 IIs、Apache。
选择WEB服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等。下面介绍目前最主流的三大web服务器:
① 大型
IIS:
微软的Internet Information Services (IIS),IIS 允许在互联网上发布信息,提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。IIS是一种Web服务组件,其中包括Web服务器(网页浏览)、FTP服务器(文件传输)、NNTP服务器(新闻服务)和SMTP服务器(邮件传输),使得在网络上发布信息很容易。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
Apache:
Apache是世界上用的最多的Web服务器,源于NCSAhttpd服务器的补丁(pache 补丁)。它的成功之处主要在于:源代码开放、有开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)、可移植性。
② 小型
nginx:
nginx的模块都是静态编译的,对fcgi的支持非常好,在处理链接的的方式上nginx支持epoll,支持通用语言接口(如:php、python、perl等),支持正向和反向代理、虚拟主机、url重写、压缩传输等。
(2)工作原理
当客户端Web浏览器连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping ties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。Web服务器的工作原理一般可分成如下4个步骤:
① 连接过程:是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
② 请求过程:是Web的浏览器运用socket这个文件向其服务器而提出各种请求。
③ 应答过程:是运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
④ 关闭连接:是当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response)。为了处理一个request,Web服务器可以response一个静态页面(HTML页面)或图片,进行页面跳转(redirect),或把动态响应委托给服务器端。Web服务器的代理模型非常简单。当一个request被送到Web服务器里来时,它只单纯的把request传递给可以很好的处理request的程序(服务器端脚本,如:CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript等)。Web服务器仅仅提供一个可以执行服务器端程序和返回(程序所产生的)响应的环境,而不会超出职能范围。服务器端程序功能通常有:事务处理、数据库连接、和消息等。虽然Web服务器不支持事务处理或数据库连接池,但它可以配置各种策略来实现容错性、可扩展性(如:负载平衡、缓冲)。集群特征经常被误认为仅仅是应用程序服务器专有的特征。
(3)配置
如何设置默认文档;在同一台服务器上架设多个Web站点;(可以通过改变端口号)创建Web虚拟目录;
1、了解DNS主机名和IP地址。
如果此WEB服务器在Internet上,需向ISP申请和注册此服务器的DNS主机名和IP地址。如果此服务器只在企业网内使用,则在内部的DNS服务器上注册。
2、打开服务器文档,选择"端口"-"Internet端口",启用"TCP/ IP端口"。
3、选择"Internet协议",完成以下选项后,保存文档。
① 绑定主机名:
A、选择"是"则您可在"主机名"项中输入主机别名,WEB用户可用此别名替代Domino服务器名访问WEB服务器。
B、选择"否"(缺省)则不允许使用别名。
② DNS查询: 选择"是"则Domino服务器查询发送请求的WEB客户机的DNS名。
③ Domino日志文件和数据库将包含WEB客户机的DNS主机名: 选择"否"(缺省)则不查询,Domino日志文件和数据库将只包含WEB客户机的IP地址( 注意:选择"否"将提高Domino服务器性能,因为服务器不使用资源执行DNS查询 )
④ "允许HTTP客户浏览数据库":选择"是"则允许WEB用户在URL中使用OpenServer命令来显示服务器上数据库列表。选择"否"(缺省)则不允许。但即使WEB用户不能看到服务器上数据库列表,他们仍能打开有权限访问的单个数据库。
4、启动HTTP任务。在服务器控制台上,输入:loap http
小型项目
(1)概念
1、Nginx(俄罗斯程序设计师Igor Sysoev用C语言进行编写)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。
2、特点:占有内存少(在高连接并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达 50,000 个并发连接数的响应),并发能力强。
3、中国大陆使用nginx网站用户有:网络、京东、新浪、网易、腾讯、淘宝等。
4、Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。
5、Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。
(2)安装
官网:http://nginx.org/
选择要安装的版本:
(3)使用
打开conf/nginx.conf,修改端口号,和主页根地址为:打包后index.html的目录
模拟域名配置(本地域名设置):
在浏览器地址栏输入配置好的“域名:端口号”回车:
❸ linux系统下怎么搭建网站服务器
具体方法如下:
1、使用putty或类似的SSH工具登录服务器(本地安装跳过);
❹ linux centOS下怎么配置web服务器
PS:系统概述
硬盘:130G
分区:两个分别是根目录(49G,系统及初始化软件)和/data(89G,空着的、我计划放所有网站)
已安装的程序:
1.vsftp
2.mysql
3.apache
在开始操作之前我们把密码改一下。。。还有就是本文中出现的《》这个符号都表示不用输入
passwdroot《设置root密码》
示例我们把所有网站程序都划分到/data/web/下,方便以后管理
老板要求
把在本地开发的php+mysql程序通过FTP架设到web服务器,并能通过域名正常访问网站。步骤/方法
第一步:创建FTP
================================================================
chmodgo+rwx/data《给data分配权限》
cd/data《进入data分区》
mkdirweb《建立web目录》
chmodgo+rwx/data/web
cd/《回到根目录,个人操作习惯,可跳过这步》
useradd-s/sbin/nologin-gftp–d/var/www/web/wyh.comjiangge
(注:-s/sbin/nologin是让其不能登陆系统,-d是指定用户目录为/var/www/web/wyh.com
jiangge为ftp用户名字)
passwdjiangge《设置FTP密码》
vi/etc/vsftpd/vsftpd.conf《修改FTP配置文件》
注:按一下i进入到编辑模式,修改完后按一下ESC退出编辑模式,再输入《:wq》(其作用是保存改修改并退出)《:q!》退出不保存《:q》没有做过修改用这个退出
idle_session_timeout
data_connection_timeout
找到这两个,,修改其值大于900,如果不修改这个的话,,FTP链接很慢
#xferlog_file
找到这个,删除#。。。作用是记录FTP的日志
/etc/init.d/vsftpdrestart《重启FTP后配置文件才会生效》
到此第一步OK你可用FTP登陆啦!
注:我这配置有这个问题没解决,登陆报超时,但你耐心的等一会,就会链接好,如果有盆友知道解决方法的,请帮解答一下。。。谢谢。。
======================================================================
第三步:配置mysql
==============================================================================
/usr/local/mysql/bin/mysql–uroot-p《登陆mysql,按一下ENTER然后输入mysql密码,默认和万网root密码一样》
usemysql;《选择mysql表》
grantalloncqwebseo_db.*tocqwebseo@localhostidentifiedby'cqwebseomysql';《添加一个数据,有所有权限,cqwebseo_db为数据库名,cqwebseo为用户名,cqwebseomysql为密码》
flushprivileges;《不用解释吧,真就度娘一下。》
exit;《这个也不用说吧》
/usr/local/mysql/bin/mysqladmin-uroot-p8y6v8a3c7ushutdown《停止mysql》
/usr/local/mysql/bin/mysqld_safe《启动mysql》
到此。。就Ok。注意。。注意。。。。。分号分号分号不要忘记了。
/usr/local/mysql/var《数据库存放目录》
================================================================================
第二步:配置httpd.conf
=======================================================================
echohi!Thistest!/data/web/cqwebseo.com>index.php《在cwebseo.com里面建立一个内容为hi!Thistest!的index.php文件》
vi/var/www/conf/httpd.conf《进入主战场》
按上下键,翻到文档最后,然后加入下列表代码(不知道怎么加进的,看第一步的注意事项)
<VirtualHost*:80>
DocumentRoot/data/web/cqwebseo
DirectoryIndexindex.php
[email protected]
ServerNamecqwebseo.com
ServerAliaswww.cqwebseo.com
#ErrorLog/data/web/sanmao/log/error.log
#TransferLog/data/web/sanmao/log/access.log
</VirtualHost>
简单说一下。。。。。。网上有很多这方面的资料
DocumentRoot/data/web/cqwebseo这个就是网站的决对地址说白就是你分配给他的FTP地址
DirectoryIndexindex.php这个表示网站默认首页是index.php
[email protected]服务管理员的邮箱
ServerNamecqwebseo.com这个你懂的
ServerAliaswww.cqwebseo.com这个也不需要解释吧
余下的两个被我注释掉喽,,,意思是网站的日志文件存放地
var/www/bin/apachectlrestart重启apachectl
var/www/bin/apachectlstop停止apachectl
var/www/bin/apachectlstart启动apachectl
OK到这里。。第二步就完。。。你能输入网址。。。看到这个目录啦。。不过有个前题条件。。这个个域名要解析过来了滴哈。。不然的话。。你就不要输入域名那两个。。直接用你服务的IP地址访问也行的。。。。如果你操作正确啦。。就能看到网页上出现hi!Tistest!
❺ 有没有用C或c++写的web服务器
C++单独作为应用服务的服务器较少,http服务器有一些的。比如IIS、apache、nginx,d都是基于C/C++的web服务器,国产的有数蚕web服务器,完全使用C++,基于Linux epoll模型。
如果C++服务端要求简单,可以直接基于socket编写。如果通信场景复杂,建议使用成熟的C++网络库,如POCO、cpp-net、boost-asio、数蚕网络通信库。
❻ linux的web服务器,在cgi(c)程序中如何跳转到某个网页呢,感谢了
看一下w3c的<form>,<method=post>还有action
❼ 如何在linux搭建web服务器
可以参考如下Web服务器的建立过程。示例环境及web服务器软件:
Ubuntu 12.04
LAMP(Linux,Apache,Mysql,PHP)
1、安装Apache
(1)在安装HTTP Server之前需安装APR(Apache Portable Runtime)和APR-util安装APR
$ tar zxvf apr-1.4.6.tar.gz
$ cd apr-1.4.6/
$ ./configure
$ make
$ sudo make install
(2)安装APR-util
$ tar zxvf apr-util-1.4.1.tar.gz
$ cd apr-util-1.4.1
$ ./configure –with-apr=/usr/local/apr (whereis apr)
$ make
$ sudo make install
(3)安装httpd-2.4.2.tar.bz2默认安装位置/usr/local/apache2网页放在/usr/local/apache2/htdocs配置文件/usr/local/apache2/conf/httpd.conf
$ tar jxvf httpd-2.4.2.tar.bz2
$ cd httpd-2.4.2/
$ ./configure
$ make
$ sudo make install
(4)启动HTTP Server$ sudo /usr/local/apache2/bin/apachectl startAH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
(5)查看http是否正常运行$ netstat -a | grep httptcp 0 0 *:http *:* LISTEN
(6)在浏览器输入127.0.0.1如果正常应该显示“It works!”
2、安装MySQL
(1)、下载安装mysql-5.5.25.tar.gz,默认安装位置/usr/local/mysql/
$ tar zxvf mysql-5.5.25.tar.gz
$ cd mysql-5.5.25/
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql
$ cmake .
$ make
$ sudo make install
$ cd /usr/local/mysql/
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .
$ sudo scripts/mysql_install_db –user=mysql
$ sudo chown -R root .
$ sudo chown -R mysql data/
$ sudo cp support-files/my-medium.cnf /etc/my.cnf
$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
(2)、启动MySQL:
方法1:$ sudo service mysql.server start
方法2:$ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
3、安装PHP
(1)安装下载php-5.4.4.tar.gz
$ tar zxvf php-5.4.4.tar.gz
$ cd php-5.4.4
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --enable-mbstring --with-mcrypt(可能需要安装libmcrypt-dev )
$ sudo make install
$ sudo cp php.ini-development /usr/local/lib/php.ini
(2)配置HTTP Server使之支持PHPapache配置文件/usr/local/apache2/conf/httpd.conf修改或添加如下配置
<;IfMole dir_mole>
DirectoryIndex index.php
<;/IfMole>
<;FilesMatch \.php$>
SetHandler application/x-httpd-php
<;/FilesMatch>
(3)重启HTTP Server
$ sudo /usr/local/apache2/bin/apachectl restart
❽ web服务器有哪些
目前主流web服务器有三个:apache、IIS、nginx。
其中apache是开源的老牌服务器,多用于传统业务,其优点是系统稳定,扩展模块丰富,各种特性支持完整,并且跨平台。
IIS是微软改拿誉主力打造的web服务器,目前作为Windows系统组件一部分,和微软上层web开发(asp.net)应用接口紧密。
nginx是开源的后起之秀,是俄罗斯敏乎开发的一款用于高并发服务的web服务器,主要应用于高并发网站、静态服务器、下载服务器等,其优点是性能更高,核段支持负载均衡,反向代理。
国产web服务器主要有:
Tengine:是淘宝开发团队基于nginx修改的,优化了资源请求的web服务器,其特点继承nginx,并针对资源请求做了优化。
数蚕web服务器:是数蚕科技基于c++的Linux下的web服务器,主要用于静态页面和简单的计算型服务网站。其特点是支持高并发,支持多进程,c++/c接口良好,缺点是动态页面支持较差。