首页
时间胶囊
壁纸
留言
统计
友链
Search
1
linux大作业(DHCP部署)
179 阅读
2
图
88 阅读
3
Python中os.mkdir()与os.makedirs()的区别及用法
82 阅读
4
英语插本笔记
70 阅读
5
C语言笔记
70 阅读
默认分类
网站搭建
学习笔记
Python
Django
opencv
机器学习
英语插本
数据结构插本笔记
物联网学习
mricropython
登录
Search
yao
累计撰写
25
篇文章
累计收到
15
条评论
首页
栏目
默认分类
网站搭建
学习笔记
Python
Django
opencv
机器学习
英语插本
数据结构插本笔记
物联网学习
mricropython
页面
时间胶囊
壁纸
留言
统计
友链
搜索到
4
篇与
的结果
2023-11-29
frp内网穿透服务器部署(linux服务端,windons客户端)教程
介绍 在当下ipv4资源紧张下,许多的家庭办理的宽带都不带赠送公网ip,这让我们的不能在外网访问我们家的电脑。我们可以通过内外穿透进行外围远程桌面,远程联机,搭建nas,博客等...frp 是什么?frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。为什么选择 frp?通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。代理组间的负载均衡。端口复用:多个服务可以通过同一个服务端端口暴露。P2P 通信:流量不必经过服务器中转,充分利用带宽资源。客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。搭建所需要的配置一个公网的服务器linux系统:作为我们的服务端,可以在阿里云上购买,现在阿里云新年大促,一年2核2g服务器只需要87起,学生0元起 点击进行购买windos电脑:作为我们的客户端部署文件下载在官网上选择适合自己的系统文件进行下载官网下载地址frps:部署在服务端的文件:这里选择linux64位的 点击进行下载frpc:部署在客户端的文件:这是选择window64位版本点击下载服务端(frps)搭建# 下载文件 wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz # 解压文件 tar -zxvf frp_0.52.3_linux_amd64.tar.gz # 进入解压目录 cd frp_0.52.3_linux_amd64 # 给frps文件权限 chomd 777 frps # 编辑配置文件 vi frps.toml编辑内容如下{card-default label="frps.toml" width=""}bindAddr = "0.0.0.0" bindPort = 7000 # 内网穿透端口 # 用户认证 auth.method = "token" #{可选}身份验证方式 auth.token = "123456" #token设置密码,用于通过身份验证创建连接 # 后台管理 webServer.addr = "0.0.0.0" webServer.port = 7500 # frps管理后台端口 webServer.user = "admin" # 登录名 webServer.password = "admin123" # 登录密码 {/card-default}编辑完成后保存,在当前目录下运行./frps -c ./frps.toml进行测试是否运行成功,在浏览器打卡你的公网ip地址:7500,如果管理后台访问成功就代表内外穿透成功了,如下这个页面:{message type="warning" content="注意:一定要在服务器上防火墙上放行设置的端口,如这里是7000和7500"/}配置systemd,让frps后台启动和开机自启# 安装systemd yum install systemd # 创建和编辑配置文件 $ sudo vim /etc/systemd/system/frps.service编辑文件内容如下:唯一需要修改的就是您的frps的安装路径,即刚刚下载的位置路径{card-default label="frps.service" width=""}[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target {/card-default}使用 systemd 命令管理 frps 服务# 启动frp sudo systemctl start frps # 设置开机自启 sudo systemctl enable frps 其他systemd管理命令# 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps自此,服务端就搭建完成了客户端(frpc)搭建 客户端搭建就比较容易,在下载frpc后进行解压,进入解压后的目录里面,编辑frpc.toml文件,内容如下:{card-default label="frpc.toml" width=""}serverAddr = "你的公网ip地址" serverPort = 7000 # 内网穿透端口 auth.token = "123456" # 服务端设置的token密码 [[proxies]] name = "app_name1" # 应用名,自定义 type = "tcp" # 连接方式:有http,https,UDP等 localIP = "127.0.0.1" # 本地连接地址 localPort = 8000 # 本地端口 remotePort = 8000 # 自定义的远程服务器端口 [[proxies]] name = "app_name2" type = "tcp" localIP = "127.0.0.1" localPort = 8080 remotePort = 8080 {/card-default}创建完成后保存,在这个文件的目录下打开终端,输入这个命令./frpc.exe -c ./frpc.toml运行,自此我们就可以在随时随地的访问我们本地电脑搭建的服务了{message type="warning" content="注意:一定要在服务器上防火墙上放行设置的端口,如这里是8000和8080"/}{anote icon="fa-download" href="https://gofrp.org/zh-cn/docs/" type="secondary" content="官网文档"/}
2023年11月29日
31 阅读
0 评论
0 点赞
2023-08-19
在linux上Nginx+Gunicorn+Supervisor部署django
# 介绍GunicornGunicorn 是一个 Python 的 WSGI HTTP 服务器。它所在的位置通常是在反向代理(如 Nginx)或者 负载均衡(如 AWS ELB)和一个 web 应用(比如 Django 或者 Flask)之间。它是一个移植自Ruby的Unicorn项目的pre-fork worker模型,即支持eventlet也支持greenlet。 如果对Flask框架还有不清楚的地方,可以查看本文一分钟学会Flask框架的安装与快速使用 Gunicorn启动项目之后一定会有一个主进程Master和一个或者多个工作进程。工作进程的数量可以指定。工作进程是实际处理请求的进程。主进程是维护服务器的运行。nginxNginx是一个高性能的HTTP和反向代理web服务器,所谓的方向代理即使将访问用户a地址,nginx将a地址指向了b地址,即使用户通过a地址访问b地址。supervisorSupervisor(Supervisor: A Process Control System)是用Python开发的一个client/server服务,,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。我们在shells上运行gunicorn时候或者其他,只要我们一退出shell,这个进程就会杀死。所以需要这个框架来守护我们运行的gunicorn.保证网站系统不被关闭。前期准备在搭建前我们需要准备项目所要的环境,首先在开始这前我们需要创建新的用户来搭建环境,因为使用root不安全,一般不使用root.# 添加用户 adduser 新用户名 # 为创建的新用户设置密码 passwd 新用户名 # 将新用户添加超级权限组 usermod -aG wheel 新用户名 # 切换新用户 su 新用户名 # 安装wget便于下载软件 sudo yum install -y wget在创建密码的时候输入密码不显示,将用户添加到wheel用户组下,wheel用户组为管理组,python环境搭建首先下载python包到我们新用户目录下的src文件下,这个目录需要我们先创建# 创建/home/新用户名/src目录 mkdir ~/src # 进入目录 cd ~/src # 下载python文件 wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz #安装可能需要的依赖 sudo yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel # 解压文件且进入目录 tar -zxvf Python-3.6.9.tgz cd Python-3.6.9 # 编辑配置文件--prefix是python的安装目录 ./configure --prefix=/usr/local/python3 make make install # 建立软连接,(Python与pip都建立软连接,分别为python3、pip3与系统自带的Python2区分)可以使用命令`ls -l /usr/bin/查看软连接是否已创建成功` ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 # 配置环境变量,打开配置文件,添加配置 vi ~/.bash_profile #添加以下配置信息(第一个是python安装路径) export PYTHON_HOME=/usr/local/python3 export PATH=$PYTHON_HOME/bin:$PATH #最后执行以下命令使配置生效 source ~/.bash_profile #可以使用以下命令查看配置是否成功,输出python安装路径即是成功 echo $PYTHON_HOME配置SFTP在将本地项目部署到云服务器的时候,我们需要将文件项目进行上传到云服务器,这里我选择简单的上传方式,采用软件FileZilla Client进行上传,也可以使用xFTP软件。以FileZilla Client这个软件为例,新建站点且配置参数协议选择sftp或者ftp主机为服务器地址,端口默认为sftp:22,ftp:21登录类型可以选择密码或者密钥文件用户为服务器用户名配置完成连接成功后可以直接将项目拉到服务器这里将项目拉到用户apps目录下,需要我们自己创建mkdir -p ~/apps创建虚拟环境但我们将项目上传的服务器部署是,我们需要配置虚拟环境,因为一个服务器不止一个项目,以免环境冲突。# 进入项目目录 cd ~/apps/djangoproject/ # 安装虚拟配置工具 pip3 install virtualenv # 创建虚拟环境,venv为虚拟环境名,在这下会创建同名的目录 virtualenv venv # 激活虚拟环境 source venv/bin/activate使用 Gunicorn进行生产环境的服务部署进入项目根目录下安装Gunicorn,这个安装在虚拟环境下的pipenv install gunicorn # 通过gunicorn运行django,这个可以不运行,因为我们推出shell后这杀死这个进程了 gunicorn blogproject.wsgi -w 2 -k gthread -b 127.0.0.1:8000启动 Nginx 服务器进行服务代理# 安装Nginx sudo yum install epel-release -y sudo yum install nginx -y # 启动Nginx服务: sudo systemctl start nginx{alert type="warning"}可能遇到的问题nginx启动成功后输入ip,无法访问默认的主页(80端口)。原因:云服务器未对外开启80端口{/alert}配置nginx的服务信息位于 /etc/nginx/nginx.conf 的nginx.conf文件是nginx服务器的配置信息,包括 Nginx 进程运行时的用户和组(分别为第一个和第二个参数)以及代理的虚拟服务的配置情况等。/etc/nginx/nginx.conf # 进程运行的用户和组,这里粗暴地设为root用户和组 user root root; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; ...... http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. # 其他服务器的配置文件的存放地址 include /etc/nginx/conf.d/*.conf; # 一个默认的服务器配置 server { listen 80 default_server; # 监听的端口 listen [::]:80 default_server; server_name _; # 服务域名/ip root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { # 访问路径 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ...... 配置 项目代理服务信息# 进入/etc/nginx/conf.d目录 cd /etc/nginx/conf.d # 新建myBlog.conf配置文件 vim myBlog.conf配置信息如下:server { charset utf-8; listen 80; server_name 139.196.xxx.xx; location /static { alias /home/wwb/apps/myDjango/blogproject/static; } location / { proxy_set_header Host $host; proxy_pass http://127.0.0.1:8000; } } {message type="success" content="监听80端口(访问ip时的默认端口),server_name为公网ip或域名,访问静态文件路径static_url时,nginx自动到static_root指定的路径下获取文件。访问其他路径时,将请求转发给本机的8000端口,那里运行的是Gunicorn 服务中的 django程序。"/}#重启nginx让配置生效 sudo systemctl restart nginx 使用Supervisor守护Gunicorn 进程当前的Gunicorn服务是我们手工启动的,一旦我们退出 shell,服务器就关闭了,博客无法访问。就算在后台启动 Gunicorn,万一哪天服务器崩溃重启了又得重新登录服务器去启动,非常麻烦。为此使用 Supervisor 来管理 Gunicorn 进程,这样当服务器重新启动或者 Gunicorn 进程意外崩溃后,Supervisor 会帮我们自动重启 Gunicorn。# 安装supervisor pip3 instal supervisor # 在用户目录下创建相关文件目录 cd ~/etc mkdir supervisor cd supervisor mkdir var mkdir log mkdir conf.d # 在~/etc目录下生成Supervisor的配置文件 echo_supervisord_conf > supervisord.conf{card-default label="目录说明" width=""}supervisor目录手动创建,其中var 目录下用于存放一些经常变动的文件,例如 socket 文件,pid 文件,log 下则存放日志文件。{/card-default}可将supervisord.conf文件内容全部替换为以下内容# [unix_http_server] 版块,设置file的值。 # 即让 socket 文件生成在 ~/etc/supervisor/var/ 目录下。注意 supervisor 不支持将 ~ 展开为用户 home 目录,所以要用绝对路径指定。 [unix_http_server] file=/home/新用户名/etc/supervisor/var/supervisor.sock ; the path to the socket file # [supervisord] 板块下的 logfile 和 pidfile 文件的路径,还有 user 改为系统用户,这样 supervisor 启动的进程将以系统用户运行,避免可能的权限问题: [supervisord] logfile=/home/新用户名/etc/supervisor/log/supervisord.log ; main log file; default $CWD/supervisord.log pidfile=/home/新用户名/etc/supervisor/var/supervisord.pid ; supervisord pidfile; default supervisord.pid user=root ; setuid to this UNIX account at startup; recommended if root # [supervisorctl] 板块,配置serverurl的值 [supervisorctl] serverurl=unix:////home/新用户名/etc/supervisor/var/supervisor.sock ; use a unix:// URL for a unix socket # [include] 版块,将 /home/wwb/etc/supervisor/conf.d/ 目录下所有以 .ini 结尾的文件内容包含到配置中来,这样便于配置的模块化管理,和之前 Nginx 配置文件的处理方式是类似的。注意取消行首的`;`注释。 [include] files = /home/新用户名/etc/supervisor/conf.d/*.ini autorestart=True配置项目应用到supervisor# 进入我们上面设置配置文件路径 /home/新用户名/etc/supervisor/conf.d su 新用户 cd ~/etc/supervisor/conf.d # 新建项目配置文件blog.ini vim blog.ini ############################################################## # blog.ini配置详情 # 程序名,后续开启关闭进程都使用程序名指代当前应用 [program:myDj] # 程序需要执行的指令 command=gunicorn blogproject.wsgi -w 2 -k gthread -b 127.0.0.1:8000 # 执行指令时到达的路径 directory=/home/新用户名/apps/djangoproject/ # 是否自动启动,遭遇意外自动重启 autostart=true autorestart=unexpected # 开启当前应用的用户角色 user=root # 应用的相关日志 stdout_logfile=/home/新用户名/etc/supervisor/log/myDjango-stdout.log stderr_logfile=/home/新用户名/etc/supervisor/log/myDjango-stderr.log ################################################################## # -c 指定 Supervisr 启动时的配置文件。 supervisord -c ~/etc/supervisord.conf #进入 supervisorctl 进程管理控制台 supervisorctl -c ~/etc/supervisord.conf #更新配置文件 update #启动应用 restart myDj配置数据库{callout color="#4dcfef"}参考文章: Django学习之旅(十二)Nginx+Gunicorn+Supervisor部署Django博客应用以及各种排坑尝试Linux系统上安装python详细步骤【Python】Python创建虚拟环境的三种方式{/callout}
2023年08月19日
41 阅读
0 评论
1 点赞
2023-03-06
jupyter lab 远程部署
安装jupyterlab最好使用sudo 权限安装 jupyterlab,这样所有用户都能使用 jupyterlab,而且也不用下方的配置环境变量的步骤。sudo pip install jupyterlab配置变量如果出现bash: juypyter-lab: command not found,需要配置下环境变量方法1: 将用户目录用环境变量 ${HOME} 来代替了,这样就算是用户名不相同也不用替换直接执行下面的命令即可。 echo 'PATH=$PATH:'${HOME}'/.local/bin' | sudo tee -a /etc/profile 使用环境变量生效 $ source /etc/profile 方法二:(添加临时变量) export PATH="$HOME/.local/bin:$PATH"修改jupyterlab配置生成配置文件jupyter lab --generate-config创建修改访问密码输入下面的代码后,输入两次密码后会生产一个文件密钥jupyter lab password根据提示输入密码后,会生成另外一个配置文件~/.jupyter/jupyter_server_config.json,里面包含了经过加密的密码,如下所示:修改配置文件jupyter_lab_config.py中的相关变量在jupyter_lab_config.py中添加或者修改下面的内容,其中c.ServerApp.password是填写刚刚修改密码后生产的密钥c.ServerApp.ip = '*' # 允许访问ip c.ServerApp.allow_remote_access = False c.ServerApp.open_browser = False c.ExtensionApp.open_browser = False c.LabServerApp.open_browser = False c.ServerApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$LlSzKhyztyp6J/1rql8zrw$VYmhQYBkkpPgWfckCyC0Uj0tZta8AEQyMLG3csWrAkk' # 将配置文件jupyter_server_config.json中的加密密码复制到这里 运行程序nohup:忽略hangup信号,防止终端关闭时程序退出nohup jupyter lab > jupyterlab.log 2>&1 &ubuntu 后台运行的几种方法!
2023年03月06日
32 阅读
1 评论
0 点赞
2022-02-07
KSWEB PHP+MySQL环境搭建及应用
1. KSWEB ksweb是 一个Android端的服务器容器。有 2.7.2 及 2.8.2 版本,可以用下面链接下载: http://bbs.xiaomi.cn/thread-9690863-1-1.html在Android设备上安装这个apk后,启动就会自动化安装好 php环境和mysql。现在我们就可以在浏览器中输入: http://192.168.0.108:8080/ 访问服务器了,可以看到 Welcome! 界面。 2. PhpMyAdmin phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。1)点开MYSQL管理时,选择PHPMYADMIN,出现了问题,说 /ksweb 目录下没有phpMyAdmin 文件夹要不要安装创建,那当然点是了,然后又弹出下载错误的框?解决:下载一个 phpMyAdmin ,解压放到 /ksweb 目录下。2)PHP环境配置?进入:http://127.0.0.1/phpMyAdmin 出错!在phpmyadmin中找到config.inc.php文件,增加下面这一行就可以了:$cfg['Servers'][$i]['port'] = '3306';输入: http://192.168.0.108:10000/ 就可以看到phpMyAdmin的登录界面。3) 在安装完MySQL 服务器 之后,我们使用phpmyadmin进行登陆mysql管理,但输入root用户名及密码之后,点击登陆提示如下错误: #1045 无法登录 MySQL 服务器解决:修改/home/wwwroot/phpmyadmin/libraries/config.default.php 文件,找到下面两行$cfg['Servers'][$i]['nopassword'] = false;$cfg['Servers'][$i]['AllowNoPassword'] = false;将两个false改为true,同时设置 $cfg['Servers'][$i]['password'] = '';通过这样设置配置文件后phpmyadmin 就会允许以空密码方式登录mysql数据库了。 3. 用phpMyAdmin更改root密码的方法 1) 修改 phpmyadmin首先用root账号登陆phpmyadmin,然后点击左侧进入mysql数据库,在顶部点击“mysql”进入sql输入界面。输入以下命令:update user set password=password('root') where User='root'root为你希望修改的密码,切记不要在数据库中直接手工修改密码。然后点击右下角的“执行”,看到如下界面,就表示修改成功。2)修改mysql接着还要进入phpmyadmin目下下的libraries目录,修改config.default.php文件。找到$cfg['Servers'][$i]['password'] = ‘ ‘,修改为$cfg['Servers'][$i]['password'] = ‘root′; root就是您想要的密码。记住第一步是phpmyadmin的密码修改第二步是mysql的密码修改,mysql密码不该,phpmyadmin也不会生效,两个一起改才可以。4. 在 phpmyadmin 中执行SQL语句 首先登录phpMyAdmin,用上面修改的密码。进入到一个数据库,点击SQL 在编辑框中编写SQL命令,执行。 (如果进入到某个表中,再执行sql语句就不能成功。)1) 建立表CREATE TABLE people (`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 100 ) NOT NULL , `sex` BOOL NOT NULL DEFAULT '1', `birthyear` INT NOT NULL ) 表名 、段名 都要用“·”号括起来,这个符号是ESC下面那个键。2)插入 INSERTinsert into people(name,sex,birthyear) values('mars',0,1988);insert into people values(null,'mars',0,1988);3) 查询 selectselect id,name from people where id=1;SELECT * FROM people WHERE name='mars';SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'引号的使用: 请注意,我们在例子中的条件值周围使用的是单引号。在表中,可能会包含重复值。有时您也许希望仅仅列出不同(distinct)的值,相同的值就只出现一次。SELECT DISTINCT Company FROM Orders ;4) 排序、分组、计算分组语句:group by 字段排序语句:order by 字段,字段 ASC / DESC指针查询:limit 初始值,结束值select name from people order by birthyear ASC;5)Update 更新语句 update people set name='快刀王五' where id=1;6)Delete 删除 delete from people where id=1;5. 使用 SQLyog 管理MySQL. 先要远程连接上:初次登陆使用系统 root 账户,密码 root ;注意主机地址为第 4 步中提示的 ip 地址;这里遇到了几个问题:1.ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server这是无法给远程连接的用户权限问题。将mysql中user表的root用法的Host,从'localhost ' 改为 '%'. 可以用命令: update user set Host='%' where Host='localhost' and User=’root’ 即可。错误信息:ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES)处理:创建用户账号
2022年02月07日
18 阅读
0 评论
0 点赞