经过将近一天的折腾,终于把我的小小项目上线到服务器上啦,哈哈哈,先贴张成功的图以表达激动的心情!
好了,切入正题,讲讲上线的步骤和遇到的坑。
本地:anaconda环境下的python3.7、Apache2.4服务器、Django2.2、xadmin后台插件、win8.1 64位、mysql
服务器:纯python3.7、Apache2.4服务器、Django2.2、xadmin后台插件、winserver2008 32位、mysql
因为要上线,所以主要依据本地的环境情况来配置服务器的,毕竟之前服务器用来运行php环境的。
由于自己的服务器配置比较低,还是能节省空间就节省空间,直接去python官网下载纯净python安装包,贴上网址:https://www.python.org/downloads/release/python-373/
这里要注意的是要安装python3.7版本,目的是与本地一致,避免出现语法错误的问题。其次要注意因为我的服务器是32位的系统,所以要选择x86那个,并且是executable,下面那个为网络安装,会出现被qing的问题,会报错(0x80072efd),如下图:
安装好后cmd,输入python,若进入编程环境,则说明安装成功。
成功后为了pip方便,将下载路径切换至清华镜像:C:\Users\Administrator路径下新建文件夹“pip”,然后在里面新建一个pip.ini文件,里面内容输入如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
切记版本也要与本地的相同。
直接在cmd中运行pip:
pip install Django
安装好后,进入python环境,输出如下信息:
>>> import django
>>> print(django.get_version())
2.2
则说明Django安装成功。
推荐阅读这位仁兄的文章,https://blog.csdn.net/kingken212/article/details/46992535
Apache相对来说安装比较容易。官网下载:https://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC14
注意下载的版本和支持的系统及位数。
在这里十分推荐这位同学些的文章,可以说十分详细了:https://blog.csdn.net/weixin_40754816/article/details/80955817,只需看他的apache2.4和mod_wsgi部分就可以。
(1)新建一个库,名称应与本地库的名称一致。
(2)安装Mysqlclient包,用来使得python和mysql能够互相连接。两种方法:
方法一:传统法
使用pip安装,直接:
pip install mysqlclient
优点:方便
缺点:需要vistual c++14.0以上的环境支持,且这个还很大,附上安装包:https://964279924.ctfile.com/fs/1445568-239446865
方法二:绕过环境法
绕过c++,先在这个网址下载对应的文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#Mysqlclient
注意一定要保证版本和你环境的版本相对应。然后在其存放的目录安装:
//命令行形式下,转到其目录
pip install mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl
优点:省空间
缺点:每次都需要先下载再安装,不方便
注:除了这个包,其他的包如果pip报c++的错时,都可以去这个网站找相应的文件来安装。
直接把整个项目复制到服务器中即可,接下来对setting.py文件的配置:
(1)ip和域名
# 允许运行的主机ip地址
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '47.93.192.48', 'www.famer-business.cn']
(2)数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name', # 改为服务器上刚新建的数据库名称
'USER': 'user_name', # 改为服务器上数据库管理员的密码
'PASSWORD': 'password', # 改为服务器上数据库的密码
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
(3)静态文件设置
这是重点,否则你的项目将会上线后无法加载js等静态文件(特别糟糕),感谢这位老哥的文章,给了我很多帮助:https://blog.csdn.net/qq_35531549/article/details/86600406
# # 访问静态文件所必需的设置的
STATIC_URL = '/static/'
#这里注意不要和你项目static文件夹名一样,因为这个是用来存放收集来的所有静态文件的.
#如果你设置相同,等运行collectstatic时会警告.
STATIC_ROOT = os.path.join(BASE_DIR, 'mystatic')
# 我们的静态文件分开三个部分
# 这里我们设为二个路径
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'xadmin'),
]
至此setting.py文件修改成功,接下来再对url.py进行修改,注意引入相关的包,没有的就pip:
urlpatterns = [
# path('admin/', admin.site.urls), # 原路由
path(r'xadmin/', xadmin.site.urls), # 新路由
path('', include('Course.urls')), # 包含app Course的所有url
# 添加静态文件的访问处理函数
re_path(r'^static/(?P.*)$', serve, {'document_root': settings.STATIC_ROOT}),
]
Django修改完毕
修改httpd.conf文件,监听地址可以不用改:
#安装wsgi模块后,出来的三行字符,直接复制过来
LoadFile "c:/users/administrator/appdata/local/programs/python/python37-32/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37-32"
#设置工程中的wsgi路径
WSGIScriptAlias / C:\Users\Administrator\Desktop\course\UsCourse\mysite\mysite\wsgi.py
#设置工程路径
WSGIPythonPath C:\Users\Administrator\Desktop\course\UsCourse\mysite
#设置wsgi路径
Require all granted
#设置静态文件路径,即collectstatic后的那个文件夹
Alias /static C:\Users\Administrator\Desktop\course\UsCourse\mysite\mystatic
AllowOverride None
Options None
Require all granted
万事俱备,只欠运行。
1、数据库结构迁移
pythong manage.py migrate
2、数据库数据迁移
可用django的方法,也可以自己直接迁移本地的,这个随意。
3、静态文件收集
pythong manage.py collectstatic
4、运行
重启Apache服务,成功!撒花哈哈