最近被django项目部署搞得头疼,查阅了一些相关的资料,终于解决这个问题,因此在这里记录一下,加深印象。
**
**
步骤一:布置环境 mysql安装(sudo apt-get update):创建目录存放虚拟环境
mkdir $HOME/.virtualenvs
打开并在~/.bashrc中添加行:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
运行:
source ~/.bashrc
虚拟环境[uwsgi]
#如果单独使用uwsgi来部署Django项目时,就用这一行。
#http=127.0.0.1:8000
#如果使用nginx+uwsgi来部署Django项目时,就用这行。其中,8000端口用来跟nginx通信。也要在阿里云防火墙中添加8000端口。
socket=0.0.0.0:8000
#你项目的完整路径。(如何查看,cd进入到目录下->pwd查看完整路径)
chdir=路径
wsgi-file=DegreeInformation/wsgi.py
#给socket文件赋权限,这里不用管。
chmod-socket=664
#启用主线程。
master=true
#指定启动的进程数
processes=4
#指定启动的线程数
threads=2
#指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。
logto=uwsgi.log
#指定进程号文件(会自动创建)。这个也很重要,如果要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。
pidfile=uwsgi.pid
#指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。
module=MyProject.wsgi:application
virtualenv=/home/donglang/.virtualenvs/degreeinfoenv #python环境
uwsgi启动和关闭python环境创建成功之后,在django的settings.py里面讲Debug关闭,并添加STATIC_ROOT=os.path.join(BASE_DIR,‘static’),之后运行python manage.py collectstatic 将网站所需的静态资源收集到一起。
步骤四.nginx安装 首先查看linux系统Nginx.conf文件内容如下:(cd /etc/nginx->ls->sudo vi nginx.conf)
user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
multi_accept on;
}
http {
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
server {
listen 800; #这个端口用来监听浏览器的请求。(默认为80端口)
server_name 0.0.0.0; # 不用管,如果有域名可以填上域名。
# charset UTF-8;
#日志文件。如果nginx出现问题,都可以通过日志文件来查错。
access_log /var/log/nginx/MyProject_access.log;
error_log /var/log/nginx/MyProject_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params; # 使用uwsgi服务器。
uwsgi_pass 0.0.0.0:8000; # 把浏览器发来的请求转发到8000端口,而uwsgi也正在监听8000端口,所以就实现了nginx与uwsgi的通信。
#uwsgi_read_timeout 30; #链接超时时间
}
location /static{ # 处理静态文件,处理链接是以/static/开头的请求。即:如果是静态文件,就不用发给uwsgi了,nginx自己处理。
alias /home/xxx/static/; # 项目静态文件的绝对路径。即:告诉nginx应该去哪里找静态文件。后面会介绍。
}
}
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
nginx启动和关闭