随着互联网的快速发展,我们每个人都有机会在网络上展示自己的才华和观点。但很多人却因为没有搭建个人站点的技能而望而却步。今天,就让我们零成本搭建一个属于自己的个人站点吧!
聊聊站点搭建说起站点搭建,很多人都有感慨,因为只有当遇到较大的问题的时候才会考虑搭建,比如技术人员流动大导致网站中风格百出,百花齐放,无用代码一大堆不敢删,奇葩逻辑遍地皆是却没有一行注释、一篇文档。在这种无奈情况下,我们不得已选择了搭建一个新站点,寄希望于解决所有问题,但往往代价比收益高出一个数量级,很多人因为搭建被迫出局。
但是,站点搭建这件事情是一件必经之路,任何一个网站从诞生到成熟都会经历几次搭建,因为没有人能在最初的时候就预示到最终的形态。就算像百度这样成熟的公司,他们内部的系统也是平均两年做一次大规模的搭建。
回过头来说一下我的个人站点搭建的初衷:1)我也是不断成长的,作为一个想要独立运营网站的人来说,新的尝试总是会吸引我;2)很多关注我的网友觉得我之前写的教程总有意犹未尽的感觉,希望能深入写一点;3)php终究不是世界上最好的语言(此处可能引发战争),用来用去觉得还是迁移python为好,也和我们的内容创作知识做个结合。
技术栈选择首先说语言。
我曾经说过,语言只是工具,每门语言都有它存在的理由,它擅长用在什么地方就用在什么地方,不擅长的不要勉强,不歧视、不在一棵树上吊死、哪个行就上哪个。
后端语言我选择了python,因为python是社区最活跃的语种之一且呈上升趋势,另外也是人工智能与大数据方向的主流语言。
web框架我选择了django,因为它更专业更强大,扩展性强,社区也更活跃。
前端框架我选择直接用django模板渲染,没有选择anglar等前端框架,因为seo不友好。
服务端容器选择在tomcat、apachehttpd、nginx等Web服务器下游,需要部署python的应用服务器容器,我选择了wsgi,它类似于nginx,通过一个守护进程把不同的http请求转交给子进程并发处理,并且支持多线程的方式,性能较高,更重要的,django会自动帮我们生成wsgi的配置,天然对wsgi友好。
原型搭建工具流行web框架都有简单易用的原型搭建工具,现在我们利用django工具搭建最基本的运行环境安装开发和运行的基本环境首先,python是必须的,我们选择python。
然后,安装django相关组件(当前最新版是1.doban.com/simple–trsted-hostpypi.doban.com)。创建开源代码库在githb中创建仓库shareditor,并在本地创建空仓库提交githb库在:https://githb.com/warmheartli/shareditor本地仓库如下:
lichang@localhost:~/Developer/shareditor$]ls
REDME.md
创建django工程
在安装django时已经自动帮我们安装了django-admin工具,执行如下命令自动创建一个完整的工程目录(其中最后一个参数是工程目录,倒数第二个参数是工程名):
django-adminstartprojectshareditor/Users/lichang/Developer/shareditor
这时能够找到自动创建的manage.py文件(一个工具脚本,不需要修改),和工程总目录shareditor(里面包含了配置文件settings.py、总路由配置rls.py、wsgi协议配置文件wsgi.py)。
下面我们在这个工程里创建我们网站app:
django-adminstartappweb
我们看到它自动创建了web目录,并且自动帮我们组织了一些文件,包括:admin.py:数据库表的后台管理类一般定义在这里apps.py:这个app的配置信息,这个文件一般不动migrations目录:存储数据库迁移相关的临时文件,不需要动models.py:和数据库对应的model类一般定义在这里tests.py:自动化脚本views.py:视图层脚本,我一般会把控制逻辑写到这里。
这些文件全都看不懂也没有关系,到现在为止,我们的网站已经可以运行了,执行:
pythonmanage.pyrunserver
就可以访问网页了,打开我的原创www.shareditor.com有更多内容哦,如下:
上面的页面是django展示的默认页面,下面我们稍作修改来看看django框架是怎么按照我们的指示工作的helloworld。
修改web/views.py,增加如下函数:
from django.http import HttpResponse def index(request):
return HttpResponse("Hello, world!")
来修改我们的路由规则,修改shareditor/rls.py,把内容改成:
from web import views
下面我们重新执行pythonmanage.pyrnserver,并打开浏览器看看是不是看到了高大上的HelloWorld!
让网站更专业上面执行的pythonmanage.pyrnserver实际上只是django的一个用于开发和调试的方法,它只是一个进程一个线程在运行,无法支持网站的高并发访问,下面我们介绍一下如何部署一个专业的网站。
首先我们配置好我们的web容器,在shareditor目录下创建wsgi.ini,内容如下:
[wsgi]
chdir=/Users/lichang/Developer/shareditor
http=0.0.0.0:8000
http-keepalive=1
modle=shareditor.wsgi:application
master=true
processes=4
daemonize=/Users/lichang/Developer/shareditor/logs/wsgi.log
disable-logging=1
buffer-size=1684
harakiri=5
post-buffering=8192
post-buffering-bfsize=65536
pidfile=/Users/lichang/Developer/shareditor/logs/wsgi.pid
enable-threads=true
single-interpreter=true
这里的目录要根据你部署的目录做相应修改。因为logs目录还不存在,所以我们手工mkdir创建一个。
下面执行启动命令:
wsgi--ishareditor/wsgi.ini
这时我们可以查看一下logs/wsgi.log文件,如果没有异常信息说明网站已经部署成功了,我们psx|grepwsgi看一下进程:
lichang19.4588s4S+1:19下午:. grep--colorwsgilichang17... S1:18下午:. wsgi--ishareditor/wsgi.ini lichang17..491694?? S1:18下午:. wsgi--ishareditor/wsgi.ini lichang16..491654?? S1:18下午:. wsgi--ishareditor/wsgi.ini lichang15..4916484?? S1:18下午:. wsgi--ishareditor/wsgi.ini lichang14..49164?? S1:18下午:. wsgi--ishareditor/wsgi.ini lichang13..49164?? S1:18下午:. wsgi--ishareditor/wsgi.ini lichang12..49164??
好了,到这里我们基本完成了零成本搭建个人站点的过程!当然,这只是基础,后续你还可以根据需求进行扩展和优化。祝你搭建成功,开启你的网络之旅吧!