centos环境依赖安装+django-oracle-postgresql-redis

CENTOS :     linux下安装某些软件  如果的当前用户是root,则有可能后面访问这些文件会存在权限问题,所以推荐要以普通用户安装这些软件。没有权限加上sudo就行。用chown 可以修改所有用户/组,最好不要以root用户安装软件,打开防火墙 有的端口不能访问。所以有时候得关闭防火墙或者打开某些端口

查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service

python-django虚拟环境:
每个项目都有自己单独的环境,所以都得创建一个env
在当前目录创建了.virtualenv的虚拟环境,之后所有项目的env都可以放在这个文件夹下面。
编辑.bashrc时候要指定virtualenv和virtualenvwrapper两个路径,不指定就会使用默认的路径。
我这里virtualenv和virtualenvwrapper都在/usr/local/python3/bin/路径下面
mkvirtualenv -p python3 venvname 利用python3创建虚拟环境


find / -name a* 查找根目录a开头的文件
linux的的默认环境变量/usr/bin/下   
创建python软连接 第一个是python3安装路径    系统默认的python2.7的软连接也是/usr/bin/python
ln -s /usr/local/python3/bin/python3  /usr/bin/python    这样就覆盖了python2.7的软连接    不推荐这样做
pip 和 python 添加软连接之后有时候会显示bash: /usr/bin/pip3: No such file or directory
默认会去环境变量路径找   这时候hash r清除一下缓存就好了
依赖装完才能一次性安装完成python   包括pip3
如果没有安装成功pip3 可以重新装完依赖之后重新编译python重新装   不用卸载

装虚拟环境时候 virtualenvwrapper.sh 中可能需要把python 改成 python3

https://zhuanlan.zhihu.com/p/133400883     详细记录virtualenvwrapper.sh和virtualenv关系


oracle数据库和django运行需要依赖条件

大概安装这个(版本自己看)  yum install oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm

在.bash_profile中配置
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH

centos7 安装postgresql   用sudo 替代命令  不要以root用户安装
安装完之后配置两个文件   /var/lib/pgsql/版本号/data/postgresql.conf和pg_hba.conf
listen_addresses = '*'   打开注释  改为*
port=5432    打开注释

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    all             all             0.0.0.0/0               md5
django连接时候不能填localhost    要填 IPv4    暂时虚拟机不能连window的postgresql

安装nginx:下载 tar.gz解压之后安装。yum安装nginx.conf有差异。
解决403forbidden   nginx.conf首行添加 user root root
像xxx.com这些域名要申请。基本都是付费。有域名nginx就可以配置了。这时候是http请求。
再去申请个证书,有免费的有付费的。再经过nginx配置。就是https请求了。

正向代理:某人向马云借钱,不借,某人的同学刚好认识马云,于是让他的同学向马云借钱,然后再借给某人。OK
反向代理:某人打10086,总部10086没空,于是随便分发深圳部接听服务。OK。
反向代理跟负载均衡相辅相成,总部分发给下面的部门的时候,怎么分,如何分,这就到了负载均衡。

window远程linux工具
Xshell远程连接linux以sftp方式连接   命令行输入help就有很多命令,包括上传和下载文件

MobaXterm远程连接SSH连接和SFTP方式连接。

Redis:centos环境安装教程:https://zhuanlan.zhihu.com/p/34527270
windows下安装redis需要开启redis代码才能访问。当前打开是开启一个cmd窗口,不方便。
这里安装为windows服务。redis-server.exe --service-install redis.windows.conf
然后使用下面命名即可开启停止redis服务。使用界面版的redis还得另外安装
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
重命名服务:redis-server --service-name name

1. 实现如果用户登录连续三次都输错密码。则锁5分钟之后才能再次输入密码登录。如果再次输错。则继续锁10分钟.....django实现此小实例

# redis每次请求浏览后有缓存,下次访问的时候先从redis里面取,然后再从数据库里面取。
# 但是即使数据改了也不会更新,需要手动更新。所以选择合适的场景使用很重要。
# 6379/1, 1是redis的数据库序号,redis默认允许16个数据库,redis不设置数据库序号默认使用的是0。
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            # 连接池数量,如果decode_responses不设置为True的话,使用get_redis_connection读取的数据是bytes,需要decode为utf-8
            "CONNECTION_POOL_KWARGS": {"max_connections": 100, "decode_responses": True},
            # "PASSWORD": "123456",
        }
    }
}

class UserLoginView(APIView):
    # 不需要登录认证和权限认证
    authentication_classes = []
    permission_classes = []

    @staticmethod
    def post(request):
        username = request.data.get('username')
        password = request.data.get('password')
        # __iexact忽略大小写,__exact精确=  都类似like语句
        user = User.objects.filter(username__exact=username, is_active=True).first()
        if not user:
            return Response({"code": 0, "value": "username not exist", "token": ""})
        redis = get_redis_connection()
        if redis.get(username):
            # 锁定之后重新解锁再输入密码只有一次机会
            redis.setex("%s_login_times" % username, EXPIRE_TIME * 5, 3)
            return Response({"code": 0, "value": "Your account has been locked. Please try again later!", "token": ""})
        if user.check_password(password) or user.password == password:
            # 更新登录时间
            user.last_login = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            user.save()
            if redis.get(username):
                redis.delete(username)
            if redis.get("%s_login_times" % username):
                redis.delete("%s_login_times" % username)
            token = api_settings.JWT_ENCODE_HANDLER(api_settings.JWT_PAYLOAD_HANDLER(user))
            return Response({'code': 1, 'value': user.username, "token": token})
        else:
            if redis.get("%s_login_times" % username) and int(redis.get("%s_login_times" % username)) >= 3:
                redis.setex(username, EXPIRE_TIME, "true")
            elif redis.get("%s_login_times" % username):
                redis.setex("%s_login_times" % username, EXPIRE_TIME, int(redis.get("%s_login_times" % username))+1)
            else:
                redis.setex("%s_login_times" % username, EXPIRE_TIME, 1)
            return Response({"code": 0, "value": "password error", "token": ""})
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值