学习记录:(一)在AWS的EC2上搭建apache+django

两个月前申请了亚马逊免费的AWS账户,当时很多东西都没学习,不知道什么跟什么,瞎鼓捣一番后就丢一边了。
两个月后,因为面试需要,想找个服务器放上一点作品,于是想起之前申请的AWS。
这回对云服务器有了点概念,在网上搜索了一点教程,终于知道实例指的是一个虚拟服务器,可以在这台服务器上像对待自己的主机一样进行各种安装和设置。
我申请的EC2实例是运行在windows系统上的,首先要先用终端连接上实例,从windows的附件里选择远程桌面连接,用申请时获得的密钥在EC2实例的控制面板上得到登录密码,顺利登录。
登录上后看着空空如也的桌面,一时无从下手,各种选项点击了遍,大概摸清了这系统的情况,有个C盘目录,有浏览器,有命令行工具。
搞清楚后打算开始安装apache,这才发现一个问题,这系统里面没有apache,需要下载,于是搜索了一下,发现可以将本地磁盘挂载到终端上,直接在磁盘间复制粘贴文件。


学习记录:(一)在AWS的EC2上搭建apache+django_第1张图片
远程桌面挂载磁盘

接下来就是用网页下载和磁盘复制的方法,将需要的软件下载到系统中,需要注意的一点是下载软件时要版本对应:

  • apache:v2.4.25-x64-vc14-r1 下载地址
    (注:vc14指的是用Visual Studio 2015编译,所以还需要下载VS2015运行库,注意选择64位的下载Visual C++ Redistributable for Visual Studio 2015)
  • python:v3.6.1 64位 下载地址
  • mod_wsgi:mod_wsgi‑4.5.15+ap24vc14‑cp36‑cp36m‑win_amd64.whl 下载地址

都下载好后,先安装vc2015,接着安装python,装好python后用pip安装django,mod_wsgi,然后找一个目录新建一个django项目。
接下来是apache的配置和安装,这里碰到第一个难题:
1、apache安装好后从外网怎么都访问不了,后来搜索了一下说是国内用80端口不能备案,所以aws不能用80端口,于是在实例的控制面板里向安全组新增一条规则开放8888端口,然后再在apache设置里修改监听此端口,这样apache就能成功访问了。
接着要配置apache的django模块,这里碰到第二个难题,折腾了我一个早上的时间:
2、根据网上搜索的教程在apache配置文件里添加如下行:

LoadModule wsgi_module "C:/Program Files/Python/Python36/Lib/sitepackages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "C:/Program Files/Python/Python36"
WSGIScriptAlias / C:/pythonspace/mysite/mysite/wsgi.py
WSGIPythonPath C:/pythonspace/mysite


Require all granted


这里就开始出问题了,apache服务怎么都启动不了,也不显示错误信息,根据排查法知道是第一句运行有问题,但是就是不知道有什么问题,在网上一直搜索都没有头绪,偶然看到有个回复提到可以查看windows event log,受此启发在系统里查看了windows application error log(在命令行输入Eventvwr.msc命令),终于看到错误信息:
大意就是说the specified module could not be found,识别不了wsgi模块
想了想,因为网上很多教程用的是旧的版本,模块文件都是以so为后缀名的,这次这个新版用了pyd,是不是因此就不能认啊,继续搜索答案,终于在文章里发现一条说明需要先在命令行运行:

mod_wsgi-express module-config

然后出现以下内容:


如图

对比了一下发现少了一条:

LoadFile "c:/program files/python/python36/python36.dll"

于是在apache的LoadModule语句上面加上该条,启动,成功了!
然后配置一下django,从外网访问,也成功了!
这真的很奇怪啊,在实例服务器上需要加上LoadFile才能成功启动,但是在我自己的机子上的配置文件里没有加上这条也能顺利启动,不知道是哪里的问题。
总之不管怎样,django终于能顺利在apache上跑了。

你可能感兴趣的:(学习记录:(一)在AWS的EC2上搭建apache+django)