文章目录
思路:
一定要细心看错误信息
一定要细心看错误信息
一定要细心看错误信息
- 做每一步都需要大概知道为什么要这么做,这样在部署到后面时遇到错误想找原因就比较简单,不浪费时间
- 其实首先要理清思路,理清思路的话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 &
细心看错误信息