随着互联网的迅速发展,搭建个人网站已经不再是遥不可及的事情了。很多人都在思考:如何零成本地搭建自己的网站呢?今天,就让我带领大家一起走向这一轻松愉快的旅程。
提到低成本搭建,就不能不谈谈网站的重建。许多人在遇到问题时才意识到重构的重要性,比如技术人员流动导致的代码风格不一、大量无用代码堆砌等。在无奈的情况下,我们不得不进行重构,寄希望于一劳永逸地解决所有问题。然而,往往事与愿违,代价比收益高出很多。
但重构是必经之路,任何一个产品从诞生到成熟都会经历几次重建过程。因为没有人能在最初时预见到最终的模式(如果真的能预见,为何还要有最初的版本呢)。就算像BT这样的成熟公司,他们内部的系统平均每两年也会进行一次重建。
那么,我们来聊聊我的网站重构初衷。首先,我也是不断成长的,作为一个想成为全栈工程师的人,总是想去尝试新思路;其次,很多关注我的网友认为我之前写的教程意犹未尽,希望能深入一些;再者,我认为php并不是世界上最好的语言(此处可能会引发战争),多次使用后觉得迁移到python会更好一些,也可以与我们的机器学习知识相结合。
我们首先来说说语言的选择。我曾说过,语言只是工具,每门语言都有它存在的理由。它适合用在哪种场合就用在哪种场合,不擅长的不要勉强。我们应该不歧视、不在一棵树上吊死,哪个行就上哪个。
在语言选择方面,我选择了python。因为python是社区最活跃的语种之一,而且呈上升趋势。此外,也是大数据与人工智能方向的主流语言。至于前端框架,我直接使用了django模板渲染,没有选择anglar等前端框架,因为SEO不友好。
接下来谈谈服务器的选择。我们选择了tomcat、apachehttpd或nginx等Web服务器下游的应用服务器容器,需要部署python应用服务器容器。我选择了wsgi,它类似于nginx,可以通过一个守护进程将不同的http请求发送到子进程,并支持多线程的方式。性能较高,最重要的是django会自动帮我们生成wsgi的配置,对wsgi非常友好。
接下来,让我们利用django工具搭建最基本的运行环境。首先,必须安装python。以下是不同操作系统的安装方法:
- rhel或centos:使用yminstallpython
- bnt:使用apt-getinstallpython
- mac:使用brewinstallpython
- 如果以上方法都不可行,可以下载官方包进行安装(https://www.python.org/downloads/)
然后,安装django相关组件。创建开源代码库:
在githb中创建仓库shareditor,并在本地创建空仓库提交到githb库。网址是:https://githb.com/warmheartli/shareditor
本地仓库如下:
lichang@localhost:~/Developer/shareditor$ ls
REDME.md
创建django工程:
在安装python时已经自动安装了django-admin工具,执行以下命令可以自动创建一个完整的工程目录(最后一个参数是工程目录,倒数第二个参数是工程名称):
django-adminstartprojectshareditor /Users/lichang/Developer/shareditor
这时就能找到自动创建的manage.py文件(一个不需要修改的工具脚本),以及工程总目录shareditor(其中包含了配置文件settings.py、总路由配置urls.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,就可以看到网站的默认页面了。
为了让我们的网站更专业,我们可以进行一些修改,比如修改web/views.py文件,增加如下函数:
fromdjango.httpimportHttpResponsedefindex(request):# 此处仅为定义一个函数,先看看效果
然后修改shareditor/urls.py路由规则,将内容改为:
fromwebimportviews
重新执行以下命令:
pythonmanage.pyrunserver
这时,打开浏览器,你应该能看到更新后的网站页面了。
最后,我们来谈谈如何部署一个专业的网站。Pythonmanage.pyrunserver实际上只是django的一个用于开发和调试的方法,它只是一个进程一个线程在运行,无法支持网站的高并发访问。
首先,我们需要配置好我们的web容器,创建wsgi.ini文件,内容如下:
[wsgi]
chdir=/Users/lichang/Developer/shareditor
http=127.0.1:8081
http-keepalive=1
model=shareditor.wsgi:application
master=tre
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 logs
然后执行以下启动命令:
wsgi --inhareditor/wsgi.ini
这时我们可以查看logs/wsgi.log文件,如果没有异常信息说明网站已经部署成功了。
为了使我们的网站具有高可用性(即一台服务器故障不会影响到服务),我们需要至少部署两台完全对等的web服务来同时提供服务。用户在浏览器中访问时,到底会访问哪个服务器呢?这里有两种实现方案:
第一种是配置DNS记录,让同一个域名对应多个ip地址,这样当其中一个ip地址不可用时,浏览器就会自动尝试其他的ip地址。
第二种是通过稳定的代理服务器(如nginx、apachehttpd等)来配置成负载均衡代理,对外暴露一个ip地址,对内连接到多台web服务器。
以上就是零成本搭建个人网站教程的全部内容。虽然这个过程听起来有些复杂,但其实只要跟着步骤一步一步做,你会发现它其实并不难。现在就让我们一起动手,打造属于自己专属的官网吧!