sudo yum update -y
sudo yum install -y epel-release
sudo yum install -y python3 python3-devel gcc nginx
sudo pip3 install virtualenv
mkdir ~/myproject
cd ~/myproject
python3 -m venv myenv
source myenv/bin/activate
pip install django uwsgi
确保在settings.py
中设置以下内容:
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', 'localhost', '127.0.0.1']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
python manage.py collectstatic
在项目目录下创建myproject_uwsgi.ini
:
[uwsgi]
project = myproject
base = /home/username/myproject
chdir = %(base)
home = %(base)/myenv
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project).sock
chmod-socket = 660
vacuum = true
logto = %(base)/uwsgi.log
uwsgi --ini myproject_uwsgi.ini
在/etc/nginx/conf.d/
下创建myproject.conf
:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location /media/ {
root /home/username/myproject;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/home/username/myproject/myproject.sock;
}
}
sudo nginx -t
sudo systemctl restart nginx
创建/etc/systemd/system/myproject.service
:
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=username
Group=nginx
WorkingDirectory=/home/username/myproject
Environment="PATH=/home/username/myproject/myenv/bin"
ExecStart=/home/username/myproject/myenv/bin/uwsgi --ini myproject_uwsgi.ini
[Install]
WantedBy=multi-user.target
sudo systemctl start myproject
sudo systemctl enable myproject
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
访问你的域名或服务器IP,应该能看到Django应用正常运行。
sudo systemctl status myproject
cat /home/username/myproject/uwsgi.log
collectstatic
可以使用Let's Encrypt免费证书:
sudo yum install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
processes
和threads
参数通过以上步骤,你的Django应用应该已经成功部署在CentOS服务器上,并通过Nginx和uWSGI提供服务。