这是以本人参与过的一个项目部署为例而作记录,服务器是阿里云上购买的Centos系统,前提是已经安装了python3,和虚拟环境。安装方法可查看本人的上一篇文章。
安装Django
- 切换路径,cd ~/
- 创建文件夹,mkdir /home/mysite && mkdir /home/mysite/static
- 切换虚拟环境,workon py36
- 在此虚拟环境下安装Django,pip install Django
- 创建我们的Django项目,依次执行一下命令:
django-admin.py startproject mysite
cd mysite
vim mysite/settings.py
然后在setting.py文件中找到ALLOWED_HOSTS = [server_ip, hostname],我这里设置ALLOWED_HOSTS = [’*’],意思是允许所有ip访问 - 运行Django服务,python manage.py runserver 0.0.0.0:8000
到这里Django服务已经确保可以运行了
安装uwsgi
同样是在py36的虚拟环境下
- 安装uwsgi,pip install uwsgi
- 创建测试文件:
vim test.py
test.py内容大致是:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] #
- 跑一下测试,uwsgi --http :8000 --wsgi-file test.py
- 测试Django+uwsgi,cd ~/mysite 然后uwsgi --http :8000 --module mysite.wsgi
到这里Django+uwsgi就测试通过
安装nginx
- 安装nginx依赖,yum -y install pcre* && yum -y install openssl*,主要是对ssl对支持
- 安装nginx,yum install nginx,如果失败,先运行sudo yum install epel-release,参考https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
- 启动nginx服务,systemctl start nginx
- 系统开启nginx对使用,systemctl enable nginx
- nginx配置,vim /etc/nginx/conf.d/demo_nginx.conf:
# demo_nginx.conf
upstream django {
server unix://home/mysite/mysite.sock;
}
server {
listen 8000;
charset utf-8;
server_name localhost;
client_max_body_size 75M;
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
location /static {
alias /home/mysite/static;
}
}
- 重启nginx,systemctl restart nginx
- 测试nginx+uwsgi:
systemctl start nginx
uwsgi --socket /home/mystie/mysite.sock --wsgi-file test.py —chmod-socket=666
然后你就可以输入http://server_ip:8000,server_ip是你服务器对ip,看下测试结果 - 测试nginx+uwsgi+Django:
cd ~/mysite
uwsgi --socket /home/mysite/mysite.sock --module mysite.wsgi --chmod-socket=666
到这基本上uwsgi+nginx+Django就测试完毕。
其他
启动uwsgi是可以通过配置文件对形势去启动对,这样可以灵活的对需求进行必要的配置,也能对性能资源做更好对分配。
创建配置文件vim /root/conf.ini:
# conf.ini file
[uwsgi]
# Django项目所在的绝对路径
chdir = /root/mysite
# Django的wsgi文件
module = mysite.wsgi
# 虚拟环境的绝对路径
home = /root/Envs/py36
# 启动主线程
master = True
# 开启对大的进程数
processes = 2
# 指定项目的socket
socket = /home/mysite/mysite.sock
# 指定socket文件的权限
chmod-socket = 666
# 当服务器退出时自动删除unix socket文件和pid文件
vacuum = True
pidfile = /tmp/uwsgi_mysite.pid
daemonize = /var/log/uwsgi/mysite.log
然后直接uwsgi --ini conf.ini就能够运行uwsgi服务了