Django项目部署在服务器(配置Django+Mysql8.0+Python+Nginx+uWsgi)
项目 | 配置版本 |
---|---|
服务器 | 阿里云CentOS 7.6 |
数据库 | Mysql8.0 |
Python | 3.7.1 |
一、更新yum并设置自动更新
1、手动更新yum
yum update -y
2、安装自动更新的插件
yum install -y yum-cron
3、设置自动更新yum
vim /etc/yum/yum-cron.conf
找到 apply_updates = no 将no改为yes,然后保存
4、启动yum-cron和设置开机自动启动
systemctl start yum-cron
systemctl enable yum-cron
二、防火墙
1、安装启动防火墙
yum install -y firewalld
systemctl start firewalld
systemctl enable firewalld
2、开放80 端⼝
firewall-cmd --zone=public --add-port=80/tcp --permanent
3、重启防火墙
systemctl restart firewalld
三、安装mysql8.0
1、使用rpm 命令查找出要删除的mariadb文件
rpm -pa | grep mariadb
2、将mysql文件下载到Centos/usr/local/mysql文件夹下
cd /usr/local
mkdir mysql
cd mysql
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
3、安装 yum repo文件并更新 yum 缓存
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
4、更新 yum 命令
yum clean all
yum makecache
5、使用 yum安装mysql
yum install mysql-community-server
会出现GPG验证检查
解决办法:
yum -y install mysql-community-server --nogpgcheck
6、开启mysql 服务
systemctl start mysqld.service
7、获取初始密码登录mysql
cat /var/log/mysqld.log | grep password
8、使用初始密码并修改密码
mysql -u root -p #会提示输入密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ZHANGsan2!';#注意位数和种类至少大+写+小写+符号+数字
9、在防火墙中开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload # 重启防火墙
四、安装Python
1、安装环境依赖
yum install -y openssl-devel bzip2-devel expatdevel gdbm-devel readline-devel sqlite-devel zlib-devel libffi-devel MySQL-python mysql-devel
2、在主目录建一个文件夹放python安装包
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -zxvf Python-3.7.1.tgz # 解压
mkdir /usr/local/python3
3、进入解压的文件夹安装python3
cd ~/python3/Python-3.7.1
./configure --prefix=/usr/local/python3 # 修改安装路径
make
make install
ln -s /usr/local/python3/bin/python3 /usr/bin # 创建链接
python3 --version # 是否安装成功
ln -s /usr/local/python3/bin/pip3 /usr/bin # 创建pip3的链接
4、安装数据库插件问题
pip3 install mysqlclient # 安装数据库插件
安装失败
查找到 mysql_config配置文件,命令行输入:
find / -name mysql_config #没有任何回应,说明并没有查找到 mysql_config 配置文件,该问题为缺少mysql源所导致的
5、下载安装mysql配置源:
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm # 根据自己mysql版本下载相对应的mysql配置源
6、安装mysql-devel依赖包:
yum install mysql-devel --nogpgcheck
再次安装就成功了
五、安装 Django、Nginx 和 uWsgi
pip3 install Django
ln -s /usr/local/python3/bin/django-admin /usr/bin # 给 Django 创建链接
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin
yum install -y nginx # 安装 Nginx
六、设置 Django 项⽬
1、⾸先创建⼀个 Django 项⽬, cd /home 先进⼊ home ⽬录
2、使⽤ django-admin startproject mysite 创建⼀个项⽬, mysite 是项⽬名, 可以⾃⼰定义
3、接着 cd mysite/mysite 进⼊ mysite ⽬录下的 mysite ⽂件夹
4、找到 setting.py ⽂件打开并修改
5、如果需要的话, 关闭调试模式 Debug = False
6、允许的主机 Allow_host = [‘这⾥填写本机的 IP’, ‘localhost’]
7、移植静态⽂件, 在最末尾添加 STATIC_ROOT = os.path.join(BASE_DIR, ‘collected_static’)
第⼆个路径为移植后的路径, 然后继续添加 STATICFILES_DIRS = (os.path.join(BASE_DIR, ‘static’),)
8、如果需要的话, 继续在 settings.py 中设置模板和 MySQL 数据库
9、进⾏静态移植, 退出设置⽂件, 在项⽬⽬录下创建⼀个 static ⽂件夹, 在 /home 下创建⼀个 collected_static ⽂件夹. 然后运⾏ python3 manage.py collectstatic
测试代码:
urls.py
views.py
七、配置 uWsgi
1、在 mysite 项⽬下新建 uwsgi.ini ⽂件 (⽂件与 manage.py 同级) 填写
[uwsgi]
socket = 127.0.0.1:8000
chdir = /home/mysite
module = mysite.wsgi
master = true
processes = 1
threads = 2
max-requests = 2000
chmod-socket = 664
vacuum = true
stats = %(chdir)/uwsgi/uwsgi.status
pidfile = %(chdir)/uwsgi/uwsgi.pid
daemonize = %(chdir)/uwsgi/uwsgi.log
2、然后在当前路径下创建 uwsgi ⽂件夹
八、配置 Nginx
1、打开 vim /etc/nginx/nginx.conf 把 http{} 内部的 server{} 改为
server {
listen 80;
server_name localhost;
charset utf-8;
access_log off;
location / {
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
}
location /static {
alias /home/collected_static/;
}
}
2、以上没有的设置补充上去, 多余的设置都注释掉
3、注意, 在此配置⽂件中不管何处, ⼀旦出现以下配置都直接注释掉
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
九、启动项目
1、⾸先 systemctl start nginx 启动 Nginx
2、然后到项⽬路径下执⾏ uwsgi --ini uwsgi.ini
页面展示