Django+virtualenvwrapper+mariadb+redis+Uwsgi+Nginx+阿里云Centos项目部署

思路:

一定要细心看错误信息
一定要细心看错误信息
一定要细心看错误信息

  • 做每一步都需要大概知道为什么要这么做,这样在部署到后面时遇到错误想找原因就比较简单,不浪费时间
  • 其实首先要理清思路,理清思路的话1个小时内就可以完成
  • 大概流程分析:
    • 1、安装一些依赖包(对于之后安装的包有作用)
    • 2、安装Python3.7并配置信息(centos有python3以上的版本可以不安装)
    • 3、mariadb安装与配置(只需在centos中安装)
    • 4、redis安装与配置(只需在centos中安装)
    • 5、虚拟环境virtualenvwrapper的安装与配置
    • 6、在虚拟环境中跑django项目代码,看是否运行的成功
    • 7、安装uwsgi(centos与虚拟环境中都需要安装)并在django项目中配置对应的uwsgi.ini文件,使用uwsgi去跑项目
    • 8、nginx的安装与配置(只需在centos中安装)
    • 9、在使用uwsgi+nginx运行django项目之前,需要配置下django项目

部署前说明:

  • 因为每个人的项目都做的不一样,相对的目录位置、代码都不经相同,所以还需要结合多个项目部署文章来看比较好
  • 我的django项目目录名字是Project,存放在/root/django-website目录下的,所以下面有关这些目录的路径根据个人情况自己修改
  • 其实大部分步骤都可能遇到error,然后我们不要直接跳过错误信息直接去百度查,而是先看错误信息,因为很多错误信息都提供了解决方案

部署步骤:

一、安装依赖包

安装这些依赖包,是因为这些包是安装之后的其他包的前提条件

yum install opensll-devel bzip2-devel expat-devel gdbm-devel readline-devel sql ite-devel gcc gcc-c++ opensll-devel libffi-devel python-devel mariadb-devel python-setuptools

二、安装Python3.7

1:从网上下载python压缩包
2:将python包解压到tmp目录下
3:进入到tmp下的python3.7目录下
4:配置python3.7,这样python3.7会安装到/usr/local下
5:编译python程序
6:安装python
7:设置python3.7的软链接(一般这里会有错误,说/usr/bin/python3已存在,去删掉python3重新执行该命令即可)
8:设置pip3的软链接(同上,删掉对应的pip3)

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

tar -xzvf Python-3.7.3.tgz -C /tmp

cd /tmp/Python-3.7.3

./configure --prefix=/usr/local

make

make altinstall

ln -s /usr/local/bin/python3.7 /usr/bin/python3

ln -s /usr/local/bin/pip3.7 /usr/bin/pip3

细心看错误信息

三、maridb安装与配置

本django中用的是mysql数据库,而在centos中安装mariadb
maridb数据库管理系统是mysql的一个分支,操作是和mysql是一样的
1:在centos系统中通过yum命令安装mariadb(如果centos中已经有的话则不用安装)
2:启动mariadb
3:试试是否能进入到mariadb内
4:退出mariadb去编辑mariadb的配置文件,令外部可以访问centos中的mariadb
5:设置mariadb的账户和密码和对应的权限
6:同上
7:刷新权限

sudo yum install mariadb-server

sudo systemctl start mariadb 

mysql -uroot

vim /etc/my.cnf		#在[mysqld]: 下面加一行:        bind-address = 0.0.0.0

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'djt123' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'djt123' WITH GRANT OPTION;

FLUSH PRIVILEGES;

到这里centos中的maridb配置已经算完成了,还需要完成的是将django项目中对应的数据库文件映射进mariadb中,可以在windows中通过SQLyog去连接centos中的mariadb,然后在里面创建django项目对应的数据库并把数据导入进去(或者可以不在windows中这样操作,在下文的第六步中通过FileZilla将sql的文件传到centos中,然后在mariadb中使用source命令导入数据库的数据也行)
细心看错误信息

四、redis安装与配置

redis在django项目中用作于存储一些短信验证码、图形验证码和session信息
1:安装redis
2:启动redis
3:使用redis

yum install redis

service redis start

redis-cli

细心看错误信息

五、虚拟环境virtualenvwrapper

1:使用pip3安装虚拟环境工具virtualenvwrapper(这里的pip3在二-8中设置了软链接)

pip3 install virtualenvwrapper

2:编辑root用户下(~表示root)的.bashrc文件(一种shell的配置文件)

vim ~/.bashrc

export [-fnp][变量名称]=[变量设置值] 命令是用于设置环境变量的
source filename 命令会执行filename文件中的代码,通常用于该修改完的初始化文档

在.bashrc文件中添加下面3句:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

3:编辑完.bashrc文件后使用source执行.bashrc文件
4:在root目录下创建一个django-website目录(接下来将在此目录创建虚拟环境)
5:进入/root/django-website下使用虚拟环境命令mkvirtualenv去创建一个python3环境的名为website的虚拟环境
6:使用workon命令打开刚刚创建好的虚拟环境website
7:deactive可以关闭虚拟环境

source ~/.bashrc
mkdir /root/django-website
mkvirtualenv -p python3 website
workon website
deactivate

细心看错误信息

六、使用FileZilla将Django项目传输到centos中并试着运行Django项目

FileZilla是一种文件传输工具。
由于之前我的django项目是在windows的虚拟环境中运行的,所以传输的时候需要把windows中项目对应的虚拟环境中含有的库名映射到文件中,这里我是映射到requirements.txt文件中(pip freeze >requirements.txt)。
将django项目和对应的requirements.txt文件传输到centos系统后,进入到centos的虚拟环境中运行以下命令。

1、安装requirements.txt文件中指定的库

pip3 install -r requirements.txt

2、进入到django项目目录下,尝试着去运行Django项目,然后去windows的网址上输入Centos的公网ip加8000端口去访问该网站(阿里云的端口规则8000端口如果没开启需要去开启

python manage.py runserver 0.0.0.0:8000

细心看错误信息

七、uwsgi安装与配置

接下来还是处于虚拟环境中
1、安装uwsgi

pip3 install uwsgi

2、在项目目录下创建目录和文件conf/uwsgi/uwsgi.ini,然后通过vim uwsgi.ini编辑文件添加以下代码

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# 项目的路径(绝对路径),根据自己项目位置来写
chdir           = /root/django-website/Project

# 项目的wsgi文件
module          = Project.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 10

# the socket (use the full path to be safe)
# 这里的socket是用于连接nginx的,是与nginx对应的
socket          = 127.0.0.1:8001

# clear environment on exit(这一句其实不是很懂,不过也没关系)
vacuum          = true

# 虚拟环境目录 (绝对路径)
virtualenv = /root/.virtualenvs/website

3、试着使用uwsgi运行项目,在windows中通过ip:8000方式访问

uwsgi --http :8000 --module Project.wsgi

细心看错误信息

八、Nginx安装与配置

1、安装nginx并启动

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx

2、在项目目录下创建目录和文件conf/nginx/uc_nginx.conf并添加以下代码

# configuration of the server
server {
# the port your site will be served on
listen      80;
# the domain name it will serve for
server_name 39.108.91.173;     # 阿里云centos服务器公网IP
charset     utf-8;

# max upload size
client_max_body_size 75M;   # adjust to taste

# Django media
location /media  {
    alias /root/django-website/Project/media;  # 指向django的media目录
}

location /static {
    alias /root/django-website/Project/static; # 指向django的static目录
}

# Finally, send all non-media requests to the Django server.
location / {
    uwsgi_pass  127.0.0.1:8001;  # 对应着uwsgi配置文件的socket
    include     uwsgi_params; # the uwsgi_params file you installed
}
}

3、为uc_nginx.conf文件建立软链接,因为nginx服务的配置(uc_nginx.conf)文件原本是存放在/etc/nginx目录中的

sudo ln -s  /root/django-website/Project/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/

4、为了使用nginx服务启动django项目,需要修改django项目的settings.py文件,添加STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

5、把静态文件收集到STATIC_ROOT指定的目录中

python manage.py collectstatic

6、结合nginx和uwsgi去运行django项目(&表示后台运行)

uwsgi -i /root/django-website/Project/conf/uwsgi.ini &

细心看错误信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值