python自学第一单元总结

这个第一单元是我自己划分的。

因为我之前连linux命令、如何装linux都很不熟悉。

多数都是拿来主义,直接买服务器或者VPS,人家都配好系统了。

然后按照项目说明一步一步走,上项目,所以总觉得有瓶颈。

这次狠下心来学习,还是很有收获的。

我的第一单元指的是,从硬件开始,做系统,做虚拟环境,做LINUX系统,做运行环境,测试技术,跑demo程序,实现自己的想法。最重要的是,理解这些事情为什么这么做。

目前的情况:

1、本地台式机win10系统,VMware装centos7,配好防火墙和网络。

这一步,相当于买来的装好系统的VPS。

2、virtualenv 虚拟2个python环境,

(1)环境1,python 3 , 装 djanjo原版,gunicorn 代替 uwsgi,正常跑起来。

django,研究了urls.py 和view.py,明白了M、T、V的机制,知道去哪改。

(2)环境2,python 2,直接pip mezzanine, gunicorn 代替 uwsgi,正常跑起来,supervisor 进行监控。

测试了mezzanine的功能。

3、在两个virtualenv的虚拟环境外,nginx,分别监听2个虚拟环境,绑定2个域名go.com和to.com,正常访问,当然是修改本地hosts文件实现的。。。这2个域名有一个就可以轻松生活了。 实际上,每个虚拟环境内,也可以建无数个django实例,绑定无数域名的。突然想起一个问题,如何实现djanjo的泛解析?思考了一下,其实是nginx的泛解析,不难办。

4、数据库用的是Postgresql。需要多个数据库,直接配就可以。又想到一个问题,Postgresql数据库如何备份?http://blog.csdn.net/licheng6302/article/details/7567523

4、局域网内FTP文件,ssh访问centos7,修改和上传文件。顺带学了下最浅显的markdown写法。还是要实现ftp,不然将来没法多人操作。http://www.centoscn.com/CentosServer/ftp/2015/0502/5335.html

http://www.cnblogs.com/zhi-leaf/p/5983550.html

5、搜集了django的学习资料,和现有的资源。同样搜集了一些python的资源。

6、完成这些,可以做什么?

(1)买个VPS,配置下,可以做多个网站,给多个企业做多个网站,绑定多个域名。

(2)django和Postgresql可以一对多,一对一,或者多对多。有些django可以没有前台,只管后台抓数据,或者做发邮件之类的活就可以。

(3)什么好处?性能更强,能实现更多想法;更充分利用资源,省钱。什么缺点?管理只能自己来了,除非有更好的办法。

6、接下来,学习django,两个途径:快速学习数据库操作,直奔主题,做自己想实现的功能;系统地跟着找到的资源用一个月的时间学通djanjo。两个途径,待定。

7、另外,原定的docker还未尝试,怕一次消化不了。

后续的任务队列和worker部分,还未尝试,等用到的时候再说吧。

 

 

 

一些命令centos7 主要是进程管理

按照端口进行查询:

1
lsof -i :8002

可以查出:

1
2
3
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
uwsgi   2208   tu    4u  IPv4 0x53492abadb5c9659      0t0  TCP *:teradataordbms (LISTEN)
uwsgi   2209   tu    4u  IPv4 0x53492abadb5c9659      0t0  TCP *:teradataordbms (LISTEN)

这时根据 PID 可以用下面的命令 kill 掉相关程序:

1
sudo kill -9 2208 2209

按照程序名称查询:

1
ps aux | grep uwsgi

补充内容:

使用 gunicorn 代替 uwsgi 的方法

1
2
3
4
sudo pip install gunicorn
在项目目录下运行下面的命令进行测试:
gunicorn -w4 -b0.0.0.0:8001 zqxt.wsgi

-w 表示开启多少个worker,-b 表示要使用的ip和port,我们这里用的是 8001,0.0.0.0代表监控电脑的所有 ip。

如果使用了 virtualenv 可以这样

1
/path/to/env/bin/gunicorn --chdir /path/to/project --pythonpath /path/to/env/ -w4 -b0.0.0.0:8017 project.wsgi:application

用 –pythonpath 指定依赖包路径,多个的时候用逗号,隔开,如:’/path/to/lib,/home/tu/lib’

4. 使用supervisor来管理进程

安装 supervisor 软件包

1
(sudo) pip install supervisor

生成 supervisor 默认配置文件,比如我们放在 /etc/supervisord.conf 路径中:

1
(sudo) echo_supervisord_conf > /etc/supervisord.conf

打开 supervisor.conf 在最底部添加(每一行前面不要有空格,防止报错):

1
2
3
4
5
6
7
[program:zqxt]
command=/path/to/uwsgi --http :8003 --chdir /path/to/zqxt --module zqxt.wsgi
directory=/path/to/zqxt
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true

command 中写上对应的命令,这样,就可以用 supervisor 来管理了。

启动 supervisor

1
(sudo) supervisord -c /etc/supervisord.conf

重启 zqxt 程序(项目):

1
(sudo) supervisorctl -c /etc/supervisord.conf restart zqxt

启动,停止,或重启 supervisor 管理的某个程序 或 所有程序:

1
(sudo) supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]

djanjo建站源码问题

1、’https://github.com/django-oscar/django-oscar

商城系统   官网http://oscarcommerce.com

2、一个国外的CMS

https://github.com/wagtail/wagtail

http://wagtail.io

3、一个教程

This is a tutorial we are using for Django Girls workshops http://tutorial.djangogirls.org/

https://github.com/DjangoGirls/tutorial

4、blog

https://github.com/Fantomas42/django-blog-zinnia

貌似不错

https://demo.django-blog-zinnia.com/blog/

5、shop没演示

https://github.com/awesto/django-shop

6、另一个博客,带有完整一步一步教程

https://github.com/zmrenwu/django-blog-tutorial

DEMO  http://demo.zmrenwu.com/

7、shop

https://github.com/mirumee/saleor

带有demo   https://demo.getsaleor.com/

8、后台模版

https://github.com/darklow/django-suit

demo http://djangosuit.com/admin/

9、django项目库https://djangopackages.org/categories/projects/

10、两套教程

http://python.usyiyi.cn/translate/django_182/index.html

http://www.cnblogs.com/feixuelove1009/p/6029698.html

本地python已配好

在本地配好了。

win10系统,装了WMware, 然后装的centos7系统。

没用docker,按照

https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-centos-7

攻略走的。

中间有几个坑,比如VI的操作,nano的操作,防火墙的设置,网络的设置。

最后,攻略中的版本比较旧,实际中目录有所不同,所以走到一半开始有不同。

最后比较严重的nginx一直502,查找错误,发现是.sock文件没有生成。

然后想办法跳过.sock。

不管怎么说,耗时2天,总算配好了。

目前,虚拟机开着,局域网内电脑可以测试。FTP还没装。

接下来应该研究下python下的网站。

等到网站建立自如的时候,再说docker。

 

关于python环境的问题,研究的小结

先补充一点,Gunicorn是替代uwsgi的网页服务器。并且据说比uwsgi快一些,支持gevent。Virtualenv是python的虚拟机,可以多个python不影响。

关于多站点:uwsgi的多站点配置https://www.liaoxuefeng.com/article/001373892270040b645f6f886d94bdfbf57b8dd596f19b3000

用Gunicorn部署web.py应用

http://www.linuxidc.com/Linux/2014-01/95075.htm

Gunicorn运行python的网站太简单啦!

https://www.oschina.net/question/25940_10804

倒是有一篇flask + celery + gunicorn + gevent + nginx + supervisord 实现业务系统的开发及部署。但是因为前面已说过,拒绝flask。

1、是否使用docker

若使用,2个成熟方案

a、Django+PostgreSQL+Nginx+Gunicorn+Celery+RabbitMQ+Supervisor+Virtualenv  + docker

https://github.com/jcalazan/youtube-audio-dl

是一个成品网站布置的环境。可以说是极品。

有安装说明:https://www.calazan.com/using-docker-and-docker-compose-for-local-django-development-replacing-virtualenv/

但稍微感觉有点怕的是,好像安装不是那么详细。

b、研究很久的,

如何使用 Docker 组件开发 Django 项目?

51cto的带图片,是翻译的,原文地址

https://realpython.com/blog/python/django-development-with-docker-compose-and-machine/

原文已更新。 按着步骤操作应该没问题。

顾虑:没有多进程的处理。如果贸然用,以后好不好扩展,牵涉到docker。

2、若不用docker,目前有一篇可以说是最好的,

https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-centos-7

再就是之前整理的,另有一篇不完整但很详细的http://www.isaced.com/post-248.html

Python开发基础准备之环境

Django+ Postgresql+uwsgi+ nginx+supervisord+ RabbitMQ+Celery Beat+Celery

主要是Django(python框架)+ Postgresql(数据库)+uwsgi(网站运行环境)+ nginx(网站运行程序)+supervisord(进程管理)

RabbitMQ+Celery Beat+Celery  主要是任务列表,多进程处理等。

python django+uwsgi+nginx 搭建步骤(血一般的教训)

Nginx+PostgreSQL+Django+UWSGI搭建

ubuntu初始化python3+postgresql+uwsgi+nginx+django

阿里云计算:CentOS+nginx+Django+Postgresql web环境搭建 – 林之冬 – 博客园

如何使用 Docker 组件开发 Django 项目?

Python开发基础准备之Postgres

PostgreSQL学习手册(函数和操作符<一>)

http://www.cnblogs.com/stephen-liu74/archive/2012/05/02/2294071.html

完整的学习手册:

http://www.cnblogs.com/stephen-liu74/category/343171.html

在Django上设置postgresql和运行代码

http://blog.csdn.net/GeekLeee/article/details/52780106

http://blog.csdn.net/p106786860/article/details/49877483

http://blog.csdn.net/kongxx/article/details/48622673

如何使用 Docker 组件开发 Django 项目?

http://www.jianshu.com/p/8dbb33914b01

 

Python开发基础准备之Python/Django

Python是种语言,Django是它的开发框架,比较重的框架。

那么一共有哪些框架?

求推荐简单好用的 app 后台框架,最好是 pythonhttps://www.v2ex.com/t/163541

ivenvd2015-01-20 16:22:10 +08:00

@yueyoum 很想知道你是拿什么跟 Django 比才得出这结论的…… LZ 的需求的重点显然是快速上手开发小型项目,而不是在谈哪个功能全,不知道你又是扯性能、又是扯数据库的干嘛……

就上手而言,Django 需要:
1. 读 Django 那个晦涩的文档。
2. pip install django
3. django-admin.py startproject mysite
4. 读文档修改各种配置文件。
5. 读文档开始编程。
6. python manage.py runserver

而随便一个轻量级框架,比如 Flask,只需要:
1. pip install flask
2. 读文档开始编程。
3. ./app.py

结论无需多说。

另外个人推荐 padrinoFlask 可用的积木太少了,质量也一般般。而 padrino 则和 Rails 共享大量的 gem,可轻可重,用来做 API Server 很不错。

接着搜索了一下Padrino ,得到
Padrino 博客开发示例
好像不简单,那么搜下flask,得到

超小团队选择django还是flask? – 知乎https://www.zhihu.com/question/33538127

里边有句话:推荐Django。Flask很多插件都有大坑。Django相比提供了整套的解决方案,而且坑相比不是那么大。
也有欢呼的:

 

 

这几天研究了下望远镜

有两个需求促成了这次对望远镜的研究。

1、突然想看看夜空,就想查查天文望远镜

2、想去看场比赛,就想查查手持望远镜。

对于天文望远镜,并不是那么高端,想看看月亮上的坑,只要300元左右就可以,二手的甚至有几十块钱的。但是高端的,牛反什么的,就贵了。牛反是牛顿反射。

然后突然没了兴致,就开始查手持的。

先说结论:关于放大倍数,天文的真正几百倍的,就很难得了,还需要有经纬度赤道仪寻星镜等等。手持的基本在6~12倍,7、8、10倍最为常见。别被一些无良商家忽悠。

以下主要讲手持望远镜。按原理分,保罗式屋脊式,主要是棱镜的方式。

两次反射的是保罗式,直线成像是屋脊式。

屋脊式的多数一千以上,国内有悦目、森林人,有5、6百元的。轻便。

保罗式的重,但便宜,宾得的有不到4百元的UP8X21,当然物镜才21MM,很低端。博冠是传统意义上的国产第一品牌。另外云南光电厂给很多世界品牌代工,云光自己的品牌是PANDA。博士能牌子不错,但有两个坑,1是国内假货多,2是正品的比美国亚洲的贵3倍。

观鸟镜多数是屋脊式样的,一般有三脚架。

科普贴

这个帖子对我帮助很大,利用公式“出瞳直径=物镜内径÷望远镜倍率”找一把毫米尺量一下望远镜的物镜内径和出瞳光斑的直径,即可计算出望远镜的倍率。如望远镜的物镜口径为50mm,出瞳直径为7mm,那么我们可以用公式判断望远镜的倍率为7倍。

50X50倍的,纯属胡扯。放大倍数12以上的,即使真的做到了,手持的话,因为呼吸之类的原因,会晃动看不清。

望远镜的参数详解
第一:规格:10×40 说明望远镜的放大倍数或者叫倍率是10倍,望远镜的物镜镜片的直径是40毫米,对于变倍望远镜,可能标为:10-40×60,那么倍数是在10-40倍之间连续可调,口径是60毫米,倍数大于口径是没有意义的,标注50×50这样是一种明显的欺骗
第二:1000米视野范围:114/1000米,指望远镜在1000米远处所看到的范围的宽度,望远镜倍数越大,1000米处的视野范围越小
第三:.出瞳距离:12毫米望远镜在视网膜上成像时眼睛距离目镜的最佳距离和望远镜的倍数等有关,一般来说倍数高的望远镜出瞳距离小一些.足够大的出瞳直径可以保证望远镜在使用者佩带防毒面具或眼镜时使用.
第四:出瞳直径:4毫米 出瞳直径=口径/倍数.比如10×40的望远镜,出瞳直径就是4毫米.当然这是理想状态,一些望远镜可能因为光路设计和成本等原因不能达到这个理论值.

还有一个问题,望远镜能看多远, 这个没法回答,可能无限远,只是不管看多远倍数是一定的。

所以望远镜口径越大是否就亮度越高,视野效果越好呢?
在做工和材质相同的情况下,是的。
不过决定视野效果的还有很重要一点:透光率。也就是说一个7×32的顶级镜,是完全有可能超过8×42甚至7×50的望远镜的视野效果的。透光率用百分比表示,厂家一般不作为指标标出。所以小白选望远镜时,千万不要只看参数,还需要看品牌,最好选那些比较出名的品牌,因为在参数一样的情况下,假冒货 或者劣质品,和正规望远镜大厂的货 还是相差很远的。