Home >  > 宝塔部署Django

宝塔部署Django

0

这次尝试在服务器上使用宝塔,这样不但部署django网站比较简单,还可以同时使用django和wordpress。

一.安装宝塔及插件
(1)安装宝塔
在宝塔官网看到说“务必使用centos7.x 系统”,所以我不得不放弃以前用得比较熟的ubuntu系统。

yum -y install tmux

#美国节点安装
yum install -y wget && wget -O install.sh http://128.1.164.196:5880/install/install_6.0.sh && sh install.sh

(2)安装其他插件
安装完宝塔之后,进入宝塔的控制面板,安装nginx、mysql、php、Python项目管理工具这几个程序。

宝塔教程:https://www.laoyangblog.com/86.html

二、安装Python
centos7.x 系统只有python2.7,但是自己用的是python3.x,所以首先需要安装python3.x.
宝塔现在支持python3.x,只需要在Python项目管理工具那里,选择python版本安装即可。

三、上传django文件
1.生成requirements.txt
在项目根目录(即manage.py所在的目录)执行以下命令。

pip freeze > requirements.txt

2.修改settings.py
包括修改ALLOWED_HOSTS,static文件夹的设定:

DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', 'localhost ', '.925wholesalejewelry.com']

STATIC_URL = '/static/'
# STATICFILES_DIRS = (
#     os.path.join(BASE_DIR, "static"),
# )
STATIC_ROOT = os.path.join(BASE_DIR, "static")

这里也有一个坑,我之前弄好之后,访问网站老是提示:Bad Request (400),后来一检查,才发现自己的ALLOWED_HOSTS这里设置有问题。修改之后,在python项目管理器中重启一下就好了。

3.上传django项目文件
将项目文件上传到www/wwwroot/下面,或者其他目录也行,我后来就将django项目放到了其他目录www/server/py。
注意:将django项目的根目录也一起上传。

四、安装环境
1.在python项目管理器添加Python项目
我使用的时候,启动方式选择gunicore无法启动项目,必须选择uwsgi才行。

相关说明:

名称:你想起啥名就起啥名
路径:选择你的项目(如我的:/www/wwwroot/BlogDj)
启动文件/文件夹:你是django项目的话就选择启动文件夹(如我的:/www/wwwroot/BlogDj/BlogDj)
Python版本:用你刚刚安装的版本
启动方式:nginx或gunicorn
端口:你写一个端口就行,最好是大于6000的端口

2.修改uwsgi.ini
这里是宝塔的一个bug,我之前也是按网上的教程来部署,可是部署完成之后,访问网站老是提示:Internal Server Error,折腾了很久没有搞定,后来在宝塔论坛看到别人的提示,才解决了这个问题。
当你在上面的“添加Python项目”这一步添加了项目之后,会在项目文件的根目录生成一个配置文件,比如,你选择的是uwsgi,则会生成uwsgi.ini文件,如果选择gunicore启动方式,则会生成gunicore.conf文件。
你可以直接打开这个文件修改,或者直接在宝塔的项目配置中修改,然后重启项目。

添加如下一行代码:
wsgi-file=/项目路径/项目文件夹/wsgi.py

比如我的就是:

wsgi-file=/www/server/py/cpsite/cpsite/wsgi.py

3.添加域名
在“Python项目管理器”找到你的项目,点击“映射”,设定你的域名。
添加完成之后,你会发现宝塔自动在“网站”这里,帮你添加了一个网站,网站的备注就是:Python项目[xxx]的映射站点

小提示:
每次执行“映射”操作之后,宝塔会自动在www/wwwroot文件夹下面建立一个“www.xxx.com”的文件夹。

4.放行端口

五、安装django及其他库
1.进入虚拟环境

#source 项目路径/项目名_venv/bin/activate

source /data/python/project1_venv/bin/activate

2.安装相关的库

pip install -r requirements.txt

六、测试
这时通过你的域名访问,就可以看到网站的内容了,当然静态文件这些还没有弄好的。
如果出现的是Internal Server Error,则应该是uwsgi的配置问题。
如果出现Server Error (500)则表示在其他方面出现了问题。
另外,经测试,如果数据库连接错误也会显示Server Error (500)。

这里又有一个天坑:
如果你的项目是使用SQlite数据库,那么到了这一步就可以看到网站显示了。但是如果使用的是MySQL数据库,则到这里还是显示Server Error,所以必须执行下面的数据据migrate,才能看到网站。

七、收集静态文件

执行命令:

# 收集静态文件(把静态文件收集到 STATIC_ROOT中。):
python3 manage.py collectstatic 

Copying '/www/wwwroot/the_wedather/weather/static/weather/999.png'
。。。。。

321 static files copied to '/www/wwwroot/the_wedather/static'.

它就是将app下面的static文件夹下面的内容copy到了项目根目录。

2.设置反向代理
1.打开反向代理设置窗口
在左边导航栏的“网站”里面,找到你的网站,然后点击“设置——反向代理”,打开如下窗口:

2.修改配置文件
点击“配置文件”,在倒数第二行,添加如下代码(注意更改项目路径):

# 在倒数第二行,上面字典的外面添加
location /static/ {
    alias /www/wwwroot/BlogDj/static/;
}
location /media/ {
    alias /www/wwwroot/BlogDj/media/;
}

小提示:
如果你的网站没有用到media,则上面第二段代码不添加也可以的。

八、访问网站
这时再访问网站,就发现网站已经可以正常访问了。

并且经过测试,php网站与django网站可以共存。

可以参考:
http://106.75.60.224/index/content/1
https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=8889&highlight=python3
https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=23295&highlight=python

九、提示:

由于我的项目使用了是sqlite数据库,所以按上面的操作就可以正常访问网站了。如果你使用的是像mysql等数据库,则还需要进行数据库的迁移。相关代码:

# 迁移数据库:
python3 manage.py makemigrations
python3 manage.py migrate

然后再将原来的数据导入到mysql.

十、附录:
1.如果在宝塔修改了商品,用ftp和secureCRT可能无法登陆。

2.如何用Navicat连接宝塔的数据库?
首先要在宝塔的安全那里给3306端口放行。
然后新建一个账户,将用户的权限设为“【任意主机】”

参考:http://www.bt.cn/bbs/forum.php?mod=viewthread&tid=224&extra=page%3D1

2.如何手动安装python3.x
如果自己通过命令行安装,可以直接执行以下命令:

sudo yum install yum-utils
sudo yum-builddep python
curl -O https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install

参考:https://towait.com/blog/how-to-install-python3-on-centos/

不过执行到make这一步的时候报错:

# On Darwin, always use the python version of the script, the shell
# version doesn't use the compiler customizations that are provided
# in python (_osx_support.py).
if test `uname -s` = Darwin; then \
cp python-config.py python-config; \fi

然后直接根据出错提示执行下面的代码:

sed -e "s,@EXENAME@,/usr/local/bin/python3.5m," < ./Misc/python-config.in >python-config.py

最后终于成功了。

3.几个命令:

whereis   python
python -V
本文暂无标签

发表评论

*

*