博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云部署Django项目(nginx+uWSGI)
阅读量:2491 次
发布时间:2019-05-11

本文共 4407 字,大约阅读时间需要 14 分钟。

前言:部署的前提是你的项目已经在本地完成可以运行了,我的本地环境是ubuntu16.04+python3.6+Django2.2+Mysql,在python虚拟环境(virtualenv)下建的项目。阿里云部署用的是nginx+uWSGI。

云服务器购买和配置

去云服务器官网购买一台云服务器ECS(Elastic Compute Service),可以直接支付宝扫码登录,个人用的话入门级就可以了. 购买的时候会让你选操作系统,因为我本地用的就是Ubuntu所以选的ubuntu16.04 64位。

1.ubuntu升级python版本(3.5->3.6)

默认的Python版本是2.7和3.5,Python版本需>=3.6所以进行升级

命令如下:$ sudo add-apt-repository ppa:jonathonf/python-3.6$ sudo apt-get update$ sudo apt-get install python3.6

#移除原3.4link

$ sudo rm /usr/bin/python3

更换默认python3 的版本为3.6

$ sudo ln -s /usr/bin/python3.6   /usr/bin/python3

安装完Python后pip需重新安装:

$ wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate$ sudo python get-pip.py

2.虚拟环境(virtualenv)的安装

本地项目是建在python虚拟环境下的,所以在阿里云上也要先建下虚拟环境。安装如下步骤如下:

1、安装virtualenv

$sudo pip install virtualenv

在这里插入图片描述

安装虚拟环境管理工具

$sudo pip install virtualenvwrapper

在这里插入图片描述

在home下创建虚拟环境安装目录
在这里插入图片描述

$mkdir .virtualenvs

为virtualenv配置环境变量,打开.bashrc文件,在末尾加上两行代码,在阿里云的ubuntu上,你想编辑文件只能用vi/vim打开,对于没用过vi的话还是需要点时间学习的。或者你可以在本地pc编辑好,再用Xftp工具上传覆盖原来的文件。用vim打开.bashrc ,一般就在home文件夹下

$cd  .virtualenvs$sudo vim ~/.bashrc

在末尾添加两行代码

export WORKON_HOME=$HOME/.virtualenvs  # 所有虚拟环境存储的目录source /usr/local/bin/virtualenvwrapper.sh

在这里插入图片描述

使用编辑器语言

: wq

保存退出

使配置文件生效

$source ~/.bashrc

创建虚拟环境,默认命令创建的是python2的虚拟环境,指定创建python3.6的虚拟环境可以使用以下命令

mkvirtualenv  -p  /usr/bin/python3.6  XX

在这里插入图片描述

XX是虚拟环境名字,这个可以自己定义

workon xx    #进入虚拟环境XXdeactivate   #退出虚拟环境

在虚拟环境里安装需要的包

安装命令 pip3 install xxx 其中 xxx 是包名,会python的都会安装,不多说

3.安装数据库

Mysql数据库的安装和数据的迁移

安装Mysql:输入以下命令,安装过程会设置密码

​$sudo apt-get update$sudo apt-get install mysql-server $sudo apt-get install mysql-clien

可能出现的问题

1.mysql配置:找到mysqld.cnf文件注释掉bind-address这一行

sudo  vim   /etc/mysql/mysql.conf.d/mysqld.cnf  #bind-address= 127.0.0.1   #注释掉这一行

2.针对ubuntu的mysql数据库默认字体是拉丁文,需要修改配置文件,防止插入中文出现错误.针对这个问题的修改可以自行百度方案,修改即可,非常容易

4.nginx,uWSGI的安装

$sudo apt-get install gcc zlib1g-dev libpcre3 libpcre3-dev libssl-dev#新买的云服务器 ,需要先配置gcc编译环境$sudo apt-get install nginx#再安装nginx

安装成功后,用浏览器访问你的阿里云IP地址,可以看到以下提示 :

在这里插入图片描述
nginx常用命令:

service nginx start   #启动service nginx stop    #停止service nginx reload  #重启

安装好的文件位置:这些文件暂时跟你没什么关系,越学习,越会熟悉

/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

检查是否安装成功过$ps -ef | grep nginx

nginx配置:打开配置文件default,路径/etc/nginx/sites-available/default

sudo  vim /etc/nginx/sites-available/default

设置以下内容

server {        listen 80 default_server;        listen [::]:80 default_server;               server_name 129.211.59.60;        location / {                # First attempt to serve request as file, then                # as directory, then fall back to displaying a 404.                include uwsgi_params;                uwsgi_pass 127.0.0.1:8000;        }        location /static{        alias /home/ubuntu/myblog-master\myblog-master\post\static\post;}}

在这里插入图片描述

一个是server_name后面换成你的阿里云公网IP,有的文章说不换也行,经过实验,不换确实可以。
关键是下面2个location:
第一个location是设置的和uWSGI的关联。
第二个location /static是设置的静态文件的路径。
如果你的项目还有media文件夹,那还要加一个location /media,把路径设置上。
注意:location 和alias后面有空格,格式不能有任何语法错误

配置静态文件

第一步:新建文件夹 /home/myweb/nginx/static

第二步:修改setting.py文件,增加STATIC_ROOT

在这里插入图片描述

STATIC_URL = '/static/'STATIC_ROOT = '/home/ubuntu/myblog-master\myblog-master\post\static\post'STATICFILES_DIRS = [    ('css',os.path.join(STATIC_ROOT,"css").replace('\\','/')),    ('images',os.path.join(STATIC_ROOT,'image').replace('\\','/')),    ('js',os.path.join(STATIC_ROOT,'js').replace('\\','/')),]

第三步:执行以下代码收集静态文件

python manage.py collectstatic

第四步:修改nginx的配置

location /static{        alias /home/ubuntu/myblog-master\myblog-master\post\static\post;}

uWSGI安装:

这个是安装在虚拟环境中,先workon xxx 进入虚拟环境,安装uWSGI前需要先安装依赖,输入以下命令完成安装

$sudo apt-get install build-essential python$sudo  apt-get install python-dev$sudo  pip install uwsgi

配置uWSGI:在django项目的根目录下,新建两个文件,uwsgi.ini和run.log 。第一个是uWSGI的配置文件,第二个是日志记录文件。设置uwsgi.ini文件如下:

在这里插入图片描述

[uwsgi]chdir=/home/ubuntu/myblog-master/myblog-mastermodule=myblog.wsgi:applicationsocket=127.0.0.1:8000master=truedisable-logging=truewsgi-file=/home/ubuntu/myblog-master/myblog-master/myblog/wsgi.pypidfile=/home/ubuntu/myblog-master/myblog-master/uwsgi.pid

socket后面的地址是和上面nginx配置文件中的地址uwsgi_pass 127.0.0.1:8000对应的,规定nginx和uWSGI之间的通信端口。daemonize就是日志文件的路径。disable-logging = true 表示不记录正常信息,只记录错误信息。wsgi-file是你django项目根目录下项目同名目录中有一个wsgi.py文件的路径。pidfile是uwsgi.pid文件的路径,这个文件是uWSGI运行后自动生成的,里面记录了uWSGI的进程号,可以用来重启uWSGI。

路径一定要准确,=前后不允许有空格!!!

uWSGI基本命令:

启动:uwsgi --ini uwsgi.ini停止:uwsgi --stop uwsgi.pid重启:uwsgi --reload uwsgi.pid

全部配置好后,重启nginx和uWSGI,使用云服务器公网ip就可以浏览你的项目了,参考

在这里插入图片描述

转载地址:http://etyrb.baihongyu.com/

你可能感兴趣的文章
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>