python部署服务
A. Linux涓嫔皢python镄凞jango椤圭洰閮ㄧ讲鍒痨pache链嶅姟鍣
杩椤嚑澶╄姳浜嗙偣镞堕棿,灏嗘妸django寮鍙戝ソ镄剋eb椤圭洰閮ㄧ讲鍒痨pache涓婏纴鍙傝冧简瀹樻柟镄勪竴浜涙枃妗e拰浜掕仈缃戜笂镄勬枃妗o纴杩樻槸鑺变简姣旇缉澶氱殑镞堕棿锛岃繖閲屾妸閰岖疆镄勮繃绋嬭翠竴涓嬨
鏂逛究链夐渶瑕佺殑链嫔弸锛屽彲浠ュ弬钥冿纴灏戣蛋寮璺!
1. django椤圭洰閮ㄧ讲鐜澧冭存槑
镎崭綔绯荤粺 : Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64
apache鐗堟湰 : httpd-2.2.3-22.el5
mod_wsgi鐗堟湰 : mod_wsgi-3.2-1.el5 fedora epel鍙浠ヤ笅杞
Django鐗堟湰 : 1.2.3
python 鐗堟湰 : 2.5
杩欓噷锅囧畾Django鍜孉pache宸茬粡瀹夎呭ソ锛屽苟涓挤jango镄勯”鐩宸茬粡寮鍙戝ソ銆
浠ヤ笂杞浠跺寘閮芥槸阃氲繃yum鍖呭畨瑁,杞浠跺寘閮芥槸绯荤粺镙囧嗳鐩褰旷粨鏋!
django寮鍙戝ソ镄勯”鐩鐩褰曟槸 /var/www/html/server,椤圭洰鐩褰旷粨鏋勫备笅(镙囧嗳django椤圭洰鐩褰旷粨鏋)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#tree -d server/
server/
|-- __init__.py
|-- manage.py
|-- settings.py
|-- backend
|-- static
| |-- images
| |-- locale
| |-- plugins
| `-- themes
| |-- default
| | `-- images
| |-- gray
| | `-- images
| `-- icons
|-- template
`-- view
2. Apache鍜宫od_wsgi閰岖疆
淇鏀箇sgi閰岖疆(/etc/httpd/conf.d/wsgi.conf)
?
1
2
3
4
5
6
7
8
#cat /etc/httpd/conf.d/wsgi.conf
LoadMole wsgi_mole moles/mod_wsgi.so
WSGIScriptAlias / "/var/www/html/server/django.wsgi"
Directory "/var/www/html/server"
Order Deny,Allow
Allow from all
/Directory
椤圭洰鐩褰曚腑镄刣jango.wsgi杩欎釜鏂囦欢鏄闇瑕佹柊寤虹殑锛屽悗闱浼氲村埌濡备綍鏂板缓杩欎釜鏂囦欢銆
apache浣跨敤镄勬爣鍑嗛厤缃,Apache镄凞ocumentRoot 鎸囧悜镄勬槸 /var/www/html 鐩褰
3. 鏂板缓django.wsgi鏂囦欢
鍦ㄩ”鐩鐩褰/var/www/html/server涓嬫柊寤轰竴涓猟jango.wsgi锛屾枃浠跺唴瀹瑰备笅:
?
1
2
3
4
5
6
7
8
9
10
#cat /var/www/html/server/django.wsgi
# -*- coding: utf-8 -*-
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs'
current_dir = os.path.dirname(__file__)
if current_dir not in sys.path: sys.path.append(current_dir)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
绗涓夎 os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 锛岃繖涓狲ettings灏辨槸鎸囬”鐩鐩褰曚笅镄剆etting.py鏂囦欢.
绗锲涜 os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs' 锛屾寚瀹氲В铡媏gg鏂囦欢镄刢ache鐩褰曪纴纭淇濊繍琛宎pache镄勭敤鎴凤纴鑳藉熷规ょ洰褰曟湁璇诲啓𨱒冮檺.
绗浜旓纴鍏琛 灏嗗綋鍓岖洰褰曡嚜锷ㄥ姞鍏ュ埌python镄勬悳绱㈣矾寰,濡傛灉椤圭洰涓链夎嚜宸卞啓镄勬ā鍧楋纴鏂逛究浣跨敤鍜屽彂甯
链钖庯纴杩欎釜django.wsgi鏂囦欢钖嶅彲浠ラ殢渚垮彇锛屼緥濡伥est.wsgi銆乤pp.wsgi绛夌瓑锛屼絾鏄涓瀹氲佷笌/etc/httpd/conf.d/wsgi.conf閰岖疆鏂囦欢涓閰岖疆淇濇寔涓镊淬
濡傛灉鎭ㄨ繖閲屾柊寤虹殑鏂囦欢钖崭笉鏄痉jango.wsgi钥屾槸test.wsgi锛岄偅涔/etc/httpd/conf.d/wsgi.conf涓镄勯厤缃灏卞簲璇ヤ慨鏀逛负
?
1
WSGIScriptAlias / "/var/www/html/server/test.wsgi"
4. 淇鏀筪jango椤圭洰涓镄剆etting.py鏂囦欢
镓惧埌椤圭洰鐩褰曚笅镄剆etting.py锛屽逛簬杩欓噷灏辨槸/var/www/html/server/setting.py銆傛垒鍒板叾涓镄凾EMPLATE_DIRS锛屼慨鏀逛负锛
?
1
TEMPLATE_DIRS = ("/var/www/html/server/template",)
娉ㄦ剰: 妯℃澘鐩褰曞湪杩欓噷涓瀹氲佺敤缁濆硅矾锷诧纴钥屼笉鑳界敤鐩稿硅矾寰,褰撶劧涔熸湁鏂规硶锷ㄦ佽剧疆妯℃澘璺锷
PS锛氩叧浜巑od_wsgi
鐩鍓峬od_wsgi链変袱绉嶅伐浣沧ā寮忥细
绗涓绉嶆槸宓屽叆妯″纺锛岀被浼间簬mod_python锛岀洿鎺ュ湪apache杩涚▼涓杩愯岋纴杩欐牱镄勫ソ澶勬槸涓嶉渶瑕佸彟澶栧炲姞杩涚▼锛屼絾鏄鍧忓勪篃寰堟槑鏄撅纴镓链夊唴瀛橀兘鍜宎pache鍏变韩锛屽傛灉鍜宫od_python涓镙烽犳垚鍐呭瓨婕忔礊镄勮瘽锛屽氨浼氩嵄瀹虫暣涓猘pache銆傝屼笖濡傛灉apache鏄鐢╳orker mpm锛宫od_wsgi涔熷氨寮哄埗杩涘叆浜嗙嚎绋嬫ā寮忥纴杩欐牱瀛愬逛簬闱炵嚎绋嫔畨鍏ㄧ殑绋嫔簭𨱒ヨ村氨娌℃硶鐢ㄤ简銆
杩欑嶆ā寮忎笅闇瑕佸湪apache镄剉host涓濡备笅璁剧疆锛
?
1
span style="font-family: 'times new roman', times;"WSGIScriptAlias /path /path-to-wsgi/span
鍗冲彲鐢熸晥锛屽逛簬灏忓瀷鑴氭湰镄勮瘽锛岀洿鎺ョ敤杩欑嶆ā寮忓嵆鍙銆
绗浜岀嶆槸钖庡彴妯″纺锛岀被浼间簬FastCGI镄勫悗鍙帮纴mod_wsgi浼氩焌pache镄勫栧3锛屽彟澶栧惎锷ㄤ竴涓鎴栧氢釜杩涚▼锛岀劧钖庨氲繃socket阃氢俊鍜宎pache镄勮繘绋嬭仈绯汇
杩欑嶆柟寮忓彧瑕佷娇鐢ㄤ互涓嬮厤缃鍗冲彲锛
?
1
2
3
4
5
6
7
8
9
10
#钖锷╓SGI钖庡彴锛宻ite1鏄钖庡彴钖嶅瓧
WSGIDaemonProcess site1 processes=1 threads=15 display-name=%{GROUP}
#鍒嗛厤褰揿墠涓娄笅鏂囧簲璇ヤ娇鐢ㄥ摢涓猈SGI钖庡彴锛屽彲浠ユ斁鍦↙ocation閲岄溃鎸囧畾
WSGIProcessGroup site1
#镙规嵁褰揿墠涓娄笅鏂囩殑ProcessGroup鍒嗛厤鍒板瑰簲镄勫悗鍙
WSGIScriptAlias /path /path-to-wsgi
鍦ㄨ繖绉嶆ā寮忎笅锛屾垜浠鍙浠ラ氲繃璋冭妭processes鍜宼hreads镄勫兼潵璁剧疆涓夌峂PM镄勬ā寮忥细prefork', 'worker', 'winnt'銆
winnt妯″纺
?
1
2
3
WSGIDaemonProcess example threads=25
wsgi.multithread True
wsgi.multiprocess False
姝ゆ椂processes=1锛屼絾鏄痬ultiprocess涓篺alse
濡傛灉鏄惧纺鍦版寚鍑簆rocesses涓1闾d箞锛
?
1
2
3
WSGIDaemonProcess example processes=1 threads=25
wsgi.multithread True
wsgi.multiprocess True
worker妯″纺
?
1
2
3
4
WSGIDaemonProcess example processes=2 threads=25
wsgi.multithread True
wsgi.multiprocess True
preforker妯″纺
?
1
2
3
WSGIDaemonProcess example processes=5 threads=1
wsgi.multithread False
wsgi.multiprocess True
钖庡彴妯″纺鐢变簬鏄涓巃pache杩涚▼鍒嗙讳简锛屽唴瀛樼嫭绔嬶纴钥屼笖鍙浠ョ嫭绔嬮吨钖锛屼笉浼氩奖鍝峚pache镄勮繘绋嬶纴濡傛灉浣犳湁澶氢釜椤圭洰(django)锛屽彲浠ラ夋嫨寤虹珛澶氢釜钖庡彴鎴栬呭叡钖屼娇鐢ㄤ竴涓钖庡彴銆
姣斿傚湪钖屼竴涓猇irtualHost閲岄溃锛屼笉钖岀殑path瀵瑰簲涓嶅悓镄刣jango椤圭洰锛屽彲浠ュ悓镞朵娇鐢ㄤ竴涓狣aemon锛
?
1
2
3
4
5
6
7
span style="font-family: 'times new roman', times;"WSGIDaemonProcess default processes=1 threads=1 display-name=%{GROUP}
WSGIProcessGroup default
WSGIScriptAlias /project1 钬/home/website/project1.wsgi钬
WSGIScriptAlias /project2 钬/home/website/project2.wsgi钬/span
杩欐牱瀛愪袱涓猟jango閮戒娇鐢ㄥ悓涓涓猈SGI钖庡彴銆
涔熷彲浠ユ妸涓嶅悓镄勯”鐩鍒嗗紑锛屽垎寮浣跨敤涓嶅悓镄勫悗鍙帮纴杩欐牱寮阌姣旇缉澶э纴浣嗗氨涓崭细钥﹀悎鍦ㄤ竴璧蜂简銆
display-name鏄钖庡彴杩涚▼镄勫悕瀛楋纴杩欐牱鏂逛究閲嶅惎瀵瑰簲镄勮繘绋嬶纴钥屼笉闇瑕佸叏閮ㄦ潃鎺夈
?
1
2
3
4
5
6
7
8
9
10
11
12
13
span style="font-family: 'times new roman', times;"WSGIDaemonProcess site1 processes=1 threads=1 display-name=%{GROUP}
WSGIDaemonProcess site2 processes=1 threads=1 display-name=%{GROUP}
Location 钬/project1钬
WSGIProcessGroup site1
/Location
WSGIScriptAlias /project1 钬/home/website/project1.wsgi钬
Location 钬/project1钬
WSGIProcessGroup site2
/Location
WSGIScriptAlias /project2 钬/home/website/project2.wsgi钬/span
瀵逛簬django 1.0浠ヤ笅镄勭増链锛岀敱浜庡畼鏂硅ゅ畾涓嶆槸绾跨▼瀹夊叏镄勶纴镓浠ュ缓璁浣跨敤澶氲繘绋嫔崟绾跨▼妯″纺
?
1
processes=n threads=1
瀵逛簬django 1.0浠ュ悗锛屽氨鍙浠ユ斁蹇幂殑浣跨敤澶氲繘绋嫔氱嚎绋嬫ā寮忥细
?
1
processes=2 threads=64
杩欐牱瀛愭ц兘浼氭洿濂姐
B. 如何用python在PC上搭建web服务器
要使用Python在个人电脑上搭建一个简单的Web服务器,可以遵循以下步骤。首先,你需要安装Python环境,确保已经安装了最新版本的Python。接下来,打开命令行工具,输入以下代码:
import sys
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
Handler = SimpleHTTPRequestHandler
Server = HTTPServer
Protocol = "HTTP/1.0"
接下来,你需要设置服务器端口。如果你的命令行中没有参数,服务器将在端口8000上运行。如果有参数,它将使用给定的端口号。接着输入以下代码来设置服务器地址和端口:
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
接下来,定义HTTP协议版本:
Handler.protocol_version = Protocol
然后,创建服务器实例:
httpd = Server(server_address, Handler)
最后,启动服务器:
print("Serving HTTP")
httpd.serve_forever()
这将启动一个Web服务器,你可以通过访问http://127.0.0.1:8000来查看服务器内容。这个服务器非常适合用于测试和开发,你可以通过它来快速共享文件或提供简单的Web服务。
需要注意的是,这个服务器只能在本地网络中访问,因为它使用了127.0.0.1地址。如果你想让其他设备访问这个服务器,需要使用外部IP地址和正确的端口。
此外,这个简单的Web服务器没有安全措施,不适合用于生产环境。在部署任何生产系统之前,建议使用更安全和功能更强大的Web服务器,如Nginx或Apache,并配置SSL证书以确保数据传输的安全。
C. python怎么搭建windows本地服务
一、从链接http://www.python.org/downloads/ 下载安装包,注意32位和64位安装包区别。我下载的是32位 2.7.6的,. 然后就是安装,默认安装到目录C:\Python27,然后将此路径添加到电脑 系统变量Path里。
从cmd进去,输入python验证是否安装成功。如果看到下图,表示安装成功了:
事
实上,这一步完成后,Python就安装完毕了。其他的都是开发的IDE。接下来就完成两个HelloWorld。在F盘新建目录
learnPython,然后新建一个txt文档后缀改为.py,文件名字为test.py,注意不是test.py.txt.这时会发现图标发生了变
化。右键选择:edit with IDLE,这是一个Python安装包自带的编辑器,里面输入以下内容:
[python] view plain print?
<span style="font-family:Comic Sans MS;font-size:18px;">import sys
reload(sys)
sys.setdefaultencoding('utf8')
print ("Hello World")
</span>
在保存时后面会让选cp569之类的编码方式,不用管他用默认的。cmd里进入到F盘的learnPython目录后,输入命令python test.py, 就可以看到如下运行结果.
二、就像大家不会用vim写C代码一样,要下个IDE,没错那就使用Eclipse+Pydev 搭建python开发环境。
在Eclipse的help--install new software里,点击ADD 名字输入Pydev,链接地址输入:http://pydev.org/updates 然后选择PyDev,另一个可以不选。就 可以下载了,会然给你确认是否同意之类的。安装完毕后,重启eclipse生效。
另外一种安装方式是从http://www.cnblogs.com/linzhenjie/articles/2639113.html直接下载PyDev,解压后得到Plugins和Feature文件夹 ,将这两个文件夹中的内容分别拷贝到eclipse的安装目录D:\ProgramFile\adt-bundle-windows-x86-20130522\eclipse 下对应的plugins和feature目录。重启即可!需要注意的是,如果安装了PyDev重启Eclipse没反应,那一定是你的java版本太低了。网上一种说法是PyDev的版本号需要和Python的版本尽量一致,这是胡扯。不一致也没关系,我的java版本是1.7.0_45, Python是2.7.6版本, PyDev是3.2.0版本。最高版本的PyDev3.3.0安装后不识别。我再另外一台电脑上,最初的java版本是1.6.*几的,PyDev换成2.8的都不中,后来java版本调整一切ok了。
三、在Eclipse里配置python.exe的路径。
打开eclipse后依次点击Window--Preference--PyDev-------Interpreters(解释器)---Python Interprete-----点击new,然后定位到Python.exe的安装路径。如下图,这样就配置好了。新建工作空间Python。
最终的界面如下:
四、让Python支持中文
说实话,在IDLE里尽管设置如下:
[python] view plain print?
<span style="font-family:Comic Sans MS;font-size:18px;">import sys
reload(sys)
sys.setdefaultencoding('utf8')</span>
但依旧是打印中文就挂。参考链接2,里指出要对eclipse设两个地方为utf8.其实完全没必要,因为eclipse本身默认的gbk编码对中文支持已经很好了,只需在test.py里的开头加上#coding=utf-8 就ok了。如下语句就能打印中文:
[python] view plain print?
<span style="font-family:Comic Sans MS;font-size:18px;">#coding=utf-8
print "Hello, World!"
print "您好,Python!"</span>
D. 服务器Centos7部署安装Python3的完整过程(3.10.1)
当需要在CentOS 7服务器上部署Python 3.10.1时,可能会遇到一些挑战。起初预计简单的安装过程可能只需10分钟,但实际上耗费了两个小时,期间解决了一系列意外问题。
首先,安装开发工具和依赖项至关重要。执行命令`yum -y groupinstall "Development tools"`,然后安装必要的库和依赖,如`zlib-devel`, `bzip2-devel`, `openssl-devel`等。`libffi-devel`和`zlib1g-dev`也是必不可少的,可以通过`yum install -y libffi-devel zlib1g-dev`来获取。确保安装所有以`zlib`开头的软件包以满足潜在依赖。
下载Python 3.10源代码,使用`wget python.org/ftp/python/3...`,接着解压`tar -xvJf Python-3.10.1.tar.xz`。为了确保顺利编译,需要升级OpenSSL到最新版本。安装Perl并下载最新OpenSSL源代码,然后编译和安装,同时替换旧的OpenSSL执行文件。
接着,升级GCC版本,通过安装相应的软件包并启用新的工具链。最后,进入Python源代码目录,运行配置脚本并编译安装Python 3.10,这个过程可能需要耐心等待。
安装完成后,创建软链接将Python 3.10与`python3`和`pip3`关联,确保版本验证无误。若软链接未生效,可能需要刷新动态链接库缓存。如果问题仍未解决,可能需要删除旧的`python3`文件并重新创建软链接。
经过这些步骤,你将成功在CentOS 7服务器上部署Python 3.10.1,同时还能配置pip使用阿里云镜像源,以提高包安装速度。验证安装结果后,你的服务器已经具备了最新的Python环境。
E. python用什么服务器
Python是一个广泛应用于软件开发的高级编程语言,因其简洁易懂的语法和强大的库支持而受到开发者的青睐。然而,在将Python应用程序部署到服务器上时,人们常常会面临选择哪种服务器的问题。本文将从多个角度探讨,Python可以使用哪些服务器进行部署。
首先,WSGI(Web Server Gateway Interface)服务器是Python Web应用程序的标准接口,它定义了Web服务器与Python应用程序之间的通信方式。因此,Python Web应用程序可以使用任何符合WSGI标准的服务器进行部署。目前,Gunicorn、uWSGI和mod_wsgi等服务器都是广受欢迎的选择。其中,Gunicorn是一个高效的Python WSGI HTTP服务器,具备负载均衡功能。uWSGI是使用C语言编写的服务器,可以与多种Web服务器协同工作。而mod_wsgi则是Apache服务器的一个模块,允许将Python应用程序嵌入到Apache中。
其次,HTTP服务器也是一个广泛用于部署Python应用程序的选项。这些服务器基于HTTP协议,能够处理Web请求并将响应发送回客户端。Apache、Nginx和Lighttpd等服务器在当前市场上非常流行。Apache是最常见的Web服务器之一,它支持多种编程语言,包括Python。Nginx是一个高性能的服务器,作为反向代理服务器处理Web请求。而Lighttpd是一个轻量级服务器,尤其擅长处理高并发请求。
此外,ASGI(Asynchronous Server Gateway Interface)服务器是处理异步Web应用程序请求的标准接口。随着Python 3.6及以上版本的支持,ASGI服务器成为了一个热门选择。Daphne和Uvicorn等服务器是ASGI接口的优秀实现,分别基于Twisted和uvloop/httptools,具备高性能和低内存占用的特点。
除了上述几种服务器,Python应用程序还可以利用FastCGI服务器、RPC服务器和消息队列服务器等进行部署。FastCGI服务器是一种快速的CGI服务器,能够处理CGI请求并缓存响应。RPC(Remote Procere Call)服务器用于处理分布式应用程序中的请求。而消息队列服务器则是一个分布式消息系统,用于处理异步消息的传递。
综上所述,Python可以使用多种服务器进行部署,包括WSGI服务器、HTTP服务器、ASGI服务器和其他服务器。具体选择哪种服务器取决于应用程序的特点和需求。正确的服务器选择能够确保Python应用程序在服务器上高效稳定运行,为用户提供流畅的体验。