美文网首页
Django Gunicorn NGINX 在 CentOS7

Django Gunicorn NGINX 在 CentOS7

作者: 程序圆圆圆 | 来源:发表于2019-03-31 16:18 被阅读0次

部署流程如下:

  1. 在服务器上建立git仓库
  2. 将项目利用Git推送到服务器上
  3. 安装虚拟环境
  4. 编写systemctl的service
  5. 配置NGINX反向代理
  6. 用systmectl启动NGINX和gunicorn

1.配置Git仓库

一下示例使用git用户, 在home目录下创建git仓库

# 创建git仓库
git init --bare your-project-name.git
cd your-project-name.git/hooks
# 创建文件用于将git上传的项目重定向到指定目录
touch post-receive
chmod 775 post-receive

post-receive文件中写入一下内容:

git --work-tree=/Your/Project/path/ --git-dir=/home/git/your-project-name.git checkout -f

到此, 一个Git仓库就创建好了, 用户git了项目后, 会自动推送到服务器中的/Your/Project/path/

2.将项目利用Git推送到服务器上

一下命令可以创建一个git仓库, 并将项目推送到git服务器上

# 在项目目录中执行一下操作
git init
git add *
git commit -m 'initial commit'
# git是用户, ip是服务器地址或hostname
git remote add origin git@ip:your-project-name.git
# 第一次要这样指定, 以后用git push就可以了
git push -u origin master

3.安装虚拟环境

不同的项目有不同的环境依赖, 这使得创建一个虚拟环境变得十分重要.Python3中提供了方便的创建虚拟环境的命令, 这里使用python3 为例创建一个虚拟环境:

python3 -m venv /Your/Project/venv/path/

这样就可以在/Your/Project/venv/path/目录下创建一个虚拟环境了.
使用以下命令激活虚拟环境:

source /Your/Project/path/bin/activate

使用deactivate命令退出虚拟环境

在虚拟环境下安装项目依赖, 一般使用pip. 本例中使用gunicorn启动Django项目, 故这个必装:

pip install gunicorn

写好requirements.txt文件的, 可以使用如下命令安装:

pip install -r requirements.txt

4.编写systemctl的service

Nginx 在安装完后就有service, 这里主要配置gunicorn

# 一般配置在下面这个目录
cd /etc/systemd/system/
vim your-project-name.service 

your-project-name.service 内容如下:

[Unit]
Description=gunicorn website app daemon 
After=network.target

[Service]
User=git
Group=git
WorkingDirectory=/Your/Project/path/your-project-name
ExecStart=/Your/Project/venv/path/bin/your-project-name -b 127.0.0.1:8000 your-project-name.wsgi:application

[Install]
WantedBy=multi-user.target

5.配置NGINX反向代理

# nginx 配置配置
cd /etc/nginx/conf.d
vim name.conf

name.conf中配置反向代理, 如下

server{
    listen 80;
    server_name your-hostname;
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8000;
    }
}

6.用systmectl启动NGINX和gunicorn

systemctl start nginx
systemctl start your-project-name.service

总结

至此, 服务器部署完成, 可以自己检查一下是否部署成功. 这里有很多知识点, 如git, nginx, gunicorn的配置等. 此文只是简略的介绍部署过程, 更多详细的内容可以查看各个部分的官方文档进行了解.

相关文章

网友评论

      本文标题:Django Gunicorn NGINX 在 CentOS7

      本文链接:https://www.haomeiwen.com/subject/fmkubqtx.html