Django环境部署_02

一、MySQL5.7安装

1、安装yum

在CentOS中默认安装有MariaDB,这个是MySQL的分支

如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令:

rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

然后再yum install -y mysql-server # yum安装,需要外网环境

2、启动MySQL服务
开启/关闭/重启MySQL

systemctl start/stop/restart mysql

查看MySQL的状态

systemctl status mysqld

3、使用MySQL

初次使用,需要找到root的密码:

grep "password" /var/log/mysqld.log

找到密码后,连接数据库 mysql -uroot -p密码

输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

 xxxxxxxxxx 遇到错误:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
 解决方案:
 1、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值
 2、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,输入设值语句 “ set global validate_password_length=6; ” 进行设值
 3、再重置密码ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
 4、查看 mysql 初始的密码策略,输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看
4、MySQL远程连接

到mysql库的user表中

  • update user set host='%' where user='root'; #添加可以远程访问的账号

  • flush privileges; #刷新权限,保证新添加的账号可用

  • 关闭linux的防火墙,保证3306可以访问

防止MySQL本地客户端数据乱码
/etc/my.cnf 中添加如下配置,即可
[client]
default-character-set=utf8
5、MySQL卸载
  • rpm -e mysql-server(需要完整的包名) 通过rpm -qa | grep mysql查找包名 #只需卸载主服务即可
  • rm -rf /var/lib/mysql #删除所有mysql的数据
6、MySQL密码找回

vi /etc/my.conf

[mysqld]
...
skip-grant-tables   //注意,建议在拆除网线的情况下添加  (而且添加配置后,需要重启mysqld服务)
[root@Server ~] mysql -uroot
mysql> use mysql;
mysql> update user set password=password('123') where host='localhost'; //修改密码
mysql> flush privileges;

然后将如上配置删除或注释

二、Python安装

1、安装依赖
  • yum -y install python-devel openssl-devel bzip2-devel zlib-devel expat-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel readline-devel gcc
  • yum -y groupinstall “Development tools”

如上两步,汇总安装了python生产环境的各种第三方依赖包

2、安装Python
  • 将python的tar包发送给linux (建议位置:/usr/local/)

  • 解压tar包:tar -zxvf Python-3.5.2.tgz

  • cd到解压目录中配置:./configure --prefix=/usr/local/python3 --enable-optimizations

    目的:检测环境中依赖是否完整,设置python的安装位置,
    同时生成一个编译文件,用于进行python编译:make

  • 在解压目录中:先 make 编译 然后 make install 安装

安装后的日志如下
....
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-8.1.1 setuptools-20.10.1

将python3 设置为系统默认python解释器

  • 将/usr/bin下的python文件改名 mv /usr/bin/python /usr/bin/python2.7.5

  • 将python3的执行文件链接到 /usr/bin/python

    ln -s /usr/local/python3/bin/python3 /usr/bin/python

设置环境变量:/etc/profile中添加配置

 xxxxxxxxxx 在文件末尾追加,不要改动文件的其他内容!!!!!!!
 export PATH=$PATH:/usr/local/python3/bin

注意,设置好后,为了让环境变量生效:source /etc/profile,然后 python3即可进入python3的环境

注意,此时系统自带的python2 依然是默认python解释器

  • 更新pip
    • pip3 install --upgrade pip

三、Django安装

  • 安装数据库驱动:pip install mysqlclient
  • pip install django=="2.0.6"

测试使用:

  • django-admin startproject testproj 在当前目录下创建一个project:“testproj”
  • cd到testproj目录下的testporj目录下settings.py 修改配置:ALLOWED_HOSTS = ["*"]
  • 启动django内置的web服务器。cd到testproj目录下,执行:python manage.py runserver 0.0.0.0:port
  • 在Windows的浏览器中访问:ip:port – ip为Linux系统的ip地址

四、uWSGI服务器

1、WSGI协议
  • 使用Django或Flask框架编写的Web应用程序,在python manage.py runserver 时都启动的是框架内置的服务器来运行Web应用程序,而内置的服务器遵循了WSGI协议(WSGI Server)。

  • WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。

    • WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;
    • WSGI application接收由server转发的request,处理请求,并将处理结果返回给server
  • 要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有BottleFlaskDjango

**总结:**WSGI是Web 服务器(uWSGI)与 Web 应用程序或应用框架(Django)之间的一种低级别的接口。

2、uWSGI服务器安装

WSGI协议下web服务器很多:django内置,uWSGI,gunicorn。

uWSGI服务器自己实现了基于wsgi协议的server部分,我们只需要在uwsgi的配置文件中指定application的地址,uWSGI就能直接和应用框架中的WSGI application通信。

服务器安装
  • 将uWSGI的tar包发送linux

  • 解压tar:tar -zxvf uwsgi-2.0.17.tar.gz

  • cd到解压目录下,编译:make

  • 为了可以更方便的执行 uwsgi 启动uWSGI服务器,定制链接:

    ln -s /usr/local/uwsgi-2.0.17/uwsgi /usr/bin/uwsgi

    则可以在任意目录下执行 uwsgi 去启动uWSGI服务器

  • 测试使用python的wsgi服务器-uWSGI

    • 在任意的一个目录中定义一个python脚本:hello.py

      def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html;charset=utf-8')])
          return [bytes('你好啊!!','utf-8'),b'Mr_lee']    # 基于wsgi协议规范实现的代码
    • 启动uWSGI服务器,并部署hello.py程序

      uwsgi --http 192.168.248.128:8001 --wsgi-file hello.py #注意hilo.py可以写成绝对路径

    • 浏览器访问:192.168.248.128:8001

3、uWSGI部署Django项目
1、设置mysql的引擎默认为:innodb

vi /etc/my.conf

在[mysqld]下添加配置
default-storage-engine=InnoDB
2、建议设置为严格模式

vi /etc/my.conf

在[mysqld]下添加配置
sql_mode=STRICT_TRANS_TABLES
查看mysql的配置参数
mysql> show variables where variable_name like '%mode%';
3、在数据库中建好项目需要的database:“ems”

使用Navicat创建即可,注意字符集为 utf8

4、在Django项目的settings.py中修改配置
DEBUG = False  #去掉开发模式          
ALLOWED_HOSTS = ["*"] #开放访问host
DATABASES = { #合适数据库参数
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ems',
        'USER': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
        'PASSWORD': '123456'
    }
}
5、发送项目到Linux并做移植

python manage.py makemigrations

python manage.py migrate

6、编写uWSGI的配置文件
#随意找一个目录,创建一个文件:config.ini -- 建议放在项目的根目录下
[uwsgi]
http = 192.168.134.128:9000 # uWSGI服务器的地址
#uWSGI和nginx通信的port
socket = 192.168.134.128:9001

chdir = /usr/local/django_projects/ems #项目所在目录
# Django's wsgi file
wsgi-file = ems/wsgi.py #基于项目目录的相对路径
# maximum number of worker processes
processes = 4
#thread numbers startched in each worker process
threads = 2
#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况
stats = 192.168.134.128:9002	
# clear environment on exit
vacuum = true
pidfile = /usr/local/django_projects/ems/uwsgi.pid #进程ID存放于此文件,位置可以自定义

daemonize = /usr/local/django_projects/ems/uwsgi.log #后台启动模式,日志文件记录位置自定义
#http://ip:port/static/...请求会进入该目录找资源,此处可以指向某个app下的static目录
#或是将所有静态文件汇总到项目的某一个目录下,然后配置在此是更好的选择
#汇集所有已安装app的静态资源到一个目录下,请参见后续内容
#http://ip:port/static/a/b/c/d.png   ==>  /usr/local/xxxx/static/a/b/c/d.png
static-map =/static=/usr/local/django_projects/ems/static  # 只在你写的static-map中找静态资源 

#static-map =/static=/root/dictory/ems/media	上传文件时从项目里面寻找
启动uWSGI服务器

uwsgi --ini config.ini

关闭uWSGI服务器

uwsgi --stop uwsgi.pid

  • 部署项目技巧:静态资源管理之汇总

  • 开发服务器 -> 查找静态资源 在app下或项目的根目录下找

  • 而uWSGI服务器有自己的查找静态资源的规则

  • 在project的settings.py中添加配置:STATIC_ROOT = os.path.join(BASE_DIR,'static')

    STATIC_ROOT指向project目录下的static目录

  • 执行汇总指令:python manage.py collectstatic

    会将所有已安装 APP下的静态资源 以及

    额外添加的静态目录 STATICFILES_DIRS 汇总到指定目录

  • 然后在uWSGI的配置文件中:static-map =/static=/usr/local/xxx/xxx ==>指定目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值