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
 去访问吧, 哈哈哈

 
原创粉丝点击