一些简单的介绍
一、Django框架简介
Django是一款基于MTV的web后端框架,属于重量级的web框架,其模板引擎使用的是Jinja2。Django一共分为三层:(1)
Models层
:也称模型层。模型层的主要作用是为ORM框架服务,通过wev框架实现对数据库的操作。(2)
Templates层
:也称模板层。主要用于将结果展示给用户,具体表现为HTML页面。(3)
Views层
:也称视图层。是MTV框架的核心部分,通常由视图函数组成。
二、Nginx+uwsgi工作原理
废话不多说直接上图,可以看出Nginx会接收客户端请求,如果是静态文件请求,则会到相应路径直接请求静态文件;动态请求则通过配置文件,将请求传递给uwsgi;uwsgi将接收到的包进行处理,并转发给wsgi。
返回数据则是一个逆向的过程。
前期准备
一、安装数据库
(1)安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
终端输入上述命令,安装MySQL的客户端和服务端。
(2)查看配置
安装完成后查看/etc/mysql/debian.cnf文件的默认用户名和密码。
(3)登录和修改
mysql -u 用户名 -p 密码
使用命令登录mysql,修改mysql数据库内的用户名和密码信息。
(4)重启
sudo service mysql restart
mysql -u 新用户名 -p 新密码
二、安装Nginx
sudo apt-get install nginx
一条命令完事儿!
使用命令 nginx -t 可以查看Nginx的运行状态,如果出现:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
说明Nginx运行成功,此时查看当前主机的ip地址,并在浏览器输入,出现以下页面说明成功:
三、安装uwsgi
sudo apt-get install python-dev
sudo pip install uwsgi
两条命令轻松完成!
四、安装虚拟环境
sudo pip install virtualenv
五、安装相关模块
sudo pip install django
......
需要什么模块自行选择安装
到这里,部署的前期准备工作已经差不多了。
开始部署
一、建立虚拟环境
(1)首先进入要存放网站的目录,并建立虚拟环境:
cd /var/www
virtualenv web
(2)进入虚拟环境
source web/bin/activate
进入虚拟环境的根目录
后,将代码上传到虚拟环境根目录,解压后使用Django命令启动项目,
设置域名和端口为0.0.0.0:8000
,会发现项目已经正常运行,并且可以通过IP地址正常访问:
二、配置Nginx和uwsgi
(1)配置nginx.conf
进入目录 /etc/nginx 找到nginx.conf
,并添加以下内容
server {
listen 80; # 这个端口用来监听浏览器的请求
server_name 0.0.0.0; # 填域名或IP地址
charset UTF-8;
access_log /var/log/nginx/MyProject_access.log; # 日志文件。
error_log /var/log/nginx/MyProject_error.log;
client_max_body_size 75M;
location / {
include /etc/nginx/uwsgi_params; # 使用uwsgi服务器
uwsgi_pass 127.0.0.1:8000; # 把浏览器发来的请求转发到8000端口
}
location /static/{ # 处理静态文件
alias /var/www/web/MyWeb/static; # 项目静态文件的绝对路径
}
}
(2)配置ini文件
进入nginx根目录,创建web.ini文件
,文件内容如下:
[uwsgi]
chdir =/var/www/web/MyWeb # 网页项目的目录
module =MyWeb.wsgi
home=/var/www/web # 指定虚拟环境目录
master =true
processes=4
socket =127.0.0.1:8000
chmod-socket=666
vacuum=true
(3)启动
service nginx reload
uwsgi --ini web.ini
重启nginx服务并使用uwsgi启动刚刚配置好的ini文件
,此时即可通过配置的域名或者ip地址进行访问了!
三、其他问题
(1)数据库问题
如果要将本地的数据库迁移到服务器上,可以使用如下命令:
# 打包指定数据库
mysqldump -u用户名 -p源库名 > xxx.sql
# 打包所有数据库
mysqldump -u用户名 -p密码 --all-databases > xxx.sql
# 恢复指定数据库
mysqldump -u用户名 -p密码 --one-databases # 恢复所有数据库(这个要先登入数据库)
source xxx.sql
(2)静态文件收集问题
首先在setting.py文件设置好静态文件目录,并在项目根目录建立static文件夹
STATICFILES_DIRS=(
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT=os.path.join(BASE_DIR, 'static')
然后使用命令进行静态文件收集:
python manage.py collectstatic