阿里云服务器搭建Django环境二:django+mysql环境搭建

1 安装django:(/user/bin目录下,pip)

直接进入root用户(~),pip install django(指定版本:django==XXX)
(非虚拟环境安装,没有在virtualenv,默认安装在公共的python解释器下)
Successfully installed asgiref-3.3.4 django-3.2.4 sqlparse-0.4.1 typing-extensions-3.10.0.0

2 安装virtualenv
(虚拟环境安装)
在开发过程中有时需要python2.7,有时需要python3.5,且需要很多相同但是不同版本依赖包,可以使用虚拟环境virtualenv进行管理

pip install virtualenv

Successfully installed appdirs-1.4.4 distlib-0.3.2 filelock-3.0.12 importlib-metadata-4.5.0 importlib-resources-5.1.4 virtualenv-20.4.7 zipp-3.4.1

2.1 直接使用virtualenv

在root用户下输入:virtualenv --no-site-packages venv,会报错virtualenv: error: unrecognized arguments: --no-site-packages,因为默认安装的高版本virtualenv默认–no-site-packages了
参数–no-site-packages作用:已经安装到系统Python环境中的所有第三方包都不会复制过来,是干净的python环境

输入:virtualenv my_django
输出如下:
creator CPython3Posix(dest=/root/my_django, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
added seed packages: pip== 21.1.2, setuptools== 57.0.0, wheel==0.36.2
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

然后查看:ls -l
drwxr-xr-x 5 root root 4096 Jun 16 15:43 my_django

source my_django/bin/activate,可以看到目录前缀加上了(my_django),也就是我们平时新建1个python项目时,自动新建的venv虚拟环境


然后就像平时在pycharm上的terminal终端安装三方库一样了
pip install django(此时安装django就是在当前这个虚拟环境中安装了)
退出当前的venv环境,使用deactivate命令
此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行

还是在(my_django)环境下:
执行:find -name django
输出:
./my_django/lib/python3.6/site-packages/django
./my_django/lib/python3.6/site-packages/django/forms/templates/django
./my_django/lib/python3.6/site-packages/django/forms/jinja2/django

如果进入根目录(/),执行:find -name django
./root/my_django/lib/python3.6/site-packages/django
./root/my_django/lib/python3.6/site-packages/django/forms/templates/django
./root/my_django/lib/python3.6/site-packages/django/forms/jinja2/django
./usr/share/doc/python3-jinja2/examples/rwbench/django
./usr/local/lib/python3.6/site-packages/django
./usr/local/lib/python3.6/site-packages/django/forms/templates/django
./usr/local/lib/python3.6/site-packages/django/forms/jinja2/django
可见,我们在非虚拟环境下安装django,会放在/usr/local/lib/python3.6/site-packages/中,而root用户在虚拟环境下安装的django,就在/root/my_django/lib/python3.6/site-packages/中

小结:virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

3 安装mysql

3.1 首先检查有没有安装mysql(-i 不区分大小写):

没有安装(注意:查看阿里云服务器linux版本:lsb_release -a)
在https://dev.mysql.com/downloads/repo/yum/,下载mysql


将下载的mysql安装包rz上传到阿里云:

rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。

常用命令:

-ivh:安装显示安装进度–install–verbose–hash

-Uvh:升级软件包–Update;

-qpl:列出RPM软件包内的文件信息[Query Package list];

-qpi:列出RPM软件包的描述信息[Query Package install package(s)];

-qf:查找指定文件属于哪个RPM软件包[Query File];

-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];

-e:删除包

rpm -q samba //查询程序是否安装

rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路径安装并显示进度

rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安装目录

rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm    //用来检查依赖关系;并不是真正的安装;

rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降级为旧版本

rpm -qa | grep httpd      #[搜索指定rpm包是否安装]–all搜索httpd

rpm -ql httpd         #[搜索rpm包]–list所有文件安装目录

rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]–query–package–install package信息

rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]–file

rpm -qpR file.rpm       #[查看包]依赖关系

rpm2cpio file.rpm |cpio -div #[抽出文件]

rpm -ivh file.rpm  #[安装新的rpm]–install–verbose–hash

rpm -ivh

rpm -Uvh file.rpm #[升级一个rpm]–upgrade

rpm -e file.rpm #[删除一个rpm包]–erase


将mysql装在my_mysql下,可以把mysql的rpm包放在my_mysql中,再安装:

先mv剪切到my_mysql中:


安装完,查看mysql:

然后安装mysql服务端:


启动mysql:


查看mysql的运行情况:


Mysql8.0默认安装之后root是有密码的。

修改mysql临时密码:

为了加强安全性,MySQL8.0为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码

grep ‘temporary password’ /var/log/mysqld.log(如果之前安装过MySQL则这里可能会有多个密码,用最后一个,注意这个密码输入时是可以粘贴的)。


使用该密码登录并修改密码:

复制粘贴密码后,直接enter即可:


在修改密码前,是不能执行sql操作的,需要先更改密码:(密码要足够复杂,否则会提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,密码设置可以含有大小写字母数字@~_!等等)

这是mysql的密码策略,修改密码后,可如下查看密码策略:

设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,
(可以看到,原本的策略是medium)
当前密码长度为 8 ,不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值

可如下设置,即可设置简单的密码
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;

mysql 密码策略相关参数:

1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

远程连接:
需要阿里云安全组开放3306端口
navicat配置好连接发现:

然后允许服务器上mysql远程连接权限:








授权操作:

grant all privileges on . to ‘root’@’%’ with grant option;

连接navicat出现错误:



plugin非mysql_native_password 则需要修改密码
但是尝试修改了密码(和以前一样),还是报错:1251

尝试修改用户认证规则(密码还是一样):

刷新权限:

重新连接,成功:


另外:sql查看mysql端口号

在navicat上连接阿里云数据库,新建数据库便于django连接:

修改本地的django项目的settings.py
把公网ip和域名地址都放入allowed_hosts

name是数据库名,host是阿里云服务器的公网ip

然后本地执行:

再执行:

执行前注意:各个django的app下的迁移文件需要删除,否则不会成功:(因为本地执行后,会生成migrations迁移文件,有了就不会执行迁移)


把以上文件删除,重新执行makemigrations

可以看到成功了,然后才执行migrate(执行完migrate才会在数据库中生成table)

然后f5刷新查看阿里云数据库:

将本地的django项目打包上传:


rz上传django项目压缩包,解压缩:




在执行前,先在阿里云上安全组配置8000端口:

找到实例也可以配置安全组:





8000端口成功添加,但是执行以下命令启动时,报错:



因为打包的django项目没有python解释器,默认执行的公共的python解释器(在/user/local/lib下,而公共环境的python解释器下缺少这些库),需要在当前项目下创建虚拟环境,在虚拟环境中执行该命令,使用虚拟环境下的python三方库(source bin/activate)




注意:安装完virtualenv,然后source bin/activate,pip install django,此时安装的django就在当前的虚拟环境下(就不再是公共的python环境了,可以随意安装该项目需要的三方库),然后执行django-admin startproject 项目名,路径就是上面的autoTest项目,和virtualenv的bin、lib目录同级

执行启动django项目命令前安装三方库环境


安装前可以更新pip,在xx_djo下:/root/xx_django/autotest_dja/xx_djo/bin/python -m pip install --upgrade pip





还需要安装uWSGI

uwsgi官方文档:
https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/WSGIquickstart.html#django

Python uWSGI 安装配置

如何部署简单的 WSGI 应用和常见的 Web 框架。
先安装uWSGI:



Nginx:静态处理自己处理,Nginx将非静态请求通过uwsgi转发给Django,由Django处理
对于uwsgi_params 文件,一般 yum 安装默认就有该文件了,直接配置 nginx.conf 即可 没有的话添加 uwsgi_params 保存下面的配置代码

可见uwsgi_params是直接存在的



阿里云服务器上有uwsgi_params文件,修改nginx.conf,在http下增加server:


比如:listen:8099,是前端请求的端口号(注意必须在阿里云安全组添加端口号8099才可以,如果安全组是添加8000,相应的listen需要修改为8000)

在 Django 项目根目录(manage.py 同级目录)新建文件 uwsgi.ini (也支持 xml 文件格式)


在pycharm中新建uwsgi.ini
uwsgi_pass 公网ip:8066需要和socket端口保持一致(uwsgi.ini)


配置项中以"#"开头的都是被注释的项目;
其他参数:
chdir 是你的项目根目录
module 是你的入口wsgi模块
socket 是通信IP和端口设置;
master=True 表示以主进程模式运行;
deamonize 是日志文件,会自动创建;
disable-logging = true 表示只记录错误信息,否则日志可能很快爆满

然后rz将该uwsgi.ini上传到manage.py所在的目录



回到上一目录,执行:source bin/activate(bin目录所在的路径)


要么执行:uwsgi uwsgi.ini
要么执行:uwsgi --ini uwsgi.ini(在uwsgi.ini目录下执行)

然后cd进入(也就是manage.py和uwsgi.ini的目录):

执行:

解决这个报错:
pip uninstall uwsgi
yum install -y pcre pcre-devel pcre-static
pip install uwsgi -I --no-cache-dir

重新执行,确实消失了,但是错误还有:

出现这个问题的原因是在uwsgi.ini中,应该使用内网ip,nginx配置中需要和该socket相同,所以nginx也要改为内网ip:

同样需要修改并保存nginx配置文件(uwsgi_pass:公网ip换成本机ip)

(注意:要让nginx的listen的端口号和uwsgi的端口号不一样,比如这里,listen改为8000后,我的uwsgi_pass就修改为127.0.0.1:8066,同样需要修改uwsgi.ini,端口不能冲突)

nginx -s reload

重新启动uwsgi,如果出现same address错误,直接杀死:

fuser -k 8066/tcp(uwsgi监听的端口)



注意:还可以重启下nginx:

pkill nginx,然后执行nginx命令,查看进程(查看nginx配置的几个端口号是否在监听中):

ps -ef|grep nginx


修改uwsgi的端口号是8066后(必须和nginx的listen端口不同),启动uwsgi,调用接口:

以上的页面,是djangorestframework的测试页面,因为没有配置静态文件,所以样式等文件全部报错404,要去掉可以在settings.py中添加以下配置:

这里我们直接源代码修改后打包上传

如果希望unrar上传代码后,覆盖解压:o+ 覆盖已存在文件
o- 不覆盖已存在文件(o+前面要加上-,表示参数,否则前面的x认为这是个0+.rar包)
unrar x -o+ autoTest.rar /root/xx_django/autotest_dja/xx_djo


然后重新执行:fuser -k 8066/tcp

然后执行uwsgi.ini(manage.py同级目录下):uwsgi uwsgi.ini(注意,这种方式运行uwsgi,一旦关闭xshell,uwsgi就会关闭,要在后台运行,需要加上-d,守护线程,就不会出现只在终端运行,关闭就请求接口失效的情况了)

修改配置如下:


但是这种情况会导致请求djangorestframework接口还是出现测试页面,最终修改参数如下:

再次执行:uwsgi -d --ini uwsgi.ini

然后关闭xshell,访问django接口就不会出现问题了,成功

postman:




注意

如果杀死uwsgi进程,访问会出现502

此时请求接口:

其它

添加并发和监控

默认情况下,uWSGI 启动一个单一的进程和一个单一的线程。

你可以用 --processes 选项添加更多的进程,或者使用 --threads 选项添加更多的线程 ,也可以两者同时使用。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
以上命令将会生成 4 个进程, 每个进程有 2 个线程。

如果你要执行监控任务,可以使用 stats 子系统,监控的数据格式是 JSON:

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

我们可以安装 uwsgitop(类似 Linux top 命令) 来查看监控数据:

pip install uwsgitop

结合 Web 服务器使用

我们可以将 uWSGI 和 Nginx Web 服务器结合使用,实现更高的并发性能。(如果只是uWSGI,比如本机搭建的测试django,自带的就是uWSGI,这时候它是服务器;如果是在服务器上搭建uWSGI+nginx,此时的uWSGI就是中间件,服务器是nginx)

一个常用的nginx配置如下:

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3031;
}
以上代码表示使用 nginx 接收的 Web 请求传递给端口为 3031 的 uWSGI 服务来处理。

现在,我们可以生成 uWSGI 来本地使用 uwsgi 协议:

uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

如果你的 Web 服务器使用 HTTP,那么你必须告诉 uWSGI 本地使用 http 协议 (这与会自己生成一个代理的–http不同):

uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

部署 Django
Django 是最常使用的 Python web 框架,假设 Django 项目位于 /home/foobar/myproject:

uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

–chdir 用于指定项目路径。

我们可以把以上的命令弄成一个 yourfile.ini 配置文件:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191

接下来你只需要执行以下命令即可:

uwsgi yourfile.ini

阿里云服务器搭建Django环境二:django+mysql环境搭建相关推荐

  1. 阿里云服务器ECS安装Ubuntu18.04桌面图形环境

    前言: 2020年冠状肺炎期间,[阿里云]为学生免费赠送了价值918元的ECS服务器.点击领取 2 vCPU 4 GiB 1 Mbps 6个月 一.远程连接Ubuntu(已完成可跳过) 目标如图: 1 ...

  2. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...

  3. 在阿里云服务器(Ubuntu系统)下使用WordPress搭建博客网站教程

    最近着手也搭建了一个自己的博客网站,在这里与大家分享一下搭建的过程和遇见的问题,希望对同学们有所帮助. 环境:阿里云服务器(Ubuntu系统) 提醒:申请阿里云服务器,可以到阿里云官网领取阿里云幸运券 ...

  4. node本地连接服务器的数据库_Linux本地连接阿里云服务器,以及下载node.js配置环境...

    1.远程登录 > ssh 用户名@ip输入密码进入 2. 文件远程传输 > scp 本机文件地址 用户名@ip:远程保存的路径 > scp ./index.html root@192 ...

  5. 阿里云服务器上单机部署大数据开发环境(hadoop2.6-cdh5.8.0系列)

    概述 之前在阿里云买的学生版服务器,闲着也是浪费,为了平常学习使用,决定在一台服务器上搭建一个伪分布式的开发环境.之前用三台虚拟机部署过集群,时间长了怕忘,现在升级各个版本重新部署,记下来方便以后查看 ...

  6. DNF60版本阿里云服务器+本地客服端教程①服务端搭建

    打开阿里云实例,更换操作系统 点击批量更换系统 在阿里云ECS界面添加安全组规则 用Mobaxterm 连接你的服务器ip,把下面两个文件上传到服务器里 放到根目录下面,之后运行 cd /; chmo ...

  7. 阿里云服务器ECS 第三篇:Oracle 数据库环境搭建

    < 第三篇:Oracle 数据库环境搭建 > 系统环境 :  windows server 2008 r2  Oracle11g Release 2 关于Oracle 11g: Oracl ...

  8. 阿里云服务器[教程3]一键安装php+mysql+ftp+nginx环境

    直接看地址 http://help.aliyun.com/manual?spm=0.0.0.0.F5PPZs&helpId=129 转载于:https://www.cnblogs.com/da ...

  9. 阿里云服务器CentOS7版本yum方式安装mysql

    首先推荐一个类似xshell的服务器管理软件FinalShell 下载地址:http://www.hostbuf.com/ 非常好用! 1.确保服务器系统处于最新状态 [root@centos7 ~] ...

  10. 使用阿里云服务器三分钟搭建网站教程(详细图文详解)

    使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择.Web环境.域名解 ...

最新文章

  1. vuejs滚动条_Vue.js 桌面端虚拟滚动条|vue美化滚动条VScroll
  2. jsp:请求转发和重定向
  3. 56.ISE综合,在chipscope信号列表看不到
  4. python3 scrapy 教程_Scrapy 教程
  5. BugKuCTF WEB 成绩单
  6. 牛客多校5 - Interval(主席树)
  7. BIM新时代背景下的建筑业技术变革
  8. Eclipse 隐藏已关闭的项目
  9. 19.docker attach
  10. 组合数学专项练习笔记
  11. Hadoop快速入门(一)
  12. ANSYS之翼型NACA4412流场计算系列:Profili、ICEM CFD、Fluent
  13. LeetCode-回文数C语言实现
  14. 古体字与简体字对照表_简体字和繁体字对照表
  15. 微信公众号吸粉软件助你快速增加粉丝数和文章阅读量!
  16. Unity 鼠标点击事件穿透
  17. python手机号替换_转--Python re模块 验证11位手机号
  18. RT3070L无线网卡移植
  19. PS中矢量形状图层的合并交叉等运算
  20. 【解决方案】LaTeX插入svg图片

热门文章

  1. [Delphi] Search path vs Library Path vs Browsing Path
  2. 外语系列:英语翻译学习笔记
  3. 逆元 阶乘逆元 数论 HDU 5651 xiaoxin juju needs help
  4. 高德地图API开发应用-----地图显示+定位+marker
  5. 海洋cms宝塔定时linux,海洋cms怎么设置宝塔自动采集教程
  6. Java课程寒假之开发记账本软件(网页版)之一
  7. 华硕无线路由打印机服务器,华硕RT-AC86U路由器怎么共享打印机
  8. 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
  9. 三款截图软件:Snipaste+FastStone-Capture+FireShot
  10. 665. Non-decreasing Array