linux下python和webpy怎么搭建,第1张

基于python的web开发,这里我们使用linux为开发环境,搭建基于nginx + webpy + fastcgi

有些基本基本概念解释下,哈哈,因为我不懂

1wsgi为Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口

2uwsgi,另一种python定义的web服务器和web应用的接口

3REST服务,REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

4CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能

以下内容主要来自

http://webpyorg/cookbook/fastcgi-nginx

需要的软件

nginx 07以上版本,我使用的是nginx 092

webpy我使用的webpy-037

spawn-fcgi 163

flup 10

nginx的配置请参看官方文档

spawn-fcgi是lighttpd的一个子项目用于多进程管理

webpy和flup安装方式为解压后运行python setuppy install

安装编写indexpy

点击(此处)折叠或打开

#!/usr/bin/env python

# -- coding: utf-8 --

import web

urls = ("/", "hello")

app = webapplication(urls, globals())

class hello:

def GET(self):

return 'Hello, world!'

if __name__ == "__main__":

webwsgirunwsgi = lambda func, addr=None: webwsgirunfcgi(func, addr)

apprun()

注意indexpy需要使用命令chmod +x indexpy加入可执行权限

将indexpy放入/data/www(我所使用的目录你可以修改)

修改nginxconf配置

index要加入indexpy

Nginx的配置加入

点击(此处)折叠或打开

location / {

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param GATEWAY_INTERFACE CGI/11;

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param REMOTE_PORT $remote_port;

fastcgi_param SERVER_ADDR $server_addr;

fastcgi_param SERVER_PORT $server_port;

fastcgi_param SERVER_NAME $server_name;

fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_script_name;

fastcgi_pass 127001:9002;

}

使用Spawn-fcgi

spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002

如果报错为126,说明indexpy没有可执行权限

netstat -lnp | grep 9002参考是否启动成功

我运行的实际为

spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002 -F 2

启动2个进程

启动nginx

浏览器输入地址

成功结束

环境搭建。

环境搭建比较繁琐,记得当时也是满世界找资料,所以我直接打包好了所有的文件(apache(已经放进去python-wscgi)+webpy+apache所需要的vs2010运行库+python+网站文件),直接解压放上去就能用。有需要同学让我传一个或者网盘发一把就行。

装apache并配置python-wscgi,这个比较惨,花了好多时间去搜索才搞定,主要是windows上的python-wscgi不好难找。

为了节省以后的开发时间,我把配置好的apache给打包了,反正也是绿色的,新建网站只需要在服务器上配置开机启动apache,并在apache的config里面修改下自己网站路径就行。

2开发。

开发阶段倒是没什么好说的,webpy官方有教程,不过这里我需要提几点建议:

如果可以务必全站用utf-8编码。

建立数据库建议写个生成脚本,比如createDataBasepy,有改动重新运行一遍,不要试用ide去建。

一基本概念

因特网起源于美国国防部高级研究计划管理局建立的阿帕网。网站(Website)开始是指在因特网上根据一定的规则,使用HTML(标准通用标记语言下的一个应用)等工具制作的用于展示特定内容相关网页的集合。

二建设网站考虑因素

1、网站的客户服务群体;

2、网站的内容方向和性质;

3、网站的功能描述和结构分析;

4、网站的用户体验;

5、网站的盈利方式;

6、网站的未来发展方向。

架设FTP,方法是FTP架设

SERV-U30

主要新功能:

以 WindowsNT/2000/XP 的 Service 形式运行, 可以随开机而启动服务

把服务器和管理工具分离, 而管理工具可以远程配置 Serv-U 3 的服务器

虚拟路径映射 (Virtual path mappings), 可以很方便地把不同分区, 甚至不同机器上的路径都映射到你想它出现的位置, 对于登录用户来说, 他根本看不出虚拟映射和实际有什么分别

似乎对 DoS (Deny Of Service) 攻击有点对策, 实际应用情况不清楚

Step #1 安装

点击安装程序, 直点 Next 就完成了 没什么好说的

Step #2 第一次运行安装完成后, 服务器的Service会启动, 管理工具会自动运行, 你看到的, 是要你配置好它的 Setup Wizard 唔 基本上 Next 下去就是了, 下面几个可能你会有兴趣:

Domain name: 域的名字

Allow anonymous access: 要让匿名登录吗 (选 No 可以跳过这部分)

Annoymous home directory: 匿名登录后, 用户会看到的目录

Lock annoymous users into their home directory: 选Yes, 不要让他们乱跑

Create named account: 要建立有非匿名用户吗

输入用户名, 密码

(大约和上面过程一样)

Account admin priviledge: 这个用户有远程管理 Serv-U 3 的权限吗

呵呵 通常选 No priviledge 吧

嘿! 基本上搞好了!

Step #3 认识 Serv-U 3 管理工具的的界面

左边的树状结构是 Serv-U 3 的结构层次:

1 Serv-U Server 下面是管理工具在管理的 FTP,

其中<>就是你机上那个服务器了

2 在每个服务器中

License: 给你填注册码

Settings: 服务器总配置

Activity: 给你监测本服务器的运作情况

Domains: 下面的各个 Domain, 是以你的机器拥有的不同IP开的服务器,

按刚才"第一次运行"来做, 你现在会有一个 Domain 了

Step #4: 整体配置

在<>的Settings:

General: 总体限制, 参数设置

Max Speed- 总体限速,

不设的话, 极速可达约 1MBytes/S

Max no of users - 同时的连接数目

不要太多, 很伤硬盘的, 建议不超过20

Check Anonymous password - 匿名登陆密码检查,

不要选, 否则 IE 不能进入

Block Anti Time-out schemes

Block "FTP_bounce"

主要是把些无聊人赶掉, 都选吧, 细节看 Help

Block users who connect

随意, 用于"罚"一下用多线程下载的用户

其馀选项看 Help 吧

Dir Cache: 目录缓存

用户较多时, 可以明显加快用户浏览的速度,

把它打开, 用默认的 MaxSize 25, Time-out 600 sec 差不多了

Auto-Refresh 选取后你会看到在缓存中有哪些目录

Advanced:

Server:

Enable security - 安全设置生效

一定要选上! 否则你会死得很难看 KAKAKA

Sockets:

Inline out-of-band data

选取后听说可以防止 DoS 攻击, 但默认没选, 你自己决定吧

如何配置用户:

Step #1: 域 (Domain) 配置

在 Domains 下选取你的域吧!

Name: 域的名字

Domain IP address: 为简单起见, "Use any available IP address" 算了吧

Domain type:

Store in INI file 比较好,

它把你的服务器的设置都放到 ServUDaemonini ,

重装系统后把这文件放上去就行了

FTP port number:

通常是 21

Settings:

General:

Max no of users - 同时的连接数目

和上一个差不多, 不过是在域里限制

Virtual path mapping - 请看 VPM 篇

Links - 同上

Messages:

很好玩的, 可以把别人登录看到的信息都改掉

Logging:

就是 log 啊 不懂 看 help!

Step #2: 用户帐号

在 Domains 下

Users 右击出现新增/移除用户选单

点选任一用户后, 各项用户参数意义:

Account:

Disable account: 暂时令它失效

Automatically remove account on date: 到了某日期就删掉该用户! (爽!)

User name: 不用多说吧

Password: 留空不填代表不用密码

Home directory: 这用户登录时看到的第 1 个目录

Lock user in home directory:

最如想在用这帐号登陆后, 看到的根目录是所设的 Home Directory,

就选吧 (建议选取, 否则地址会比较难看)

Priviledge: 这用户远程管理 Serv-U 服务器的权限, 具体看 HELP

General:

Allow only N login(s) from same IP address

限制同一 IP 用这帐号的连接数, 选了它吧!

如果考虑到用 IE 的用户, 最好设两个连接,

否则对方可能不能下载, 如果狠心点, 设 1 个也没关系!

Max upload Speed

用这帐号, 每一个连接上传文件的极速

Max download Speed

用这帐号, 每一个连接下载的极速

Idle time-out

发呆多久才 kick 他出去, 个人认为 5 分钟都够了

Sesson time-out

无论他有没有发呆, 上来一段时间后就把他 KICK 走, 即使他在下载

什么东东也照踢不误, 并且在 1 分钟内不让他再上来 这样在很忙下载

站点中可能有用, 可以让多点人有机会访问, 不过确是有点讨厌 呵呵

Max no of users

这帐号同时允许的总连接数目

其馀的比较少用, 看 HELP 吧

Dir Access:

这里设置这用户对你硬盘中, 实际路径的读写权限, 关键哦!

无论是 HOME 目录好, 映射目录也罢 要让用户用得到, 也要在这里加

具体意义在界面上也很明确吧 不多说了, 但别忘了

(记得把 HOME 目录在这里加多一次, files-[read], directories-

这样人家看能看到, 下载到你的东东)

Step #3: 群组帐号

在 Domains 下

Groups 右击出现新增/移除用户选单

看上去很简单是不是 对了 把一个 Group 设置了一点参数,

在任一用户 - Account - Group(s) 中把他加进去, 他就拥有那个参数的权限

有什么用 你自己想想吧

哈哈 基本上我们都搞好了, 但是重头戏 Virtual path mappings 还没出场,

Virtal path mappings:

究竟是什么原因呢 这是因为很多老鸟都对上面几篇一屑不顾, 但却往往

死在 VPM 手上, 但是死在 VPM 的石榴裙下也甘心了 呵呵

在 Domains 下

Settings:

General:

Virtual path mappings:

Step #1: 虚拟路径映射的概念:

1 Physical path: 目录的实际路径

可以是任何Windows分区上任何东东, 甚至网络邻居里的也可以

2 Mapped to: 映射到 (这个目录必须实际存在)

你想把它"变到"你硬盘里的那个目录呢

你可以用到两个变量:

%HOME% : 即"Home directory"

%USER% : 用户名

3 mapped path name:

这个虚拟目录在显示出来的名字

4 记得要在各用户的 Dir access 中设置它对实际路径的权限哦!!!!

Step #2: 举例:

1 你想把 f:movie 映射到匿名登录后看到的 MyMovie 目录:

Physical path: f:movie

Mapped to: %HOME%

mapped path name: MyMovie

在 anonymous 帐号对 f:movie 设 file - read, dir - list 权限

2 你想把 g:mp3 映射到 alex 登录后看到的 AudioMySongs 目录:

Physical path: g:mp3

Mapped to: %HOME%Audio

mapped path name: MySongs

在 alex 帐号对 g:mp3 设 file - read, dir - list 权限

如何封用户:

Step #1 按 IP 封

在 Serv-U 中, IP Access 很多地方都有出现, 这就是限制 IP 访问的地方了

Domain- Settings 里有; 各用户- Settings 里有; 各群组- Settings 里也有

IP access:

如果要限制 IP, 就在这里设置 限制是由上到下执行检查的

这里给出一些例子: (!注意次序!)

1 只对某几个 IP 开放帐号:

----------------

A: 202382418

A: 202382492

A: 202382483

D:

----------------

意思是, 对 202382418 , 202382492 , 202382483

开放, 其馀都不准进入

2 只对一个网段开放:

----------------

A: 20238241

D:

-----------------

意思是, 只对 20238241 开放, 其馀拒绝

3 只拒绝部分IP

--------------

D: 123166

D: 2023823456

A:

--------------

拒绝 123166 的B类网段, 及 2023823456 访问,

其馀都欢迎

看了三个例子, 大家都志该知道 IP 限制如何设置吧,

要注意的一点是, 最后一个限制项目, 最好要设成

A: (其馀都允许进入) 或

D: (其馀都不准进入)

否则, 可能会得不到预期中的限制的效果

Step #2 看不爽封

如果有个人连了上来, 你看他不爽想封掉他

在 <> - Activity 或

你的Domain - Activity 会看到他,

右击, KILL USER

他在你FTP的命运就在你手中了

The End

后记: 好累啊~~~

对IP Access的补充。。。

Step ## "-"连字符的用法(昨晚试了偶半小时。。:< )

补充:

用来简洁地表示不属于整段类地址的一段IP

它可以任意在A、B、C、D类地址中使用

这可是个很好用的地方

比如我只对教育网地址202112-202120开放anonymous帐号

在warftpd/g6中 br>你就要老老实实地在user->anonymous->ip access "allow"项中逐步加上

202112()

202113()

r>202120()

而在ServU30中

你可以直接写成:

202112-120

就这么简单!

#######################################################

关于Message的一些动态的参数:

%Time - 目前的时间

%Date - 目前的日期

%UNow - 目前的联机人数

%UAll - 从激活到目前为止的联机人次

%U24h - 在过去 24 小时内的联机人次

%MaxUsers - 总联机人数上限

%MaxAnonymous - 匿名联机人数上限 (Anonymous FTP)

%Name - 帐号名称

%IP - 对方主机名称/地址 (Hostname/IP)

%DIR - 目前的目录

%Disk - 目前的磁盘驱动器名 ( C: D: E: )

%DFree - 磁盘剩余空间

%Fup - 上传档案个数

%Fdown - 下传档案个数

%Ftot - 总传档数

%Bup - 上传位数

%Bdown - 下传位数

%Btot - 总传输位数

%Tconm - 联机时间数 (以分为单位)

%Tcons - 联机时间数 (以秒为单位, 与 %tconm 配合使用)

例:

◎ 来自 %IP 的女神迷您好。

◎ 女神事务所自 Yggdrasil 系统激活以来已接通 %UAll 位使用者。

◎ 过去 24 小时总共有 %U24h 次联机。

◎ 目前有 %UNow 位使用者在线上,最多容许 %MaxAnonymous 位使用者同时联机机

连上去看到的则是

220-Serv-U FTP-Server v21 for WinSock ready

220-◎ 来自 1401121832 的女神迷您好。

220-◎ 女神事务所自 Yggdrasil 系统激活以来已接通 55 位使用者。

220-◎ 过去 24 小时总共有 55 次联机。

220-◎ 目前有 2 位使用者在线上,最多容许 50 位使用者同时联机。

好玩吧^_^ 这些参数也可以用在 Message File!

关于Dns2go的使用:

DNS2GO——用你自己的名字上网

引言

拨号上网的网民都知道,每次上网用的IP地址都是由ISP动态分配的,因此每次都不同。这样做当然有利于ISP充分利用手中有限的IP地址资源,但却给用户带来了一些不便,因为这就像一个人每天都必须换一个电话号码,让想找他的人无所适从。况且在有一些场合下都需要知道并且告诉别人你的IP地址,比如说你想与朋友做一个点对点的连接进行聊天、传送文件或者玩Internet游戏等等。

再比如,你的公司出于成本和安全性考虑,决定建立本地的Web、FTP、E-mail服务器,目的就是每天定时上网,供出差的同事在外地浏览本公司主页、下载文件以及发回邮件。目前我们对上述问题的解决办法通常是:运行Winipcfg查出自己当前的IP,然后用另一部电话告诉朋友。这时你应该看出拥有固定IP有多方便了吧。也许有人注意到,在我们上网的过程中,在需要输入访问地址的时侯,基本上都是用一个域名代替其IP地址,比如在浏览器中输入http://wwwsinacom”,而不是用它的IP地址。其实,这是利用了Internet上的DNS服务,也就是通过DNS服务器将你输入的域名转换为对应的IP地址。然而,要拥有自己的域名或者固定IP,要么你就去托管(或租用)服务器空间,要么就通过专线直接连至Internet,显然这对一般用户和中小公司而言,是难以承担也是没必要的。 那么怎样才能解决这个矛盾呢?答案就是动态域名解析——DDNS。DNS2GO就是能实现DDNS的软件之一,而且是最好用、功能最全的。[/url]

DNS2GO简介

DNS2GO是Deerfieldcom公司继Wingate 40之后推出的新产品。DDNS的实现要依靠两个程序的协同工作,其一是服务端程序DNS2GO Server,该程序安装在Deerfield的主机Discoverydns2gocom上,最终的域名解析工作由它来完成;其二是客户端程序DNS2GO Client,它安装在拨号上网用户的计算机上。它的作用在于:一旦用户上网,它就取得当前的IP并传送给服务器。这样一来,只需从Deerfield申请一个域名,然后将申请到的域名告诉你的朋友。以后只要你一上网,你的朋友就可以通过这个域名找到你了。

申请域名

域名可以到DNS2GO主http://wwwdns2gocom去申请。申请过程中要输入自己的名字、Email,然后在十几个免费域名中选择一个自己中意的,大致的样式是DNS2GOCOM。之后在“”的位置给自己的计算机起个Internet上的名字,比如:Myweb、Myftp,或者用你自己的名字也行。这样,只要你在网上,你的朋友就可以通过DNS2GOCOM的域名找到你了。[/url]

域名申请好后,接着你要填写关于你申请的域名的相关信息(Profile),包括站点简介、说明、分类,是否将自己的域名显示在DNS2GO社区里,你的计算机上安装了何种服务器软件以及申请哪种增值服务等。最后,你会收到一封E-mail,里面有一个注册码,就是注册DNS2GO时输入的那个,这时就可以下载客户端程序DNS2GOEXE了。

关于增值服务(valuesss Added Services)

上文提到的增值服务是Deerfield为本地计算机安装有E-mail服务器的用户而开设的。具体有如下几项:

1No Email Routing

此项为用户在申请域名时的默认设置。该项服务为免费,但用户计算机不在线时就无法收到其他人发来的邮件。

2POP Forward

POP转发,即用户可以指定一个24小时在线的POP服务器,这样当用户计算机不在线时,Deerfield自动将发给该用户的邮件转发到指定的POP服务器上。

3SMTP Routing

SMTP路由发信,即当用户不在线时,Deerfield先将发给该用户的邮件暂存在自己的服务器上,一旦该用户上网并收到来自DNS2GO客户程序的传送请求,就将存储的邮件直接发给该用户计算机上的邮件服务器。

4POP Routing

POP路由收信,即当用户不在线时,Deerfield先将发给该用户的邮件存储在自己的服务器上,然后该用户可以随时上网并通过本地Email服务器或Email客户程序(如:outlook express)收回邮件。

以上的2-4项服务因为都要占用Deerfield的服务器空间,所以均要收费,但可以有一个30天的试用期。收费标准大约是$70/6MB/年。

使 用 手 册

1安装

首先拨号上网,然后运行下载的安装程序。在图-1中选择要安装的组件,其中DNS2GO Client是必选项。如果用户通过局域网代理服务器上网,则可以在代理服务器上安装下一个组件“DNS2GO网关扩展程序”。注意:这里所说的代理服务器仅指通过TCP Mapping方式进行代理的代理服务软件,如WinGate 20,不包括NAT型的代理服务软件(如SYGate)或LSP型的(如使用WGIC的WinGate30/40)。

在图-2中指定用户计算机上网的方式:“Direct…”为直接方式(通过SYGate、WGIC上网也在此类);“…proxy…”为使用TCP Mapping方式。

2注册

安装完毕后直接进入DNS2GO主界面中的注册页,如图-3。在Domain Name栏中输入申请好的域名,Registration Key栏输入注册码,之后点击“OK”。这时DNS2GO客户开始与远程服务端程序通信,稍后主界面将自动缩小为任务栏上的“升空火箭”图标,表示注册成功,用户就可以使用申请的域名了。如果你在本地计算机上装了Web服务器,这时可以打开浏览器并输入你申请的域名。怎么样,看见你的主页了吧? 3程序界面

状态页(Status)

DNS2GO Service Connection:当前与DNS2GO服务器的连接状态或上一次发生的错误。

Connect/Disconnect:手动连接到DNS2GO服务器或断开连接。

Internet Connection:当前与Internet的连接状态。

Details:

①Domain Name:用户申请好的域名。

②Domain Status:DNS2GO服务器如何处理指向用户域名的访问请求。在“连接”页中指定。

③Heartbeats:DNS2GO客户程序发送给DNS2GO服务器的信息包数目。DNS2GO客户程序每隔一段时间就发送一个heartbeat(心跳)信息包给DNS2GO服务器,通知服务器以下信息:用户计算机仍然在线、用户计算机当前的IP地址。

④Time On-line:用户计算机在线的时间。

连接页(Connection)

已与DNS2GO服务器建立连接时:

①Point my domain to my current IP address:用户与DNS2GO服务器连接成功后,服务器即将用户申请的域名绑定至该用户的当前IP地址,这样,Internet上的其他用户能通过此域名访问该用户的计算机。

②Set my IP address to:将域名绑定到其他的IP地址。

③Redirect web requests(with a www prefix)to this port:启用HTTP转发功能。这时其他用户发过来的HTTP请求(标准端口:80)被自动转发到指定端口(例如:8080)。如果用户的web服务器被安装在非标准端口,应在此进行相应设置。

未与DNS2GO服务器建立连接时:

①Send the visitor a web page that tells them I am off-line:用户当前未与DNS2GO服务器建立连接时,其他人如果访问该用户域名,DNS2GO服务器会发给其一个WEB页面告知被访问的用户当前不在线。

②Point my domain to this URL:其他用户的访问请求(仅限于HTTP协议)被转发到指定的WEB页面(URL)。

③Set my IP address to:其他用户的访问请求被转发到指定的IP地址。如果指定地址为0000,则拒绝所有的访问请求。

选项页(Option)

Use Proxy Server:

如果用户计算机是通过代理服务器的TCP Mapping方式使用DNS2GO客户端程序,则应选此项;但如果是通过NAT(如Sygate)或LSP(如本地计算机安装了Wingate30/40的WGIC)的,则不选。

①Proxy Address:代理服务器的IP地址(如:19216801)。

②Port:DNS2GO客户程序通过该端口与代理服务器建立TCP Mapping。

③Gateway Extensions:如果代理服务器上安装了网关扩展程序,则在此进行设置。网关扩展程序包含在DNS2GO的安装程序里,但它必须安装在代理服务器上。DNS2GO客户程序通过网关扩展程序得到代理服务器当前是否上网的信息,从而实现自动与DNS2GO服务器建立连接或断开连接的功能,如图-7。

Check Gateway Status Before Attempting DNS2Go Connection:试图连接到DNS2GO服务器前先连接到网关扩展程序,查询代理服务器状态。如果代理服务器不在线,DNS2GO客户的查询不会导致代理服务器拨号上网;如果代理服务器在线,则自动连接至DNS2GO服务器。

离线)或On-line(在线)。假设为离线时,DNS2GO客户将不做连接的操作;假设为在线时,DNS2GO客户仍然试图连接至DNS2GO服务器。前者为建议选项。

Gateway IP Address:网关扩展程序所在IP地址,应与代理服务器为同一地址(如:19216801)。

viPort:网关扩展程序侦听DNS2GO客户查询请求所使用的端口。

Run DNS2GO as a service:

将DNS2GO设置为系统服务,即在开机时自动运行,关机时才关闭。

Enable Event logging:

启用日志功能。

Auto connect to and disconnect from the DNS2Go service:

一旦用户计算机上网,DNS2GO客户就自动连接到DNS2GO服务器;一旦用户计算机下网,DNS2GO客户就断开与DNS2GO服务器的连接。如果用户计算机通过代理服务器上网,并希望使用此功能,必须在代理服务器上安装网关扩展程序。

Re-attempt connection failures X times:

与DNS2GO服务器连接失败时,重试的次数。

Show splash screen on startup:

启动DNS2GO客户程序时,在桌面显示一闪而过的窗口。

Transfer Email:

如果用户在申请域名时选择了第三项增值服务,则在此进行相应设置,如图-8、图-9,其中图-9中显示了DNS2GO客户成功连接到远程邮件主机且邮件传送已经开始。

①Mail Host:Deerfield为用户存储邮件的服务器名(maildns2gocom),端口为25。如果通过mapping代理上网,则应写入代理服务器的IP地址(如:19216801)及mapping端口(如:1025)。

②Transfer Mail Automatically When I Connect to the Internet:当DNS2GO客户程序侦测到用户已上网时,自动发送一条请求给maildns2gocom,要求其将存储的邮件传送过来。

③Transfer Now:手动发出传送请求。

拨号调度页(Scheduled Dialing)

用户可在这里指定DNS2GO客户在一周内的哪几天的哪个时间段,使用指定的拨号网络连接自动拨号上网。

时间同步页(Time Sync)

这里列出了几个Internet上的时间服务器,供用户校正本机时间。

注册页(Registration)

Tell A Friend:

以Email的方式通知朋友你申请的DNS2GO域名。

Get Free Key:

如果遗失了注册码,通过此功能可以再次得到,但要输入第一次申请时的个人信息。

Ground Control:

此功能让用户在线修改申请使用域名的profile、增值服务等。

 支持XML Web服务的事务利用公共语言运行期中的支持 其是基于Microsoft Transaction Server ( MTS)和+ Services中相同的分布式事务模型 该模型基于明确的判断一个对象是否参与一个事务 而不是编写特定的代码用来处理委托和回调一个事务 对于一个使用ASP NET创建的XML Web服务 你可以通过设置其应用到一个XML Web服务方法上的WebMethod属性的TransactionOption属性来声明一个XML Web服务的事务行为 如果该XML Web服务方法执行的时候抛出一个异常 那么该事务自动地结束 相反 如果没有发生异常 该事务自动委托

 WebMethod属性的TransactionOption属性规定一个XML Web服务方法如何参与一个事务 虽然这个声明级别表示一个事务逻辑 但是它是消除实际事务的一个步骤 当事物对象访问数据源(如数据库或消息队列)时实际事务产生 关联该对象的事务自动流向适当的资源管理程序 像 NET Framework Data Provider(用于SQL Server或OLE DB)这样的 NET Framework数据提供者在对象的上下文中查找事务并通过Distributed Transaction Coordinator (DTC 分布式事务协调程序)编目事务 全部的事务自动产生

 XML Web服务方法只能参与一个作为新事务的根的事务 作为一个新事务的根 所有的与资源管理器(像运行Microsoft SQL Server Microsoft Message Queuing和Microsoft Host Integration Server的服务器)的相互作用维护需要运行健壮的分布式应用程序的ACID性质 调用其他的XML Web服务方法的XML Web服务方法参与不同的事务 因为事务不流经XML Web服务方法

 使用来自XML Web服务方法的事务 声明一个XML Web服务 [C#]  <%@ WebService Language= C# Class= Orders %>  [Visual Basic]  <%@ WebService Language= VB Class= Orders %>

 把一个汇编指令加到System EnterpriseServices上 <%@ Assembly name= System EnterpriseServices Version= Culture=neutral PublicKeyToken=b f f f d a a %>

 添加引用到System Web Services和System EnterpriseServices域名空间 [C#]  using System Web Services;  using System EnterpriseServices;  [Visual Basic]  Imports System Web Services  Imports System EnterpriseServices

 声明一个XML Web服务方法 设置WebMethod属性的TransactionOption属性为TransactionOption RequiresNew [C#]  [ WebMethod(TransactionOption=TransactionOption RequiresNew)]  public int DeleteAuthor(string lastName) [Visual Basic]  < WebMethod(TransactionOption:=TransactionOption RequiresNew)> _  Public Function DeleteAuthor(lastName As String) As Integer

 下面的代码示例显示一个使用单个XML Web服务方法的XML Web服务 调用DeleteDatabase 这个XML Web服务方法执行一个事务范围内的数据库操作 如果该数据库操作抛出一个异常 该事务自动地停止 否则 该事务自动地委托

 [C#]  <%@ WebService Language= C# Class= Orders %>  <%@ Assembly name= System EnterpriseServices Version= Culture=neutral PublicKeyToken=b f f f d a a %> using System;  using System Data;  using System Data SqlClient;  using System Web Services;  using System EnterpriseServices;

 public class Orders : WebService  {  [ WebMethod(TransactionOption=TransactionOption RequiresNew)]  public int DeleteAuthor(string lastName) {  String deleteCmd = DELETE FROM authors WHERE au_lname= + lastName + ;  String exceptionCausingCmdSQL = DELETE FROM NonExistingTable WHERE  au_lname= + lastName + ;

 SqlConnection sqlConn = new SqlConnection(   Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver );

 SqlCommand deleteCmd = new SqlCommand(deleteCmdSQL sqlConn);  SqlCommand exceptionCausingCmd = new  SqlCommand(exceptionCausingCmdSQL sqlConn);

 // This mand should execute properly deleteCmd Connection Open();  deleteCmd ExecuteNonQuery();

 // This mand results in an exception so the first mand is  // automatically rolled back Since the XML Web service method is  // participating in a transaction and an exception occurs ASP NET  // automatically aborts the transaction The deleteCmd that  // executed properly is rolled back

 int cmdResult = exceptionCausingCmd ExecuteNonQuery();

 sqlConn Close();

 return cmdResult;  }  }  [Visual Basic]  <%@ WebService Language= VB Class= Orders %>  <%@ assembly name= System EnterpriseServices %>

 Imports System  Imports System Data  Imports System Data SqlClient  Imports System Web Services  Imports System Web Util  Imports System EnterpriseServices

 Public Class Orders

 <WebMethod(TransactionOption:=TransactionOption RequiresNew)> _  Public Function DeleteAuthor (lastName as String) as Integer

 Dim deleteCmdSQL As String = DELETE FROM authors WHERE au_lname= + _ lastName + Dim exceptionCausingCmdSQL As String = DELETE FROM + _   NonExistingTable WHERE au_lname= + lastName +

 Dim sqlConn As SqlConnection = New SqlConnection( _   Persist Security Info=False;Integrated Security=SSPI;database=pubs;server=myserver )

 Dim deleteCmd As SqlCommand = New SqlCommand(deleteCmdSQL sqlConn)  Dim exceptionCausingCmd As SqlCommand = New _  SqlCommand(exceptionCausingCmdSQL sqlConn)

  This mand should execute properly deleteCmd Connection Open()  deleteCmd ExecuteNonQuery()

  This mand results in an exception so the first mand is   automatically rolled back Since the XML Web service method is   participating in a transaction and an exception occurs ASP NET   automatically aborts the transaction The deleteCmd that   executed properly is rolled back

 Dim cmdResult As Integer = exceptionCausingCmd ExecuteNonQuery()  sqlConn Close()

lishixinzhi/Article/program/net/201311/11378

Java是一门编程语言,可以用来编写各种类型的程序,包括Web应用程序。而Tomcat是一个Web应用程序服务器,可以用来运行Java Web应用程序。

尽管使用Tomcat可以轻松地创建和部署Java Web应用程序,但是Java语言本身也有内置的HTTP服务器,可以用来创建和运行Web应用程序,而不需要使用Tomcat这样的第三方服务器。

Java内置的HTTP服务器主要包括两个:HttpURLConnection和HttpServer。HttpURLConnection可以用来创建HTTP客户端,发送HTTP请求和接收HTTP响应。而HttpServer则是一个简单的HTTP服务器,可以用来创建和运行Web应用程序。

使用Java内置的HTTP服务器来创建Web应用程序的好处是,不需要依赖第三方服务器,可以在运行程序的同时,轻松地创建和运行Web应用程序。另外,使用Java内置的HTTP服务器还可以减少程序的依赖,降低程序的复杂性和维护成本。

当然,如果需要创建更为复杂的Web应用程序,使用Tomcat等第三方服务器仍然是一种不错的选择,因为这些服务器提供了更多的功能和扩展性,可以满足更加复杂的需求。

开始建站了,暂时还没想要做些什么东西。

Anyway,先搞个云服务器吧,那要怎么搭建呢?先来个最简单的。

Nginx 配置文件目录一般在 /etc/nginx/ 下,打开 nginxconf 文件可以看到配置:

当外网用户访问服务器 Web 服务由 Nginx 提供,Nginx 需要配置静态资源的路径信息才能通过 URL 正确访问到服务器上的静态资源。

当我们在服务器上安装并启动 Nginx 之后,就可以通过 http://<域名或IP> 访问我们的网页了。所以,在浏览器中输入 http://100234 即可。

我们观察到浏览器的地址变成了 http://100234/indexhtml ,这页面是安装 Nginx 的默认站点,可以在 /usr/share/nginx/html 目录下找到。在 nginxconf 配置文件中,有一项 root /usr/share/nginx/html 的配置,意思是当外网访问服务器 跟目录 时,Nginx 会将资源指向 /usr/share/nginx/html 的站点。

但如果输入地址,无法打开(如下截图)。

以阿里云为例,需要在云服务器添加 “安全组规则” ,添加并保存,重新刷新页面就能打开了。

我习惯将前端静态资源放置到服务器的 /data/www 下,因此将配置修改为 root /data/www 。此时访问 http://100234 会指向 /data/www/indexhtml (在不配置 location 的 index 情况下,Nginx 默认配置是 indexhtml )。

由于我使用的是 Mac 机器,因此可以直接在系统终端使用 scp 命令将本地文件上传到云服务器。

scp (secure copy)用于在 Linux 下进行远程拷贝文件的命令。类似于 cp ,只不过 cp 只能在本机进行拷贝,不能跨服务器。 -r 表示递归复制整个目录。

需要注意一下,下面两种的区别:

其中 1️⃣ 得到的是 /data/www/dist ,而 2️⃣ 得到的是 /data/www 。前者表示将 dist 整个目录拷贝至 /data/www 下。后者是把 dist 目录下的所有子文件和子目录都拷贝至 /data/www 。

换句话说就是,前者配置 root 的路径应该是 /data/www/dist ,后者则为 /data/www 。

效果如下:

在浏览器中访问 http://100234 即可看到我们配置的网页了。

最简单的 Nginx 部署静态网页就完了,其他的下次再讲

The end

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux下python和webpy怎么搭建

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情