Django应用部署实战:从开发到生产,全程解析
部署架构图
版本说明
Centos 7.4
Python 3.6.4
Django 2.0.2
Channels 2.0.0
MySql 5.7
uWSGI
Nginx 1.12.2
部署前
1、更新系统环境
yum install epel-release
2、安装所有的开发工具包
yum groupinstall -y “Development tools”
一、安装python 3.6.4
1、下载
cd /usr/local/src
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
2、安装python依赖包
yum install zlib-devel 不安装编译会报错
yum install libffi-devel -y 新版本python3.7
yum install openssl-devel pip下载使用https协议的包时需要
安装sqlite
cd /usr/local/src
wget https://www.sqlite.org/2018/sqlite-autoconf-3250300.tar.gz
tar zxvf sqlite-autoconf-3250300.tar.gz
cd sqlite-autoconf-3250300
./configure
make && make install
3、解压
tar zxvf Python-3.6.4.tgz
cd Python-3.6.4
4、编译安装
./configure --prefix=/usr/local/python3.6.4
make && make install
5、链接python和pip
ln -s /usr/local/python3.6.4/bin/python3 /usr/bin/python3
ln -snf /usr/bin/python3 /usr/bin/python
ln -s /usr/local/python3.6.4/bin/pip3 /usr/bin/pip
查看朴python版本
python -V
查看pip版本
pip --version
6、yum配置文件依赖python,Python升级后就要修改配置文件
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
修改第一行#!/usr/bin/python 为 #!/usr/bin/python2
测试修改是否成功
yum -h
升级系统 yum update
7、检查其他需要修改的命令
sed -i “s#/usr/bin/python#/usr/bin/python2#g” grep /usr/bin/python -rl /usr/bin/*
grep -ai /usr/bin/python /usr/bin/*
列出文件列表后逐个修改(按照yum修改方法)
二、安装django2.0.2
1、安装
pip install django==2.0.2
2、安装成功后测试
链接
ln -s /usr/local/python3.6.4/bin/django-admin /usr/bin/django-admin
三、安装数据库
0、卸载mariadb(安装mysql前要卸载mariadb)
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
1、安装sqlite3(注意要在编译python之前安装)
yum install sqlite
yum install sqlite-devel
2、源码安装MySQL5.6.39(安装后问题较多)
1)下载
cd /usr/local/src
wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
2)解压
tar zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
修改目录名
mv mysql-5.6.39-linux-glibc2.12-x86_64 mysql
3)创建mysql用户
创建系统用户组,组id为300
groupadd -r -g 300 mysql
创建mysql用户,组id 为300,用户id为300
useradd -g 300 -r -u 300 mysql
修改mysql目录用户和用户组
chown -R mysql:mysql mysql
4)初始化
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
问题
解决yum -y install autoconf
5)设置开机启动
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig mysqld on
6)配置文件(如果服务器性能低,配置文件里内存大小就要修改)
cp support-files/my-default.cnf …/my.cnf
7)加入PATH路径(环境变量)
vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
export PATH
保存退出
source /etc/profile
开启服务systemctl start mysqld.service
8)输入mysql进入(超级终端不需要密码),给root用户设置密码
GRANT ALL PRIVILEGES ON . TO ‘root’@‘localhost’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
测试
mysql -uroot -p (回车后输入密码)
3、yum 安装MySQL
1)配置yum源
在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/
2)下载
cd /usr/local/src
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
3)安装
yum localinstall mysql57-community-release-el7-8.noarch.rpm
4)检查是否安装成功
yum repolist enabled | grep “mysql.-community.”
看到上图所示表示安装成功。
5)可以修改vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。改完之后的效果如下所示:
6)安装mysql
yum install mysql-community-server
7)启动MySQL服务
systemctl start mysqld
查看MySQL的启动状态
systemctl status mysqld
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since 五 2016-06-24 04:37:37 CST; 35min ago
Main PID: 2888 (mysqld)
CGroup: /system.slice/mysqld.service
└─2888 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
6月 24 04:37:36 localhost.localdomain systemd[1]: Starting MySQL Server…6月 24 04:37:37 localhost.localdomain systemd[1]: Started MySQL Server.
8)开机启动
ystemctl enable mysqldshell> systemctl daemon-reload
9)修改root本地登录密码
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
grep ‘temporary password’ /var/log/mysqld.log
mysql -uroot -p
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘MyNewPass4!’;
或者set password for ‘root’@‘localhost’=password(‘MyNewPass4!’);
注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:
10)通过msyql环境变量可以查看密码策略的相关信息:
show variables like ‘%password%’;
validate_password_policy:密码策略,默认为MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
上述参数是默认策略MEDIUM的密码检查规则。
共有以下几种密码策略:
策略 检查规则
0 or LOWLength
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
MySQL官网密码策略详细说明:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
11)修改密码策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
#选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off
重新启动mysql服务使配置生效:
systemctl restart mysqld
12)添加远程登录用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:
GRANT ALL PRIVILEGES ON . TO ‘yangxin’@‘%’ IDENTIFIED BY ‘Yangxin0917!’ WITH GRANT OPTION;
13)配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
[mysqld]character_set_server=utf8init_connect=‘SET NAMES utf8’
重新启动mysql服务,查看数据库默认编码如下所示:
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
[plain] view plain copy
1.mysql>use mysql;
2.mysql>update user set password=password(‘root’) where user=‘root’ and host=‘localhost’;
3.mysql>flush privileges;
设置远程主机登录,注意下面的your username 和 your password改成你需要设置的用户和密码
[plain] view plain copy
1.mysql>GRANT ALL PRIVILEGES ON . TO ‘your username’@‘%’ IDENTIFIED BY ‘your password’ WITH
2.GRANT OPTION;
14)出现下面情况:
1,linux libaio.so.1: cannot open shared object file: No such file or directory
缺少安装包libaio和libaio-devel.
命令行
yum install libaio*。自动安装这两个包
2,ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
1、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.
2、确定你的mysql.sock是不是在那个位置,
mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock
3、试试:service mysqld start
4、如果是权限问题,则先改变权限 #chown -R mysql:mysql /var/lib/mysql
alter user ‘root’@‘localhost’ identified by ‘1stDianpiao&&&’;
四、安装pyMySQL 和 mysqlclient
pip install PyMySQL
pip install mysqlclient
五、创建django项目
django-admin startproject mysite
创建app
cd mysite
django-admin startapp app
修改配置
vim mysite/init.py 添加下面代码(否则python3和mysql之间连接会报错)
import pymysql
pymysql.install_as_MySQLdb()
vim mysite/settings.py
在项目中创建media和collection_static目录
mkdir media; mkdir collection_static
执行python manage.py collectstatic命令时,STATIC_ROOT目录存放整个项目的静态文件(注意STATICFILES_DIRS也要配置,如果不配置就不会收集自定义的静态文件,执行完后要把该目录的属主属组都给nginx用户,即chown -R nginx:nginx collection_static)
进入mysql中创建数据库
create database mysite character set utf8;
然后执行
python manage.py makemigrations 为这些修改创建迁移文件,给应用生成迁移脚本
python manage.py migrate 同步修改过的数据库
启动项目
python manage.py runserver
打开浏览器测试
六、安装uwsgi
- 安装pip install uwsgi
- 链接ln -s /usr/local/python3.6.4/bin/uwsgi /usr/bin/uwsgi
- 启动服务 uwsgi --http :80 --chdir /root/mysite/ -w mysite.wsgi(mysite.wsgi前缀必须和项目名相同)
- 查看启动进程lsof :80 查看占用80端口的进程,可以用kill -9 PID杀掉进程
- 打开浏览器输入本机IP就能访问
- uwsgi 配置文件
mkdir -p /etc/uwsgi/
vim /etc/uwsgi/mysite.ini
[uwsgi]
chdir = /root/mysite #项目目录
socket = /run/mysite.sock #socekt文件,要和nginx配置的相同
wsgi-file = /root/mysite/mysite/wsgi.py #django项目中wsgi文件
module = mysite.wsgi:applcation
master = true #允许主线程存在
processes = 2 #开启进程的数量
threads = 4 #开启线程的数量
daemonize = /var/log/mysite/uwsgi.log #日志文件
vacuum = true #当服务器退出的时候自动清理环境
保存退出
创建日志目录
mkdir -p /var/log/mysite
七、源码安装nginx(或直接用yum安装)
uwsgi处理动态请求,nginx处理静态请求
1、下载
cd /usr/local/src
wget http://nginx.org/download/nginx-1.16.0.tar.gz
2、安装依赖包
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
zlib:Nginx提供gzip模块,需要zlib库支持。
openssl:Nginx提供SSL功能
pcre:支持地址重写rewrite功能
安装编译工具
yum -y install gcc gcc-c++ autoconf automake
3、创建用户
groupadd -r -g 500 nginx
useradd -g 500 -r -u 500 nginx
4、解压安装
tar zxvf nginx-1.13.8.tar.gz
cd nginx-1.13.8
./configure –help 查看配置信息
生成配置文件
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/usr/local/nginx/log/error.log --pid-path=/usr/local/nginx/nginx.pid --lock-path=/usr/local/nginx/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module
make && make install
给目录授权
chown -R nginx:nginx nginx/
测试 /usr/local/nginx/sbin/nginx 如果没报错就说明服务已经启动
链接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
5、修改配置文件
vim /usr/local/nginx/nginx.conf
在http模块中加入include /usr/local/nginx/conf.d/*.conf;(一定要加在server前面,否则nginx会按默认配置显示)
创建配置文件目录
mkdir -p /usr/local/nginx/conf.d/
cd /usr/local/nginx/conf.d/
vim mysite.conf
添加下面内容
upstream mysite{server unix:///run/mysite.sock; #socket文件要uwsgi配置相同
}
server {listen 80;server_name 127.0.0.1;charset UTF-8;error_log /var/log/mysite/nginx_error.log;access_log /var/log/mysite/nginx_access.log;client_max_body_size 75M;location /media {alias /root/mysite/media;}location /static {alias /root/mysite/collection_static;}location / {uwsgi_pass mysite;include /usr/local/nginx/uwsgi_params;}
}
保存退出
给项目目录修改属主属组(包含)
chown -R nginx:nginx /root/mysite
创建日志目录
mkdir -p /var/log/mysite
测试配置文件正确性
nginx -t
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful 说明成功
启动服务
nginx
打开浏览器访问测试
关闭服务
nginx -s stop
修改配置后重新读配置文件
nginx -s reload
配置完成后启动服务
uwsgi --init /etc/uwsgi/mysite.ini
nginx -s reload
八、配置iptables(centos7以前版本)
1、开启ssh端口(如果是远程配置,一定要先配置运行ssh访问)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
2、开启80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
3、允许ping
iptables -A INPUT -p icmp -j ACCEPT
#如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT
4、最后配置拒绝所有进入
iptables -P INPUT DROP 拒绝所有进
iptables -P OUTPUT ACCEPT 开放所有出
iptables -P FORWARD DROP 拒绝所有转发
5、查看详细信息
iptables -L -n
6、查找所有规则
iptables -L INPUT --line-numbers
7、删除一条规则
iptables -D INPUT 11 (注意,这个11是行号,是iptables -L INPUT --line-numbers 所打印出来的行号)
8、重启
service iptables restart
九、配置firewall
1、查看版本firewall-cmd --version
报错
解决
vim /usr/bin/firewall-cmd
vim /usr/bin/firewall-offline-cmd
vim /usr/sbin/firewalld
修改第一行#!/usr/bin/python -Es 为 #!/usr/bin/python2 -Es 保存退出
2、启动服务
systemctl start firewalld.service
systemctl status firewalld.service #查看状态
3、查询
SSH协议是否被允许(yes/no)
firewall-cmd --zone=public --query-service=ssh
查询开启那些端口
firewall-cmd --zone=public --list-ports
查看区域所有信息
firewall-cmd --zone=public --list-all
4、添加规则
添加http协议
firewall-cmd --permanent --zone=public --add-service=http
添加https协议
firewall-cmd --permanent --zone=public --add-service=https
添加ssh协议
firewall-cmd --permanent --zone=public --add-service=ssh
添加8080端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
5、删除规则
删除http协议
firewall-cmd --permanent --zone=public --remove-service=http
每次添加删除规则后要重新加载
firewall-cmd --reload
6、重启服务
systemctl restart firewalld
十、安装redis
1、下载
cd /usr/local/src
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2、编译安装
cd redis-4.0.8
make && make install
3、配置
mkdir -p /etc/redis
cp /usr/local/src/redis-4.0.8/redis.conf /etc/redis
#redis以守护进程的方式运行
#no表示不以守护进程的方式运行(会占用一个终端)
vim /etc/redis/redis.conf
daemonize yes
4、启动服务
/usr/local/bin/redis-server /etc/redis/redis.conf
查看启动
ps -aux | grep redis
5、客户端
redis-cli
set name diaopiao
get name
“dianpiao”
6、开机自启动
#开机启动要配置在 rc.local 中,而 /etc/profile 文件,要有用户登录了,才会被执行。
echo “/usr/local/bin/redis-server /etc/redis/redis.conf &” >> /etc/rc.local
十一、Django配置redis
1、安装redis
pip install redis
pip install django-redis
2、修改django配置
vim /root/mysite/mysite/settings.py
增加下面配置
CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': '127.0.0.1:6379',"OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",},},
}
十二、安装django Channels
1、安装
pip install -U Channels2.0.0
pip install channels-redis2.0.2
2、在django配置文件中添加
vim /root/mysite/mysite/settings.py
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','channels', # 添加插件
]CHANNEL_LAYERS = {"default": {"BACKEND": "asgi_redis.RedisChannelLayer","CONFIG": {"hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],},"ROUTING": "chat.routing.channel_routing",},
}
补充
1)问题
ERRORS:
blog.Article.portal: (fields.E210) Cannot use ImageField because Pillow is not installed.
HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command “pip install Pillow”.
提示要安装Pillow,经查Pillow是python的一个图像处理库,下面进行安装
安装装Pillow
pip install --use-wheel Pillow #安装最新的Pillow
安装完成,再次运行发现问题解决。
2)uwsgi问题
需要不停的更新uwsgi --ini /etc/uwsgi/mysite.ini
uwsgi基本操作
启动uwsgi
uwsgi -x xxxx.xml #xml配置文件uwsgi -i xxxx.ini #ini配置文件
重启uwsgi
首选要找到uwsgi的主进程号,如果使用了pidfile记录进程号,则可以简单的找到master pid,如果未使用pidfile选项,则到日志中查看日志
spawned uWSGI master process (pid: 7486) #主进程号
spawned uWSGI worker 1 (pid: 7487, cores: 10)
spawned uWSGI worker 2 (pid: 7488, cores: 10)
然后使用-HUP或-TERM
kill -HUP pid #友好重启,不会丢失会话kill -TERM pid #强制重启,可能丢失会话
结束uwsgi
同重启uwsgi,需要先得到uwsgi的主进程号,然后使用
kill -INT pid
使用killall
在没使用pidfile参数记录uwsgi主进程号的情况下,如果服务器上只有一个uwsgi实例,可以使用killall命令控制uwsgi
killall -HUP uwsgi #所有的uwsgi实例都重启
killall -INT uwsgi #关闭所有uwsgi实例
3)最后修改django配置文件
使用DEBUG = False,进入settings.py
将DEBUG = True 改为 DEBUG = False
在下面这句里添加’‘后保存
ALLOWED_HOSTS = [’']
为模板添加路径
给settings.py里添加如下代码,并修改’DIR’后面的值
TEMPLATE_PATH = os.path.join(BASE_DIR, ‘templates’)
最终我们的网站结构应该是这样的
1、创建不了数据表migrate
设置git
1、在家目录下输入ls -a 查看有没有.ssh目录
2、如果没有输入下面命令,然后默认回车。就会生产.ssh目录
3、进去.ssh,生成一对密钥id_rsa是私钥,id_rsa.pub是公钥,打开公钥讲里面的字符复制
4、打开git网页,ssh公钥配置,标题自定义,讲复制的公钥粘贴进去,确定
5、完了之后克隆,第一次需要确认,后面都不需要密码直接更新
相关文章:
Django应用部署实战:从开发到生产,全程解析
部署架构图 版本说明 Centos 7.4 Python 3.6.4 Django 2.0.2 Channels 2.0.0 MySql 5.7 uWSGI Nginx 1.12.2 部署前 1、更新系统环境 yum install epel-release 2、安装所有的开发工具包 yum groupinstall -y “Development tools” 一、安装python 3.6.4 1、下载 cd /usr/…...
群晖NAS如何在内网部署HTTPS服务让浏览器信任证书
前言 最近在折腾内部部署Web服务。通过Vue实现一个H5的内部的管理服务。但在实际部署过程中由于种种原因,必须部署成Https服务。但在部署成Https服务后,由于没有HTTPS证书,每次进入页面都会被浏览器拦截。使用起来非常不便。于是开始各种Goo…...
crAPI靶场学习记录
靶场搭建 [靶场下载地址](我fork了一份) docker安装,笔者是用的wsldocker. [lab0:**初始账户 **] 注册一个账户,邮箱为[APIqq.com],密码为Admin123 登陆后访问对应IP的8025端口,接收邮件获取车辆信息。 [lab1:**访问其它用户车…...
知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用
大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用。使用基于py2neo的ICD-11疾病分类知识图谱,我们能够像探索一座生物医学宇宙般,穿梭在各种疾病之间。这个神奇的图谱可以帮助我们揭示各种疾病之间复杂而…...
20.Xaml GroupBox控件 ---->带标题的内容控件
1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…...
基于CycleGAN的山水风格画迁移
基于CycleGAN的山水风格画迁移 1、简介 1.1 研究背景及意义 绘画是人类重要的一种艺术形式,其中中国的山水画源远流长,具有丰富的美学内涵,沉淀着中国人的情思。游山玩水的大陆文化意识,以山为德、水为性的内在修为意识&#x…...
@Cacheable 注解
1. 功能说明 Cacheable 注解在方法上,表示该方法的返回结果是可以缓存的。也就是说,该方法的返回结果会放在缓存中,以便于以后使用相同的参数调用该方法时,会返回缓存中的值,而不会实际执行该方法。 注意,这…...
vue3+ts项目打包后的本地访问
注意:打包之后不可直接点击html访问,需要给项目安装本地服务! 1、安装servenpm i -g serve 2、打包项目npm run build 生成dist文件夹 3、本地访问serve dist 运行service dist之后的控制台 可复制下方的地址运行打包后的项目,运行…...
探索程序员需要掌握的算法?
文章目录 一:引言二:常见算法介绍三:重点算法总结 🎉欢迎来到数据结构学习专栏~探索程序员需要掌握的算法? ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列文章…...
性能测试 —— Jmeter定时器
固定定时器 如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间 1、使用固定定时器位置在http请求中…...
mp4视频太大怎么压缩?几种常见压缩方法
mp4视频太大怎么压缩?科技的飞速发展使得视频成为人们生活中不可或缺的一部分。然而,随着视频质量的不断提高,视频文件的大小也与日俱增,给我们的存储和传输带来了巨大的挑战和困扰。特别是MP4格式的视频,由于其出色的…...
论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像
🦉 AI新闻 🚀 论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例 摘要:一篇物理论文复制了ChatGPT按钮内容,经过两个月同行评审并在杂志上发表。这一现象被知名打假人发现后,发表商决定撤回该论文。此外…...
Python自动化测试 史上最全的进阶教程
Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 随着时代的变革,也许在未来测试这个职位的需求会越来越少甚至消失,但是每一个组织,每一个客户对软件质量的要求是永远不…...
centos pip失效
在 CentOS 上安装和配置 pip3 可能需要以下步骤: 确保 Python 3 已正确安装:请确保您已经正确地安装了 Python 3。在 CentOS 上,Python 3 可能默认安装在 /usr/bin/python3 路径下。您可以通过运行以下命令来验证 Python 3 是否正确安装&…...
Java——》ThreadLocal
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
如何做好利益相关方的期望管理?
利益相关方对项目而言非常重要,有效管理利益相关方的期望可以帮助项目团队更好地满足利益相关方的需求,助于建立良好的合作伙伴关系,提高项目的可持续性和成功率。 如果项目团队无法满足利益相关方的需求,可能会引发冲突、争议或其…...
【K8S系列】深入解析k8s网络插件—Canal
序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 在现代容器化应用程序的世界中…...
从单页面应用角度去解决不跳转页面,也能更改浏览器url地址
正常来说不刷新页面,也能更改浏览器url地址的方法有很多,我们在网上搜的话可以看到有pushState、replaceState、popstate等方法,那还有没有其他方法呢? 答案是有的! 最近做一个vue商城项目的时候,用户点击支…...
Linux:keepalived + ipvsadm
介绍 Linux:keepalived 双热备份(基础备份web)_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/132815057?spm1001.2014.3001.5501 环境 一台 centos7 keepalived ipvsadm (主…...
Linux基础命令(示例代码 + 解释)
查看目录下文件 ls [-a -l -h] [路径] -a(全部) -l(细节) -h(大小) ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…...
巨人互动|Google企业户Google“自动采纳建议”应该如何使用
在数字化时代,Google已经成为了人们获取信息的主要渠道之一。而在使用Google搜索时,你可能会发现下拉框中自动提供的搜索建议。这些搜索建议是基于用户搜索行为和相关数据进行推测,旨在使用户更快速地找到所需信息。而Google还提供了一项名为…...
元宇宙全球市场规模到2030年将达9805亿美元!
元宇宙是一种新兴的概念,它指的是一个虚拟的世界,由人工智能、虚拟现实、区块链等技术构建而成。元宇宙的起源可以追溯到上世纪90年代的虚拟世界“第二人生”,但直到近年来,随着技术的不断发展,它才逐渐成为了人们关注…...
《向量数据库指南》——向量数据库内核面临的技术挑战及应对措施
最近一年,以 ChatGPT、LLaMA 为代表的大语言模型的兴起,将向量数据库的发展推向了新的高度。 向量数据库是一种在机器学习和人工智能领域日益流行的新型数据库,它能够帮助支持基于神经网络而不是关键字的新型搜索引擎。向量数据库不同于传统的…...
API对接中需要注意的事项
API对接是一个复杂的过程,需要对接双方准确地理解和遵循一系列步骤。以下是一些在API对接中需要注意的事项,以及每个步骤的详细解释和可能遇到的问题。 一、API定义和规划 明确API需求:在开始对接前,必须明确API的具体需求和使用场…...
linux 6中4T磁盘识别并分区格式化
存储端划分4T的LUN后,主机端操作如下 1、主机识别,本例中hba卡的端口是host11和host12 [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host11/scan [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host12/scan …...
WebServer 解析HTTP 响应报文
一、基础API部分,介绍stat、mmap、iovec、writev、va_list 1.1 stat 作用:获取文件信息 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>// 获取文件属性,存储在statbuf中 int stat(const char *…...
开利网络参与“大湾区独角兽创投大赛”进行蚓链数字生态项目路演
9月10日,广州市开利网络科技有限公司受邀参与位于广州国际医药港的“大湾区独角兽创投大赛”,进行“蚓链——企业数字化生态”项目的初赛路演。“大湾区独角兽创投大赛”是由中国企业新闻观察网指导,由中国商协会服务工作委员会、广东蚁米孵化…...
前端的8种跨域解决方案
在前端开发中,常见的跨域解决方案有以下8种: JSONP(JSON with Padding):利用<script>标签的跨域特性,通过动态创建<script>标签,请求一个带有回调函数的接口,服务器返回…...
Linux知识点 -- 网络编程套接字
Linux知识点 – 网络编程套接字 文章目录 Linux知识点 -- 网络编程套接字一、预备知识1.认识端口号2.套接字3.TCP协议与UDP协议4.网络字节序 二、socket编程接口1.socket常见API2.sockaddr结构 三、UDP套接字编程1.直接打印客户端信息2.执行客户端发来的指令3.多用户聊天4.在wi…...
逆向大漠插件/用VB6.0实现后台鼠标移动和后台鼠标左键点击
自动化设计软件,在一款做门的设计软件CypCut6.3 上实现了自动化勾选了 复选框。一切都是基于后台的。 Private Const GW_CHILD 5 Private Const GW_HWNDFIRST 0 Private Const GW_HWNDNEXT 2 Public Declare Function FindWindow Lib "user32" Alias &…...
wordpress静态页面找不到/百度贴吧官网
平时,我们制作SSRS Report的方法主要有两种:使用Query或RDP。如果需要为报表传递参数,就要在代码中为报表参数赋值,然后在代码中调用报表。下面我总结下这两种报表在代码中传参和调用的方式: 1、使用Query作为报表数据…...
找老外做网站可靠吗/cms建站系统
f{} Python3.6及以上版本才有,Python3.5及以下版本会出错。 %s%() 常用格式 {}.format() {}里面可以带数字也可以不带数字,带数字编号可以调换输出顺序,还可以带关键字。 device torch.device(fcuda:{opt.local_rank}) #python3.6 device …...
树莓派上怎么做网站/宝鸡seo优化公司
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759【项目5-银行系统】 这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了。 在学习中,总是想要些成就感的。当…...
商城网站布局/提交百度收录
java中的类和方法的修饰符Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和非访问控制符两大类。修饰符之间的先后排列次序对类的性质没有任何影响。一&…...
大连网龙建站优化推广/网络舆情监测系统软件
更多代码请见:https://github.com/xubo245 基因数据处理系列 1.解释 重新运行,跟换了文件地址 后来终端,需要运行其他的2.代码: hadoopMaster:~/disk2/xubo/project/alignment/sparkBWA$ vi sparkBWA.sh for j in 10000 10000…...
wordpress 后台 java/微信软文案例
最新BAT大厂面试者整理的Android面试题目! 近期根据网友分享大厂面试题目,今天我将网友面试的BAT等大厂Android面试题目整理出来,希望能够帮助大家! 一、Android基础 Android基础知识点比较多,看图。 建议阅读&…...