Django+nginx+gunicorn部署个人博客
来源:互联网 发布:ubuntu 安装lnmp php7 编辑:程序博客网 时间:2024/05/16 10:48
1.部署前的准备.
准备一台可以通过外网访问的服务器, 域名可以先不用,直接用ip就好
2.在服务器创建一个用户
useradd xxx 添加用户
passwd xxx 设置密码
gpasswd -a xxx group(用户组)
cd /home
mkdir xxx (给用户一个目录)
chown -R xxx /home/xxx
3.安装所需要的软件
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx git python3-pip virtualenv
pip3 install gunicorn
安装好nginx,启动nginx, sudo server nginx start 打你的ip
会出现:
接下来,上传你的代码到服务器,我使用scp可能很慢, 先通过上传到github, 在git到本地。接下里,把项目里的静态文件收集起来。到你项目的目录下,python(python3) manage.py collectstatic
创建数据库文件 python(python3) manage.py makemigrations python(python3) manage.py migrate
配置nginx (在/etc/nginx/site-available/)创建一个文件 xxx
server { charset utf8; listen 80; server_name ip; location /static { alias /path/to/youproject/static; } location /media { alias /path/to/yourproject/media; } location / { proxy_set_header Host $host; proxy_pass http://unix:/tmp/xx.socket; }}其它请求转发给 Django 处理。proxy_pass 后面使用了 unix 套接字,其作用是防止端口冲突
sudo ln -s /etc/nginx/site-available/xxx /etc/nginx/site-enabled/xxx
sudo service nginx reload
接下来,使用前面安装好的gunicorn
在你的项目的目录下(就是包含manage.py的那个目录)
gunicorn --bind unix:/tmp/xxx.socket yourproject.wsgi:application
访问你的ip或者域名看看你的项目有没有拉起来?
如果没有,①仔细检查配置和上面写的是否一样.
②查看你的服务器的80, 8000端口是否开放?
以阿里云为例(因为我也是这样过来的,开始的懵逼,慢慢摸索) (网页版登录)找到控制台(在右上角的位置)找到安全组,看到你的实例, 大概在实例的右下角, 有一个配置规则, 点进去,找到添加安全组规则.根据提示可以完成添加。
③如果看到的是nginx的胡欢迎界面,一尝试把nginx目录下的default删除(site-avaiabled, enabled), 你也可以做一个备份)。二,看看你项目的路径,是不是加上了你的路径(主界面)
如果能够正常访问, 那么,我们就要可以写一个启动脚本了
脚本位于 /etc/init/ 目录下,且脚本文件名必须以 .conf 结尾:xxx.conf
start on net-device-up ①stop on shutdownrespawn ②setuid user(你的用户名,括号这里的不要写,只是为了解释)③chdir /home/xxx/path/to/yourprojectl ④exec ../env/bin/gunicorn --bind unix:/tmp/xxx.socket yourproject.wsgi:application ⑤
① start on net-device-up 确保只在服务器联网时才启动 Gunicorn。
② 如果进程崩溃了(比如服务器重启或者进程因为某些以外情况被 kill),respawn 将自动重启 Gunicorn。
③ setuid 确保以 xxx 用户的身份(换成你自己的用户名)运行 Gunicorn 进程。
④ chdir 进入到指定目录,这里进入项目的根目录。
⑤ exec 执行进程,即开启服务器进程。
sudo service xxx start
去访问吧, 哈哈哈
阅读全文
0 0
- Django+nginx+gunicorn部署个人博客
- django + gunicorn + nginx 部署
- nginx+gunicorn+django部署
- nginx + gunicorn + virtualenv部署django
- [django]django 部署,gunicorn、virtualenv、nginx
- django+nginx+supervisor+gunicorn+gevent 网站部署
- Mac下Django+gunicorn+Nginx服务器部署
- nginx+gunicorn+virtualenv部署django项目
- django+nginx+supervisor+gunicorn+gevent 网站部署
- nginx + gunicorn + django的简单部署
- Django+nginx+gunicorn部署流程(一)
- Django+nginx+gunicorn部署流程(二)
- django+gunicorn+nginx部署项目 入门经验
- centos6 nginx + gunicorn + django的简单部署
- nginx&gunicorn&django阿里云简单部署
- virtualenv+gunicorn+supervisor+nginx 部署 django项目
- django部署方式之Gunicorn+Django+nginx+mysql
- gunicorn部署django实例
- Java并发之Executor框架
- logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解
- Common Subsequence HDU
- 数据结构----链表
- 读书笔记--《Show and Tell: A Neural Image Caption Generator》
- Django+nginx+gunicorn部署个人博客
- 一个小白的程序猿养成日记01
- Leetcode:121. Best Time to Buy and Sell Stock
- 随手记在iPhone X上的真机适配实践总结
- GIT push到github记录用户名
- 如何彻底理解反射
- Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
- python实践项目(五)
- 标题布局和自定义view进度条 及自定义ViewGroup