Python-django项目部署教程

项目开发完成后可以部署到阿里云,华为云,腾讯云等服务器,
以腾讯云为例

本地部署

以下是ubuntu上的部署详细步骤:

1.布署前需要关闭调试、允许任何机器访问,打开settings.py文件

DEBUG = False
ALLOW_HOSTS=['*',]

2.安装uwsgi

pip install uwsgi

3.配置uwsgi,在项目目录下创建uwsgi.ini文件,配置如下:

 [uwsgi]
# Django-related settings
#python3 manage.py runserver
#http = 127.0.0.1:8000
socket = 127.0.0.1:8000
#项目路径
chdir           = /home/hu/桌面/1807project/MyBlog
#wsgi文件
module          = MyBlog.wsgi
#主进程
master          = true
#指定工作进程
processes       = 4
#每个工作进程2个线程
threads = 2
#指后台启动  日志输出的地方
daemonize       = uwsgi.log
#保存主进程进程号
pidfile = uwsgi.pid
#虚拟环境路径
virtualenv = /home/hu/.virtualenvs/1807_blog

4.启动uwsgi服务器

uwsgi --ini uwsgi.ini

5.不确定是否启动成功,搜进程

ps -aux|grep uwsgi
2018-12-08 16-12-33屏幕截图.png

同时会在项目目录下生成uwsgi.log日志文件
uwsgi.pid 中保存主进程的pid
6.进入应用下urls.py配置

url(r'^$', views.index)

7.只要改动代码就需重启uwsgi
首先杀进程

killall -9 uwsgi

查看是否杀掉

ps -aux|grep uwsgi
2018-12-08 16-39-27屏幕截图.png

再次启动

uwsgi --ini uwsgi.ini

暂缺css样式,此时用的服务器不再是django提供的服务器,用的是uwsgi服务器,django同时不再提供静态资源,此时需用nginx服务器
8.安装nginx

sudo apt install nginx

9.进入/etc/nginx/配置nginx.conf

sudo vi nginx.conf

写到http括号下,保存并退出

server {
          listen 80;
          server_name 127.0.0.1;
 
          #动态请求
          location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:8000;
          }
          #静态
         location /static {
            alias /home/hu/桌面/MyBlog/static ;
 
          }
 }

10.进程杀掉

killall -9 nginx

查看是否杀掉进程

ps -aux|grep nginx

指定进程号杀掉

sudo kill -9 进程号

11.启动nginx

/etc/init.d/nginx start

切记:配置uwsgi.ini中把http改为socket


2018-12-08 17-28-53屏幕截图.png

重启uwsgi
12.配置settings.py(收集静态资源)

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

注意:

STATIC_URL = '/static/'
# STATICFILES_DIRS = [
#     os.path.join(BASE_DIR, 'static')
# ]

收集所有静态资源
执行

python3 manage.py collectstatic

修改nginx配置,开启静态请求
杀nginx进程,重启nginx
pycharm同步杀uwsgi进程,重启nginx
127.0.0.1刷新 静态资源出现(nginx给的静态资源)

服务器部署

打开腾讯云,点击右上角控制台,登录,点击云产品--云服务器,z找到你购买的服务器(我是重庆地区)
修改密码
选中ID/实例名,重置密码,选中同意重启,重启的是远程服务端
远程登录服务器


2018-12-09 11-45-42屏幕截图.png

1.刷新

sudo apt update

2.升级

sudo apt upgrade

3.选中ok,然后一直Enter


2018-12-09 11-51-36屏幕截图.png

4.本地有的配置远程服务端也得有
<1>安装pip

sudo apt install python3-pip

<2>安装虚拟环境

sudo pip3 install virtualenv

<3>若出现以下报错


2018-12-09 12-02-54屏幕截图.png

分析原因:
locale是用来设置软件运行的语言环境,所以语言环境设置有问题
重新设置语言环境,最简单的解决办法:
第一条

     echo "export  LC_ALL=en_US.UTF-8"

第二条

     echo "export  LC_ALL=en_US.UTF-8"

第三条

    exit

重新登录服务器,如果还报错

export LC_ALL=C

<4>安装扩展包

sudo pip3 install virtualenvwrapper

<5>配置虚拟环境
进入

vi .bashrc

配置

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

生效

source .bashrc

<5>创建虚拟环境

mkvirtualenv 环境名

<6>安装数据库
退出环境

deactivate

安装数据库

sudo apt-get install mysql-server mysql-client

重新打开一个终端
导出本地数据库

mysqldump -uroot -p 1807_blog_db > /home/hu/桌面/blog.sql

导出本地依赖第三方
进入虚拟环境

pip freeze > /home/hu/桌面/requirements.txt

<7>想任何办法把数据库和依赖文件还有源码 上传到服务器 git ftp scp
以下以scp为例
放到/home/ubuntu/目录下

数据库

scp -r blog.sql [email protected]

第三方依赖

scp -r requirements.txt [email protected]

项目源码压缩

tar -zcvf MyBlog MyBlog.tar.gz

上传到服务器

scp -r MyBLog.zip [email protected]

解压缩

unzip MyBlog.zip

进入虚拟环境

workon 环境名

装依赖包
pip install -r requirements.txt
安装nginx

sudo apt-get install nginx

安装uwsgi

pip  install uwsgi

进入项目,配置uwsgi


2018-12-09 15-36-38屏幕截图.png

查看uwsgi是否启动,若启动杀进程,启动uwsgi
查看nginx配置文件

cd/etc/nginx/
vi nginx.conf

写到http括号下,保存并退出

server {
          listen 80;
          server_name 94.191.34.142;
 
          #动态请求
          location / {
              include uwsgi_params;
              uwsgi_pass 127.0.0.1:8000;
          }
          #静态
         location /static {
            alias /home/ubuntu/MyBlog/static ;
 
          }
 }

查看nginx日志

cd /etc/nginx/var/log/ngix/

查看uwsgi日志

cd /home/ubuntu/MyBlog/

杀掉nginx进程,再次启动
去浏览器访问公网IP

你可能感兴趣的:(Python-django项目部署教程)