将本地django项目部署到服务器上

14 篇文章 0 订阅
3 篇文章 0 订阅

一.将本地项目上传至服务器或者发布到Github

二.登录服务器

1.先升级一下库的版本

sudo apt-get update
sudo apt-get upgrade

2.安装virtualenv

pip3 install virtualenv

3.进入到部署项目文件夹,从 GitHub 中拉取项目代码

git clone https://github.com/shibangCLL/my_blog.git

4.在服务器生成虚拟环境

virtualenv --python=python3.7 env

5.进入虚拟环境

source env/bin/activate

6.安装项目依赖

进入requirements.txt 目录

pip3 install -r requirements.txt

这里报错

Using cached mysqlclient-2.0.1.tar.gz (87 kB)
    ERROR: Command errored out with exit status 1:
     command: /home/site/like2learn.online/env/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ui4j2m4z/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ui4j2m4z/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-k1ul2tp7
         cwd: /tmp/pip-install-ui4j2m4z/mysqlclient/
    Complete output (12 lines):
    /bin/sh: 1: mysql_config: not found
    /bin/sh: 1: mariadb_config: not found
    /bin/sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-ui4j2m4z/mysqlclient/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "/tmp/pip-install-ui4j2m4z/mysqlclient/setup_posix.py", line 65, in get_config
        libs = mysql_config("libs")
      File "/tmp/pip-install-ui4j2m4z/mysqlclient/setup_posix.py", line 31, in mysql_config
        raise OSError("{} not found".format(_mysql_config_path))
    OSError: mysql_config not found
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

执行这个代码

sudo apt-get install python3.7-dev libmysqlclient-dev

7. 收集静态文件

python3 manage.py collectstatic

8.生成数据库

python3 manage.py makemigrations
python3 manage.py migrate

三.配置nginx

1.启动nginx

sudo service nginx start

2.重新写 Nginx 的配置文件

cd /etc/nginx/sites-available
touch like2learn.online

编写 like2learn.online

server {
  charset utf-8;
  listen 80;
  server_name like2learn.online;  # 改成你的 IP

  location /static {
    alias /home/site/like2learn.online/my_blog/collected_static;
  }

  location /media {
    alias /home/site/like2learn.online/my_blog/media;
  }

  location / {
    include proxy_params;
    proxy_pass http://unix://home/site/like2learn.online/my_blog/like2learn.online.sock;
  }
}

这个配置文件链接到在用配置上去

sudo ln -s /etc/nginx/sites-available/like2learn.online /etc/nginx/sites-enabled

四.Gunicorn及测试

1.安装gunicorn

pip3 install gunicorn

2.重启nginx

sudo service nginx reload

3.启动Gunicorn

gunicorn --bind unix:/tmp/like2learn.online.socket blog.wsgi:application

还可以这样

gunicorn blog.wsgi:application -w 4 -b 0.0.0.0:8001

五.进程托管

1.systemd

进入文件夹新建文件

cd /etc/systemd/system
touch like2learn.online.service

编辑like2learn.online.service

[Unit]
Description=like2learn.online service
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/home/site/like2learn.online/my_blog
ExecStart=/home/site/like2learn.online/env/bin/gunicorn --access-logfile - --workers 2 --bind unix:/home/site/like2learn.online/my_blog/like2learn.online.sock blog.wsgi:application
[Install]
WantedBy=multi-user.target

2.执行

systemctl enable like2learn.online
$ systemctl status like2learn.online    # 查看进程状态
$ systemctl stop like2learn.online    # 终止my_blog进程
$ systemctl start like2learn.online    # 启动my_blog进程
$ systemctl restart like2learn.online    # 重新启动my_blog进程

六.后期维护

之后的项目维护中,如果更改了 gunicorn 的配置文件,那么需要依次执行下面两条语句去重启服务,如果只是修改了 Django 项目的内容,只需要单独执行第二条重启命令即可:

~$ sudo systemctl daemon-reload
~$ sudo systemctl restart like2learn.online

如果修改了 Nginx 的配置文件,那么需要依次执行下面两条语句去重启服务:

~$ sudo nginx -t
~$ sudo systemctl restart nginx

参考链接

在 Linux 服务器上使用 Nginx + Gunicorn 部署 Django 项目的主要流程

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cll_869241891

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值