python部署 python部署到docker
如何用python开发移动App后台?需要掌握哪些技术
include fastcgi_params;给一套我用过的解决方案,用来开发过web项目(网页 + ios)和手游项目(ios + 安卓),都是一套后台对应多种前端平台:
python部署 python部署到docker
python部署 python部署到docker
||/ Name Version Description
web框架:Django
Django 是一套相对全(zhong)面(yong)的框架,基本你要的功能都有,文档很细致,上手比较容易,开发效率比较高。自带 auth、session、orm、admin 等功能,尤其是 admin,如果要求不是太高,用自带的后台管理系统就能省下很多开发工作。
相对 apache 较轻,简洁。用来部署 django 也比较方便,可参考 Setting up Django and your web server with uWSGI and nginx
数据库:mysql
这个不限定,看业务需求和开发者喜好。当然如果用了 django,自然选一个 orm 支持比较好的。
RESTful API:Tastypie
基于 Django 的 RESTful API。Django 本身作为一个 web 框架,返回的结果默认是渲染好的 html 文本。借助 Tastypie,可以比较方便的制作 json 数据格式的接口,将前后端解耦合。这样不管是网页、iOS 还是 Android,都可以用同样的接口。
再针对问题补充一下:
1、如果使用python语言,需要学习哪些知识?
python 语言本身,使用的框架,web 开发的通用知识,比如 HTTP 请求的处理流程、RESTful、OAuth 等。
见上文。
3、如何部署?本地调试,以及公网部署?
Django 自带本地调试服务,开发的时候用局域网地址调试即可。公网部署见上文。
5、python的后台服务能支持多大的pv量会影响用户体验性能?
这个没法给确切,具体情况会受机器硬件条件(CPU、内存、I/O)、网络带宽、代码质量、架构设计,甚至配置参数的影响。目前有较大型网站使用 python,并正常运作(参见 有哪些大型公司在使用 Python?有哪些知名项目是主要由 Python 写成的? - Crossin 的回答),所以 python 本身不是问题。实践时,做好压力测试和上线后的性能,找出瓶颈不断优化是王道。
6、如何兼顾 网启动pycharm 开始编写功能模块页前端以及移动端 开发的后台?
通过 API,后台无需知道是什么平台在使用它。
7、有没用相关的案例,即用python开发的移动后台?有没有该问题的开源项目?
通常框架会自带测试案例。真实案例开源的暂时不知道。如果哪天我把之前写的开源了,再回来。
怎样用python编写一个可扩展更新的exe程序
2.2 源码变更1. 手动制作python的exe可执行程序Python没有内建一个编译为exe的功能。给python程序的部署带来不少的麻烦。所以就会出现一些py2exe之类的很不错的工具,用于自动把.py文件编译为.exe文件。
回到热加载的目的,不停机。如1L所说的HA机制等就可以很好的解决这个问题。最近抽空研究了一下手动实现类似py2exe的功能,希望加强对python的了解。结果还相当不错。把结果记录下来,与大家共享。
1.1. 原理文中所描述的方法,基于python的以下几个功能
1) python程序运行时,会在sys.path指定的路径中查找库文件。
2) python从2.3开始,支持从zip文件中import库(支持.py,.pyc和.pyo,但不支持.pyd)
3) python提供C API,让c语言的程序,可以很方便的调用python的程序
1.2. 实际步骤注:设python安装在c:python25目录中,的可执行文件放到d:dist目录中
1) 先去c:python25LibTastypie 可以处理掉生成 json 数据时的很多体力活。目录,把所有文件都出来,比如到d:pythonlib目录中
Python程序代码混淆、编译、打包、运行(桌面程序防向)
没有不能逆的软件。像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
fastcgi_pass 127.0.0.1:1234;虽然做不到尽善尽美,但是对代码进行混淆,增加一点的难度,或许能规避一些泄露的风险。
本次演示环境:linux
批量改名.pyc文件
移动.pyc文件
清理.py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
在原来的工具 pyminifier上修复了几个bug。
安装:
商用一般都是用种办法,小打小闹用第二种。python3 安装
或者clone下来,自行安装
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。
混淆的目的是程度保护源码,在发布到客户端后不被轻易。
用python做web开发,tornado 如何部署,都是用nginx+supervisor吗
2)so文件通过ida等工具也是可以反汇编的,可以通过对c语言进行代码混淆,花指令等作,提高通过ida等反汇编工具的分析难度。因为Tornado是异步的网络框架,性能够好,可以直接放在最外层,但是为了避免阻塞问题,会开多个进程,然后使用 Nginx 做反向实现负载均衡。具体可以看这篇文章 Introduction to Tornado 中文翻译。
另外,如果你需要部有工具类似py2exe转成可执行程序,隐藏全部源代码,虽然bytecode还是可以反编译编译,但是难度大多了署Django或者 Flask,则 Nginx+Gunicorn+Supervisor
Nginx放在最外层,然后使用Supervisor做进程管理,使用Gunicorn启动Django或者Flask,相较于uwsgi 的方法,简单很多,而且Gunicorn可以让你使用Gnt和Tornado来为你的后端实现异步访问,性能直接飙升。
使用python语言如何保密源代码以防止逆向工程?
4、如果使用python框架开发移动后台服务,在开发源码内使用哪种框架?mvc还是其它的,比如我返回json数据,每次json对象最外层有一些相同的东西,该如何处理?大家都很忙,谁有时间看你的的烂代码!
$:apt-get install python-flup如果真的怕泄露,别用python.
Python代码用任何方法都没法保证保密性,这个时候你可以考虑用一个工具「nuitka」,这个工具会把你的python源代码映射为c++然后编译为二进制,因此对方是无论如何得不到你的源代码的。
代价就是nuitka这个工具并不完美,有一些限制并不能完美的转换所有python代码。
1.用Cython编译python成 Windows的pyd文件或Linux的so文件,二进制文件相对安全性较高。
3.同其他语言程序一样,可以对调试状态进行检测,当处于调试状态时退出程序或进入混乱代码耗费逆向工程人员心神。
4.分享一个跨平台反调试手段,检测函数运行时间,加断点会导致函数运行时间变长,也可感知正在被调试。
只要汇编语言过关,逆向工程都是可以实现的,不要有其它想法。
1)可以把需要保护的部分用c语言实现,从而编译成so等文件,这样逆向的成本会比较高,可以防止直接打开python文件看到代码逻辑。
3)不存在无法逆向的技术手段,因此只能是看具体需求,选择具体的防逆向的技术手段。
1. 最稳的就是你改cpython加载代码的过程,改zip包读取最稳。
2. 借助一些加密工具在编译pyc之前进行一定的混淆,可以防君子,自我安慰一下。
可以考虑使用pymod工具,使用pymod pack 将模块加密打包,发布的时候一个模块就一个文件。
先睹为快,看看一个项目发布的时候,只有几个文件,
main.py 项目程序入口
setting.py 项目配置
apps 项目模块
plusins 项目插件目录
创建项目 pymod create demo1
cd demo1
一个模块默认由三个文件组成
__init__.py 、 handlers.py 、param_schemas.py
业务逻辑主要在handlers.py中编写
__init__.确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "明号码" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年龄" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def t(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="明号码验证通过")) else: self.write(FalseResponse(hint="明号码验证失败"))
三、项目部署
程序调试 修改setting.py
modules = ["mod1"] modules_config ={ "mod1": { "deny_ip": "", "allow_ip": "" } }
启动程序 python main.py
调试没有问题,进入发布模式
在项目目录下
pymod pack mod1
在target目录下生成mod1.mod文件,将其到apps目录中
修改setting.py
modules = []
再次运行 python main.py 测试
一切OK,系统就可以发布了。
说不能保密的,是没有研究过python的机制的。我做个一个项目,所有源代码自定义加密,运行时解密。
如何用nginx部署python写的socket代码
# 开发模式下 运行的模块名称必须填写1.安装nginx安装过nginx这就不好从新演示了.默认你也安装好了nginx.
那么这里就涉及到要开多个Tornado进程的问题,使用Supervisor来做这件事是最简单的。Supervisor 的使用方法可以看这篇文章 Python 进程管理工具 Supervisor 使用教程| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
+++-===========================-===========================-======================================================================
ii python-flup 0.2126-1 Implements Python Web Gateway Intece (WSGI)
3:配置nginx.conf.这个是按照网上配置的.
server {listen 12python 适合开发程序,或者自己科研使用的程序,如果是 作为用户程序,安装到 pc 或手机上,还是 其它 c++ 或ja 比较合适35;
server_name localhost;
#charset koi8-r;
#access_log /dev/null;
access_log /usr/local/nginx/logs/access.log;
location / {
#location /htm {
# root /home/utest/ms;#}root /home/utest/ms;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_mod;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;}}解释:端口:1235--为端口.端口:1234----为web运行的端口.
from=olddocs
TCP 不需要Nginx这种前端. 直接启动并开放对应端口就行.
你可以用supervisor之类的启动任务, 防止进程挂掉.
我用python开发了一个小程序,部署在别人的上,怎么让他看不到源代码?
结合混淆、编译和打包,尝试出以下发布脚本。还真没试过,,不过方法肯定是有很多中的,我想python的开发工具应该有带封装的程序吧!!!
2.安装flup$:dpkg -l flup打印信息:Desired=Unknown/Install/Remove/Purge/Hold用py2exe编译成exe文件就行了
web server:nginx只留下pyc文件。
如何将用python写好的本地web程序部署到腾讯云上
2、选择什么样的python框架开使用例子发,这个框架的优势?我们公司使用的是华为云,我们一般是通过远程的方式,直接把本地的web程序上传上去的,华为企业云这边自有的这个功能特别方便,不知道其他的云是不是也可以这样子作
创建模块 pymod add mod1Python的web项目如何进行动态重载和热部署?
你可以做的,就是不让别人用python读取源代码而已。那样实现起来比较简单。单纯从语言层次做到热加载不难。难的是web项目中,存储,后端逻辑ser2.用2.1 混淆工具pyminifier源码混淆器把代码搞的又臭又长。。。混淆完了再用Cython编译为二进制。。。这样静态反编译逆向难度也不小。v,静态文件等等许多相关的内容一起做到热加载。
如何做好python自动化运维
或者删Py文件,留解释过后的文件。或者搞一个代码混淆器,混淆一下就OK了嘛!!!(自己写一个也行)Python作为一种流行的脚本语言,有很多应用场景,比如自动测试、包构建、部署、作和维护等,比如Python脚本就是用来调用云服务SDK的。根据业务需要,可以随时创建所需数量的云实例,对云进行动态管理。
我以前做过这类事情,而且当时更严格,需要打包部署到客户的服务只在有效期内有效,超过有效期必须更新证书才行。通过脚本执行代码创建或发布ECS实例,与使用水、电、气等资源一样方便、高效。例如,在业务低估的时期,释放不必要的云资源以节省成本。
其实从运维本身的工作内容里来讲,具体使用什么方式运维其实是不重要的。
初阶运维可能使用shell脚本就能完成日常运维需求,进阶一点的可以使用Python脚本进行运维,再有一些经验的项目型运维可能就会直接使用一些高级语言比如Ja和Golang甚至C来写一些常用的运维工具了。
至于大家通常说的Python运维,其实是因为shell虽然灵活,但是扩展性不够,所以shell和其他语言之间需要做一个权衡选择,大家都选择了Python,因为它足够简单,上手容易,既灵活又好扩展,而且整个Python的开源包也都比较完善。所以后来基本上搞运维的基本都会做Python相关的开发,只是看更加偏重于做什么事情。
其实,想要把Python和运维关联起来,很容易,以前写的shell脚本都是和用python重新实现一遍,另外任何在运维过程中作可能有重复大于3次的,都应该尝试用编程的方式来进行自动化实现,这个Python是提倡开源的,既然选择Python还是拥抱开源才好~ 都开源还担心逆向工程嘛实现的过程初期可以简单脚本实现,后期完全可以用python将整个逻辑封装成项目或者直接开发成管理系统,让以前在主机上作的运维过程可以直接在页面上点点点就自动完成作。这些过程其实都是可以用Python去做的,当然都到这个程度了,就不限于用什么语言了。
建议你把你平时的日常运维工作列出来。 比如拷贝文件啊,部署啊,数据库维护啊之类的工作,列个表。 然后把每个工作项都用python实现。 然后放到系统的cron里面。 这样你的python学习步就完成了。 第二步,把生活中经常做的事情列举出来。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。