必须安装的环境:
python:3.6
django:2.1.2
(在部署时一直报500错误,最后发现是我犯了一个很低级的错误,没装django)
(因为是从别的电脑拷贝来的,pycharm直接创建的Django项目,忽略了这一步)
如果部署到apache服务器:
版本环境:
apache:2.4
mod_wsgi:要根据apache和python版本而定
参考:https://blog.csdn.net/GodLordGee/article/details/83934615
1. 安装apache
首先安装apache 2.4,这个镜像快(https://www.apachehaus.com/cgi-bin/download.plx)
下载后是一个压缩文件,直接解压缩,获取文件夹里的Apache24文件夹,这个文件夹就是apache服务器文件了,不需要安装,我直接将Apache24文件夹移动到了D盘根目录。
然后进入D:\Apache24\conf这个路径,使用notepad++打开httpd.conf(也可使用记事本)
修改:
(1)Apache路径
Define SRVROOT "D:\Apache24"
ServerRoot "${SRVROOT}"
(2)端口
#Listen 12.34.56.78:80
Listen 0.0.0.0:80
这里0.0.0.0指的是监听所有ip的请求,也就是任何IP都可以访问我们的网页
80是默认端口,这样在输入网址时就不用输入端口号了。但80容易冲突,如果冲突就修改
(3)服务器名
ServerName localhost
(如果你设置了其他端口,如8000,那么这里应该改为localhost:8000)
配置完成,然后安装apache,在bin目录打开cmd,输入:
httpd.exe -k install -n "apache2.4"
这里需要说明,如果用cmd运行安装apache服务的命令,那么,会出现下面这句话:
Errors reported here must be corrected before the service can be started
这句话的下一行,如果有输出一些信息,那么,就表明你的httpd.conf配置有问题,那么,你就要根据它提示你的报错信息,去检查哪里有问题,如果这句话的下一行是空白的,那么,就说明你的apache服务安装没有问题,你可以正常启动了。
我的电脑——》管理——》服务,就可以看到apache服务了,可以在这里开启服务
浏览器访问localhost,出现 it works 即成功。
2. 安装mod_wsgi
下载mod_wsgi(python的包),下载网址:http://www.lfd.uci.edu/~gohlke/pythonlibs
注意:mod_wsgi对apache和python的版本要求很严格,要对号入座
这里我下载的是mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl(放在了百度云)
找个能找到的地方放在里面,我放在apache的目录里了
然后用cmd进入.whl文件所在的目录,安装mod_wsgi:
pip install mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl
ps:你可以输入个mod_wsgi,然后按TAB键,就可以自动补全了,以免输错
如果提示pip要更新,根据提示upgrate。
安装完成以后,在cmd里面输入:
mod_wsgi-express module-config
会出来3行信息,复制,添加到刚才的 D:\Apache24\conf\httpd.conf 文末。
3. 关键配置
依然在 httpd.conf 文件,文末添加:
# apache连接mod_wsgi
LoadFile "d:/anaconda/anaconda3/python36.dll"
LoadModule wsgi_module "d:/anaconda/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/anaconda/anaconda3"
#设置工程中的wsgi路径
WSGIScriptAlias / D:\pycharm\workspace\CKlab\CKlab\wsgi.py
#设置工程路径
WSGIPythonPath D:\pycharm\workspace\CKlab
#给wsgi权限,设置wsgi文件可修改
<Directory D:\pycharm\workspace\CKlab\CKlab>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#设置静态文件路径
Alias /static D:\pycharm\workspace\CKlab\static
<Directory D:\pycharm\workspace\CKlab\static>
AllowOverride None
Options None
Require all granted
</Directory>
#设置媒体文件路径
Alias /media D:\pycharm\workspace\CKlab\media
<Directory D:\pycharm\workspace\CKlab\media>
AllowOverride None
Options None
Require all granted
</Directory>
到此,所有的配置已经完成了,重启apache服务(这是必须的!必须重启),接着,输入网址,就可以正常访问啦!其他人也可以通过IP地址或者域名访问网站了。
发现后台admin很乱,没有样式,修改settings.py,加上:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
然后运行命令python manage.py collectstatic即可。
pycharm:工具——》run manage.py......
如果想关闭开发者模式(debug模式),保证网站安全:
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['*']
如果部署到云服务器:
1. 登陆云服务器
(以下这几个网址都在腾讯云官方文档里,可到官网查看)
(1)登陆云服务器:https://cloud.tencent.com/document/product/213/2764
(2)开启服务器(IIS):https://cloud.tencent.com/document/product/213/2755
(3)放开所有端口:首先在左侧列表【安全组】里新建安全组,选择【放通所有端口】,然后到【云主机】【更多】(登陆右边)添加这个安全组。
(4)防火墙配置:
打开服务器管理器,右上角工具---高级安全windows防火墙,点击Windows防火墙属性,选择公用配置文件,入站链接设置为允许,然后确定,服务器配置完毕.
其他:{
上传文件:https://cloud.tencent.com/document/product/213/2761
安装mysql:https://cloud.tencent.com/document/product/213/10190
}
2. 环境配置:
python3.6+django2.1.2+apache24+mod_wsgi
跟部署到本地一样,我使用anaconda安装的python3.6
django从本地复制来,安装
apache2.4配置时,提示80端口不可用,改为了8080
wsgi也是复制而来,安装
3. 上传项目
httpd.conf文件文末修改同上
启动服务:
C:\Apache24\mod_wsgi>net start apache2.4
如果报错:server certificate does NOT include an ID which matches the server name
尝试把debug改为true,好像并没有出错,是url没输入正确
任何终端都可以输入网址找到该网站了:
http://118.24.131.52:8080/lab/