在ubuntu18上部署django项目

本文分享了从Windows本地部署Django到阿里云Ubuntu服务器的实践过程,涉及工具选择(XFTP代替Git)、Python版本升级、MySQL安装、uwsgi与nginx配置,以及权限调整等关键步骤,旨在帮助读者顺利部署 Django 应用。

最近几天一直在研究这个事情,最终还是成功部署了,在这分享一些使用的经历和遇到的一些坑,希望能够帮助有需要的人。

首先推荐一个软件:xftp,本人亲测非常好用,如果对git不是很熟悉,又想把windows本地上的文件上传到云服务器端的话,用它准没错,而且界面非常清晰,对后续的部署拥有很大的帮助。包括后文说的up主是用的git,我用的是xftp,亲测可以替代,也能够正常部署。

我用的云服务器是阿里云,系统是ubuntu18。本地是windows10,django的本地运行环境是python3.7,因为ubuntu18默认安装的是python3.6,所以还需要先更新python的版本,具体的方法可参考我的另外一篇文章Ubuntu18更新python3.7_XFIRR的博客-优快云博客,更新完成之后,创建软链接,就可以开展部署了。如果对python3.7安装之后搭建虚拟环境有疑问,可以参考B站上up主(再敲一行代码)的django2.0教程37章,上面有详细的操作步骤。但是因为时间比较久,所以参考的时候要注意有一些命令已经不能使用,特别是关于更新python3.7的部分,一定要注意。

在搭建好python3.7的环境之后,就可以开始着手安装mysql数据库了,详细的教程可以参考部署Django到阿里云服务器教程_挽青的博客-优快云博客_django部署到云服务器,但是文章中关于uwsgi和nginx的部分个人不建议参考,可能也是时间比较久了,容易出现问题。

在这里填mysql安装的一些坑,我的mysqlclient安装都是先激活了虚拟环境再安装的(命令是source bin/activate,记得提前cd到相应目录),安装这个库之前最好先按照上面的教程安装好mysql并确认已经可以正常开启mysql,就跟本地上一样。

首先是pip3 install mysqlclient这个命令,使用之前请执行这个命令:apt-get install libmysqlclient-dev,不然会提示无法安装,出现一大段的红字。

如果使用上面的命令之后,依旧出现以下报错,

    MySQLdb/_mysql.c:46:10: fatal error: Python.h: No such file or directory
    #include "Python.h"
    ^~~~~~~~~~
    compilation terminated.
    error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
    [end of output]

可以执行命令apt-get install python3.x-dev这个命令,我是在激活了虚拟环境之后使用的该命令,这个x代表的是你是使用的什么版本,比如说我是python3.7,那这个x就是7。

在安装好了mysql之后,就可以开始安装uwsgi和nginx了,这个地方的教程也可以参照刚刚上文b站up主的视频的第39个视频,按照up主的方法,就可以正常使用了。

最后填补一个django的坑:

我在部署成功之后想要上传文件到数据库,但是提示:

 这个问题出现的原因是用户没有写入的权限,在linux中修改文件权限的方式可以参考这篇文章:Ubuntu文件权限详解_AnneMOMO的博客-优快云博客_ubuntu 文件夹权限

可以使用chmod -R 777 xx/来批量修改文件夹下文件的权限

我在使用了这篇文章的方法后,可以看到:

 之后再运行django程序就没有问题了。

如有问题欢迎大家指正。

### 在 Ubuntu 服务器上部署 Django 项目的详细配置 在 Ubuntu 服务器上部署 Django 项目需要多个组件协同工作,包括 Python 环境、WSGI 服务器(如 uWSGI)、Web 服务器(如 Nginx)等。以下是完整的配置方法: #### 1. 安装必要的依赖项 确保系统更新到最新状态,并安装所需的软件包: ```bash sudo apt update sudo apt install python3-pip python3-venv nginx ``` 为 Django 项目创建一个虚拟环境以隔离依赖项[^2]。 #### 2. 配置 Django 项目 激活虚拟环境安装 Django 及其他依赖项: ```bash python3 -m venv myenv source myenv/bin/activate pip install django uwsgi ``` 将 Django 项目复制到服务器的适当位置,并设置正确的权限: ```bash sudo chown -R www-data:www-data /path/to/project sudo chmod -R 755 /path/to/project ``` #### 3. 配置 uWSGI 创建 uWSGI 配置文件 `uwsgi.ini`,内容如下: ```ini [uwsgi] socket = 127.0.0.1:9001 chdir = /home/project/LoginDemo wsgi-file = LoginDemo/wsgi.py processes = 4 threads = 2 master = True daemonize=/var/log/uwsgi/djangoProject.log pidfile= /var/log/nginx/uwsgi.pid vacuum = True max-requests = 5000 limit-as = 512 buffer-size = 30000 ``` 启动 uWSGI 并测试其是否正常运行: ```bash uwsgi --ini /path/to/uwsgi.ini ``` #### 4. 配置 Nginx 创建 Nginx 配置文件 `/etc/nginx/sites-available/django`,内容如下: ```nginx server { listen 80; server_name your_domain_or_ip; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9001; } location /static/ { alias /path/to/project/static/; } } ``` 启用配置并重启 Nginx: ```bash sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/ sudo systemctl restart nginx ``` #### 5. 设置数据库和静态文件 确保 Django 项目中的数据库已正确初始化: ```bash python manage.py migrate python manage.py collectstatic ``` 调整静态文件路径以匹配 Nginx 配置[^3]。 #### 6. 配置 systemd 管理 uWSGI 创建 uWSGI 的 systemd 服务文件 `/etc/systemd/system/uwsgi.service`: ```ini [Unit] Description=uWSGI instance to serve django After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/home/project/LoginDemo Environment="PATH=/home/project/myenv/bin" ExecStart=/home/project/myenv/bin/uwsgi --ini /path/to/uwsgi.ini [Install] WantedBy=multi-user.target ``` 启动并启用 uWSGI 服务: ```bash sudo systemctl start uwsgi sudo systemctl enable uwsgi ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值