# info
# centos 7
# anaconda 2019.03
# python 3.6
# django 2.1
# uwsgi 2.0.18
# nginx 1.16.1
1. 安装基础包
# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
# yum install pcre pcre-devel pcre-static
# yum install python3-devel
# yum install uwsgi-plugin-python36*
2. 项目目录
linux下创建新用户,用户名为cjc
# useradd cjc
修改用户密码# passwd cjc
用户家目录下创建目录Downloads
,Project
$ mkdir ~/Downloads/
$ mkdir ~/Project/
3. Anaconda
安装wget
# yum install wget
使用wget
将Anaconda
下载至~/Downloads/
$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.sh
安装Anaconda
$ bash ~/Downloads/Anaconda3-2019.03-Linux-x86_64.sh
刷新环境$ source ~/.bashrc
4. 项目环境
使用conda
创建虚拟环境My_Django
,指定python
版本为3.6
$ conda create -n My_Django python==3.6
5. django
激活虚拟环境My_Django
$ conda activate My_Django
安装django
$ pip install django==2.1
在~/Project/
目录下生成项目Myweb
$ django-admin startproject Myweb
生成应用Myapp
$ python manage.py startapp Myapp
django的简单配置Myweb/Myweb/settings.py
ALLOWED_HOSTS = ['*',]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Myapp',]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
STATIC_ROOT = '/home/cjc/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
6. django 首页
Bootstrap
下载并将下载后的文件解压到Myweb/static/
下
https://v3.bootcss.com/getting-started/#download
Myweb/templates/Myapp/index.html
Myweb/Myapp/views.py
def index(request):
return render(request, 'Myapp/index.html')
Myweb/Myweb/urls.py
from django.contrib import adminfrom
from django.urls import pathfrom
from Myapp.views import index as Myapp_index
urlpatterns = [
path('admin/', admin.site.urls),
path('', Myapp_index),]
7. uwsgi
安装uwsgi
$ pip install uwsgi
在~/Project/Myweb/
创建uwsgi.ini
文件
How to use Django with uWSGI
[uwsgi]
socket = :8000
chdir = /home/cjc/Project/Myweb
module = Myweb.wsgi
master = true
processes = 5
threads = 5
vacuum = true
pidfile = /tmp/Myweb-master.pid
daemonize = /var/log/uwsgi/Myweb.log
socket
使用套接字连接 chdir
项目路径,即包含mysite软件包的目录 module
要使用的wsgi模块 master
启动主线程 processes
启动进程数 threads
启动线程数 vacuum
服务器退出时自动删除pid pidfile
指定启动时的pid daemonize
uwsgi日志路径
启动uwsgi
$ uwsgi --ini uwsgi.ini
其他# 重新启动
$ uwsgi --reload /tmp/Myweb-master.pid
# 关闭
$ uwsgi --stop /tmp/Myweb-master.pid
8. Nginx
安装nginx
# yum install nginx
配置nginx
,/etc/nginx/nginx.conf
user cjc;
server {
listen 80;
server_name 127.0.0.1;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT Myweb.wsgi;
uwsgi_param UWSGI_CHDIR /home/cjc/Project/Myweb;
client_max_body_size 35m;
}
location /static {
alias /home/cjc/static;
}
}
开启nginx
服务# systemctl start nginx
其他# 重新启动
# systemctl restart nginx
# 关闭
# systemctl stop nginx
9. 可能遇到的问题
uwsgi
安装需要gcc
,pcre
# log
!!! no internal routing support, rebuild with pcre support !!!
nginx
报错502
关闭firewall
# systemctl stop firewalld
关闭selinux
# 临时关闭
setenforce 0
# 查看selinux状态
getenforce
# 永久关闭(需要重新启动)
vim /etc/selinux/config
SELINUX=disabled
静态文件访问 配置STATIC_ROOT
,并使用python manage.py collectstatic
收集静态文件,配置nginx
的/static
,配置nginx
中的user