您现在的位置是:网站首页>技术文章>Web个人网站

基于Nginx+uWSGI部署Django项目于阿里云服务器

Petrichor2019-10-10 13:37Web463人已围观

简介个人网站,用来做什么?我刚开始就把它当做一个我吐槽心情的地方,也就相当于一个网络记事本,也会放上一些照片。后来也用来记录自己所学习的知识。

1. 运行环境

 Ubuntu16.4

 Python3.6

 Django1.11

2. 将项目上传到服务器上

 可以使用FileZilla或者scp命令

3. 安装虚拟环境

    本地项目是建在python虚拟环境下的,所以在阿里云上也要先建下虚拟环境

3.1 安装virtualenv

pip install virtualenv
sudo pip install virtualenvwrapper #安装虚拟环境管理工具

3.2 在home下创建虚拟环境安装目录

mkdir .virtualenvs

3.3 为virtualenv配置环境变量,打开.bashrc文件,在末尾加上两行代码

vim ~/.bashrc

# 添加以下代码
export WORKON_HOME=$HOME/.virtualenvs  # 所有虚拟环境存储的目录
source /usr/local/bin/virtualenvwrapper.sh

# 使配置文件生效
source ~/.bashrc

3.4 创建虚拟环境

mkvirtualenv blog -p python3.6

3.5 进入所创建的虚拟环境,在虚拟环境中安装相应的依赖包

workon blog  # 进入虚拟环境
pip install -r requirements.txt  # 安装依赖包

4. 安装数据库和迁移数据

4.1 在ubuntu上安装MySQL

sudo apt-get update
sudo apt-get install mysql-server 
sudo apt-get install mysql-client

4.2 创建数据库

create database blog charset=utf8;

4.3 迁移数据库

python manage.py makemigrations
python manage.py migrate

至此,我们已经完成了项目文件迁移、环境建立、数据库迁移 。可以在阿里云的终端中运行Django项目,先进入虚拟环境,然后cd到项目目录下,python manage.py runserver 看能不能启动项目,如果可以说明项目本身已经没有问题了。

5. nginx、uWSGI的安装

5.1 Nginx的安装

sudo apt-get update
sudo apt-get install nginx

安装成功后,用浏览器访问你的阿里云IP地址,看是否成功

5.2 Nginx配置

● 打开配置文件default,路径/etc/nginx/sites-available/default,设置以下内容。一个是server_name后面换成你的阿里云公网IP,有的文章说不换也行。关键是下面2个location,第一个location是设置的和uWSGI的关联。第二个location /static是设置的静态文件的路径。

server_name 47.106.84.245;
        
        location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        # try_files $uri $uri/ =404;
        include  uwsgi_params;
                uwsgi_pass  127.0.0.1:8000;  
    }
        location /static {
               alias /home/myweb/static;
}

● 上面nginx配置静态文件有一个问题,就是上面的目录/home/myweb/static只是我们自己的静态文件的目录,你登录admin后发现admin页面的样式都丢失了。因为django自带的admin的静态文件路径没有导入。所以 就需要新建一个文件夹,我的是/home/myweb/nginx/static,然后执行命令把整个项目的所有静态文件都收集到这个目录下,再修改下上面的配置

第一步:新建文件夹 /home/myweb/nginx/static

第二步:修改setting.py文件,增加STATIC_ROOT

STATIC_ROOT='/home/myweb/nginx/static/'    #添加收集静态文件的目录
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),   
)

第三步:执行以下代码收集静态文件

python manage.py collectstatic

第四步:修改nginx的配置

 location /static {
               alias /home/myweb/nginx/static;
}

5.3 uWSGI安装

 这个是安装在虚拟环境中,先workon blog进入虚拟环境,安装uWSGI前需要先安装依赖,输入以下命令完成安装

apt-get install build-essential python
apt-get install python-dev
pip install uwsgi

5.4 配置uWSGI

 在django项目的根目录下,新建一个文件uwsgi.ini

[uwsgi]
# Django程序所在服务器地址
socket=127.0.0.1:8000
# 项目目录
chdir=/tmp/blog_website
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=blog_website/wsgi.py
# 进程数
processes=4
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/root/.virtualenvs/blog

5.5 启动uWSGI

uwsgi --ini uwsgi.ini

这样一般就可以启动项目进行访问了。

很赞哦!(18)

上一篇:RESTful API

下一篇:异步Web框架Sanic

文章评论