雏燕计划-----服务器搭建

前言

做这块的时候没有计算机网络的相关知识,晕头鸭子瞎碰,碰对多少算多少吧

准备知识

我自己开始搭建服务器的时候,没有一点计算机网络的基础知识,复制粘贴网上解决问题的命令,也不知道自己在干啥,反正没报错就行了。后来实在搭不下去了,总结一下零零碎碎的关于计算机网络的知识,发现还是学到了不少东西的(希望下个学期的计网能对我好点吧)

搭建服务器提供服务啥的, 其实跟开店很像, 后面我就用开店来打比方了

服务器

服务器说白了,就是一个CPU+内存+网线+硬盘(所以闲置电脑也可以配置成服务器提供服务)
但是闲置电脑你也不能总开着提供服务吧,所以最好还是买个服务器(腾讯阿里都有学生价,巨便宜)
这个服务器就好比你开店租的门店

域名

域名是啥呢,域名就是 www.baidu.combaidu.com , www.alibaba.comalibaba.com
就好比开店做生意,那个店招牌就是域名

IP地址

IP地址是我们经常说的东西,但是没学计网之前(虽然现在也没学)都不是很清楚这个东西到底是什么。
买了服务器之后,会发现服务器不仅有IP地址,还一下给你两个IP地址。
其实这个IP地址就相当与你开的这个店的门牌号,客人要到你这里来恰饭,其实归根结底,是到你这个地方(访问你这个IP)才能恰到饭。
至于说为啥服务器有两个IP,一个叫公网IP,一个叫私网IP
这就好比咱这个店小(其实小不小都有两个IP,这里是为了方便理解),咱们买不起一片地,在一个小区的一楼租了间商铺,这个小区的地理位置(比如XX城市XX地区XX道路的XX小区),就是公网IP,咱这个商铺在这个小区的位置(比如XX栋XX单元XX栋XX-XXX)就是内网IP。
那你说客户来恰饭,是知道公网IP还是私网IP。
那肯定是通过访问公网IP来访问服务器,光知道XX栋XX单元XX栋XX-XXX找不着饭店。

TIPS:0.0.0.0表示所有IP地址 127.0.0.1表示本机IP地址

DNS

现在店乍一看好像就已经搭差不多了
有了店名(域名),也有了店的位置(IP地址),也有了地方(服务器)
按现在的逻辑,客户要来恰饭,那就访问IP地址 : “我们今天去XX城市XX地区XX道路的XX小区吃饭吧”
但是我们一般都是这样说的 : “今天我们去XX饭店吃饭吧”
我们访问服务器一般都是通过域名访问的,而不是通过IP地址访问的。
域名和IP地址是如何连接起来的呢?
中间就用的是DNS协议, 这个DNS协议大概就像工商局的管理本,要想别人通过店名就能找到你,你就得在工商局登记(DNS协议),登记完了,才能把你这个店的地址和你的店名联系起来(这中间真的跟开店一样,还会给你的域名绑定一个证书,虽然我还不了解这个证书到底有啥用)

总结一下

现在你的店的表面已经差不多了,有店名,有店址,有位置,而且在工商局注册登记了,外面看起来都么得问题。然后,不少客人慕名而来,准备进店恰饭。怎么安排这些客人就是大问题。现在完备的web服务器搭建体系给出了比较好的解决方案。

Web服务器

Web服务器在整个店里面扮演的角色类似于前台小姐姐。所有的客人都会首先堵在前台小姐姐面前,前台小姐姐首先会根据客人的需求进行分类。一般顾客点菜,把客人领到地方等菜吃饭就行了。还有的顾客就比较牛逼了,他真的点菜 : “我要两斤白菜”。这就叫静态请求,这样的静态请求不需要进行处理(做菜),直接给他就行了。而常规的点菜 : “一个鱼香肉丝”。这就叫动态请求,这样的动态请求需要根据实际情况(一些具体信息,比如哪个客人点的(用户),点的什么菜(关于请求的具体数据))交给具体的程序进行反应。

这次搭建服务器,我选择的web服务器是nginx。工作的大体流程跟上面描述的差不多。面对静态请求的时候,nginx小姐姐会自己动手,把静态文件直接返回。面对动态请求的时候,nginx就回去找后厨(其实不是,往后看)

Web服务器2

nginx前台小姐姐介绍完了,现在所有对于服务器的访问都会被nginx拦下来处理(仅限Http协议)
大概就是,现在客户们已经在前台开心的用Http跟nginx小姐姐聊天了。
然鹅,处理动态请求的时候(通知后厨菜名的时候),就有可能出现鸡同鸭讲的情况。
因为我使用的是python搭建的服务器,后端框架选择的是django(后面细讲),他俩就语言不通。
这个时候就需要web服务器2了。这里我用的是uWSGI。他就好比一个翻译,在前台nginx小姐姐和后厨之间来回跑。他能把nginx小姐姐的话(Http协议)翻译成后厨听得懂得语言(wsgi),也能把后厨说的话,翻译成nginx小姐姐听得懂得语言。

后端框架

其实啥是后端框架,我也没有一个清晰的感觉,百度上的定义啥的我又看不懂,所以意义不大。
现在我对后端框架的理解就是,他就是后厨师傅。是真正实现内容产出的部分。
在这个项目里面我选择的是django框架。

总结一下

在这里插入图片描述
大体上的流程就是这样了

搭建步骤

基础

我首先买了阿里云的服务器,然后买了个域名,这俩跟着阿里云官网的流程把钱交了就行,下面我们就根据上面讲的基础知识一步步把上面的流程图的每一条连线实现。(服务器我装的centOS7.4)

店外

有了地方,有了店名,有了店址,下面得去工商局登记

在这里插入图片描述
选择域名后面的解析,进行域名解析
在这里插入图片描述
点击新手引导,然后把服务器的公网IP填进去就可以了。
在这里插入图片描述
中间还要申请一个“工商局的证书”,在左边的功能栏里面搜索证书,点进ssh证书,按照流程来就能申请成功了。

店内

店内由于之前没有基础知识,找了半天,终于在知乎上找了一篇靠谱的博客,(链接放在这里就算转载了吧)
已经赞同加上留言感谢了(虽然按照这个最后并没有配置成功,但是已经很接近了)。

https://zhuanlan.zhihu.com/p/49200125

中间的一些命令我基本上都是按照链接里面一步一步来的
后面我只是对一些关键内容进行相应说明

基础环境搭建

按照知乎文章里面一步一步来
遇到不懂的命令一定要百度查明白

后厨的基本知识

我实在不知都后面的虚拟环境和django框架到底算什么,就统一叫后厨吧
后厨的基础环境假设已经按照知乎文章里面的搭建的差不多了。
现在的情况就是这样,服务器上安装了

Python3 , pip3(Python3 下的pip), nginx, 还有virtualenv这个包

然后我们创建了一个虚拟环境叫venv,在这个里面我们安装了

Django2 和 uwsgi

虚拟环境中的东西可以直接调用原始系统环境里面安装好的东西(比如python3 pip3 virtualenv等)
但是原始系统环境不能直接调用虚拟环境中的东西(比如不激活虚拟环境的情况下,进入python3命令行,import django 肯定汇报错的)

关于django

django其实是自带服务器的,就是知乎文章中的

python3 manage.py runserver

这一行命令。
详细的解释一下这一行命令,因为后面开发的时候全部都是在本地写好网页代码之后,在本地直接用django提供的服务器进行测试,然后再直接上传到服务器上(就是传说中的上线了)
这一行命令的完全体其实是这样的

python3 manage.py runserver 0.0.0.0:8080

其中的0.0.0.0的意思是IP过滤,8080的意思是开放的端口
这个命令其实是虚拟了一个服务器,所以如果要通过浏览器访问这个服务器的话,就直接填本机的IP地址就行
(比如我是在服务器上进行测试的,那我如果想要访问这个django虚拟出来的测试页面的话,我就需要在服务器上填我的服务器的公网IP)
然后IP过滤的意思是
8080就是把虚拟服务器的8080端口开放以供测试使用,也就是你只能通过8080访问虚拟服务器才能看到测试页面

还需要注意的一点就是,测试使用的浏览器我推荐使用IE浏览器。。。。。
因为无论你用什么别的浏览器,只要你绑定了搜索引擎,他都不会直接跳转到你输入的IP地址+访问端口,而是。。。。优先使用你绑定的搜索引擎取搜索你输入的IP地址+访问端口。。。。(我一直以为没有响应是因为我的代码有问题,后来才发现我绑定了google搜索,然鹅出了学校没有ipv6之后访问不了google,所以一直没有响应)

Django的搭建

搭建店内设施的流程不大一样,是从里往外一点点搭起来的。每搭一步都要检查一下是否能正常运行。
首先进行Django框架的搭建。
首相Django 框架有一个大的架子,就叫django项目

django-admin.py startproject XXXXX

(上面这就创建了一个叫XXXXX的项目)
但是光是这个项目的话,是没有任何东西的。
为了能够显示出来网页啊啥的,得在项目里面创建应用

生成一个应用的调用项目里面的manage.py文件

python3 manage.py startapp xxxxx

(上面这就创建了一个叫xxxxx的应用)
但是运行的时候,所有的应用得依赖于django项目这个大框架运行,所以创建完了之后要相应的修改django项目中的一些配置文件。
主要的配置文件有两个,一个是settings.py一个是urls.py
其中settings.py中有运行的app列表:INSTALLED_APPS
新创建的应用必须得放进这个表里面才会运行

urls.py中有解析url的列表: urlpatterns
(一般访问一个框架下不同应用的方式就是通过不同的url,比如知乎文章中提到的在url后面加hello)
不同应用的url要在urlpattern中声明。

在创建的应用里面也有很多的文件(大部分我还没研究出来是干什么的)
现在通过知乎的文章能了解到的是,views应该就是这个应用的脸,决定了显示什么。

Django测试

前面说了,搭一点测一点。所以现在就用前面后厨基本知识中介绍的django的基本知识测试一下是否能访问就行了。

uWSGI搭建

uWSGI和nginx一眼,都属于web服务器范畴,所以下载下来基本上就算搭好了,我们只需要知道怎么样吧这些东西串起来,配置好能一起跑就行。

uWSGI测试

这部分知乎文章中并没有讲,知乎文章中是直接就nginx和uWSGI两者联调的。
看了B站一个up主的视频

自由小径 https://www.bilibili.com/video/av10247256?from=search&seid=6913348634791139009

里面讲了如何一步一步调试

uwsgi --http :8080 --module mysite_django/wsgi.py

跟前面的runserver命令其实有点像,也是弄了一个虚拟主机供你测试。(主机就是你自己)
然后传一个开放的http端口–http ,然后再把项目的wsgi配置文件串进去,就能模拟出一个主机了。
然后一样在浏览器中访问就可以了。

nginx搭建

nginx直接安装好了就算搭建好了,安装好的时候一般服务就启动了。
而且nginx也不需要配置就能运行,因为nginx直接拦截所有的访问,安装好就开始拦截了。
在浏览器中输入自己的域名,出现welcome to nginx 就表示nginx安装没有问题。

nginx 和uwsgi联调

这个部分就是最头疼的地方了。
要把nginx和相关联的uwsgi 连接起来,得详细的了解一下nginx的配置。

这个地方有能力的同学,可以先看一下官方文档,官方文档除了是英文写得,么得中文版之外,讲的算是很细了。
(而且官方文档里面没有用uwsgi作为动态请求的例子)

首先介绍一下nginx配置文件的大体结构
进入nginx的目录之后,看到的内容是这样的
在这里插入图片描述
然后找里面的配置文件configuration file
里面nginx服务器的配置文件是nginx.conf
打开nginx.conf后,里面的代码是这样的
主体http部分

以及里面的server
在这里插入图片描述
这里看一下里面的server
server是关于处理请求的具体配置
然后这里你大概看一下,就会发现,蓝色的注释非常重要
这些都是default设定,全部都是从default.d这个文件夹里面include进来的
所以这个模块咱们不用管
那我们的自己写的configuration,写在哪里,放在哪里,从哪里调用呢
然后看那个大的http


这里最后一行有一个 include /etc/nginx/conf.d/*.conf (其中星号是全匹配符,表示把conf.d中所有的.conf结尾的文件全都include进来。
这就差不多明白了,我们自己写的configuration应该放在conf.d这个文件夹里面
然后我们在那个文件夹里面写就行了(具体怎么写,就根据前面提到的官方文档,里面对于一个configuration应该包含什么已经讲得非常详细了)
在这里插入图片描述
这里是和知乎文章中配套的configuration
其中
server_name 必须,必须要填你的公网域名
listen 表示你监听的是你server_name指向服务器的哪个端口
access_log 其实挺有意思的,就是问你别人发送请求的日志放在哪个位置
charset 表示的是编码的格式
location 后面的后缀和里面的内容其实表达的是对url的解析方式
include就是直接添加代码段,后面的哪个uwsgi_params就是nginx和wsgi的翻译表
uwsgi_pass 的意思是给nginx和uwsgi指定一个交流的通道,否则这两个webserver没办法沟通

配置好了之后,重启nginx,然后打开uwsgi服务,站点就可以上线了。这一条路线就算打通了
后面要开发的话,只需要修改咱们最开始的那个django项目,本地开发,本地通过runserver命令测试,然后直接上传到服务器上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值