下面是将Django项目部署到CentOS的踩坑实战攻略,具体步骤如下:
准备工作
- 准备一台CentOS服务器,安装好Python环境和Django框架
- 安装和配置Nginx和uWSGI,设置Nginx代理
开始部署
示例一:直接使用uWSGI部署Django项目
- 在服务器上新建项目目录,例如:/root/myproject/
- 在myproject目录下,创建uwsgi.ini文件,配置uWSGI参数,示例如下:
[uwsgi]
chdir = /root/myproject/
module = myproject.wsgi:application
master = true
processes = 4
socket = /root/myproject/myproject.sock
chmod-socket = 666
vacuum = true
其中,各参数含义如下:
chdir
:项目所在目录
module
:Django项目中wsgi.py文件所在路径,以及application对象
master
:开启主进程
processes
:开启子进程个数
socket
:uWSGI和Nginx通信的socket文件路径
chmod-socket
:给socket文件授权,保证Nginx能够读取和写入socket文件
vacuum
:自动清理Unix socket的空间
-
启动uWSGI服务:在myproject目录下执行以下命令:
uwsgi --ini uwsgi.ini
-
配置Nginx:
修改nginx.conf文件,在http{}节点下加入以下内容:
```
server {
listen 80;
server_name your_domain.com;
charset utf-8;
access_log /var/log/nginx/your_domain.com.access.log main;client_max_body_size 35M;
location / {
include uwsgi_params;
uwsgi_pass unix:/root/myproject/myproject.sock;
}
}
``
your_domain.com
其中,是你的域名或IP地址,
client_max_body_size设置上传文件的最大大小,
location`节点下的参数请根据具体的项目路径修改。 -
重启Nginx服务,验证项目是否部署成功。
示例二:使用Docker和Docker-compose快速部署Django项目
- 安装Docker和Docker-compose
- 在服务器上新建项目目录,例如:/root/myproject/
- 在myproject目录下,创建Dockerfile文件,配置Docker镜像,示例如下:
```
# Use an official Python runtime as a parent image
FROM python:3.6-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip3 install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python3", "manage.py", "runserver", "0.0.0.0:80"]
```
上面的示例中,假设Django项目的manage.py文件中已设置好项目启动的端口号为80。
- 在myproject目录下,创建docker-compose.yml文件,示例如下:
version: "3"
services:
web:
build: .
ports:
- "80:80"
上面的配置中,将项目的80端口映射到宿主机的80端口。
-
启动Docker容器:在myproject目录下执行以下命令:
docker-compose up
-
验证项目是否部署成功。
注意事项:
- 在Docker镜像中只需要安装项目所需的Python库,依赖的环境都已经打包在镜像中了,不需要再手动进行安装和配置。
- 如果需要更新代码,只需要重新构建镜像,然后重新启动容器即可。
- 如果使用Nginx代理,将Docker容器端口映射到Nginx的端口即可。
- 在Docker容器内,如果需要连接MySQL服务器,需要安装MySQL客户端库,通过pip install mysqlclient 安装即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:将django项目部署到centos的踩坑实战 - Python技术站