screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
使用 RSync 复制文件
当今时代,用户通常都会有数台计算机:家用计算机和办公计算机、笔记本电脑、智能手机或平板电脑。因而,在多个设备之间保持文件和文档同步的任务就变得越发重要。
1.1 概念概述
1.2 基本语法
1.3 在本地复制文件和目录
1.4 远程复制文件和目录
1.5 配置和使用 Rsync 服务器
1.6 更多信息
1.1 概念概述
对于要通过慢速网络连接同步大量数据的情况,Rsync 提供了可靠的方法来只传输文件中的更改。此方法不仅适用于文本文件,还适用于二进制文件。为了检测文件之间的差异,Rsync 将文件分为多个块,并计算它们的校验和。
检测更改对计算能力有一定的要求。因此,请确保两端的计算机均具有足够的资源,包括 RAM。
当需要定期传输大量只包含微小更改的数据时,Rsync 特别有用。进行备份时就常常用到该工具。Rsync 也非常适合用来镜像试验服务器,此类服务器将 Web 服务器的完整目录树储存到 DMZ 内的某台 Web 服务器中。
Rsync 并不是同步工具,虽然它的名字看上去有些像。Rsync 工具一次只能在一个方向复制数据。它不会也不能反向复制数据。如果您需要既能同步源又能同步目标的双向工具,请使用 Csync。
1.2 基本语法
Rsync 是一个命令行工具,基本语法如下:
rsync [OPTION] SOURCE [SOURCE]... DEST
您可以在任何本地或远程计算机上使用 Rsync,前提是您拥有相应的访问权限和写入权限。可以有多个 SOURCE 项。SOURCE 和 DEST 占位符可以是路径和/或 URL。
下面介绍一些最常用的 Rsync 选项:
-v 输出较详细的文本
-a 存档模式;以递归方式复制文件并保留时间戳、用户/组所有权、文件权限和符号链接
-z 压缩传输的数据
注意:尾部斜杠计数
使用 Rsync 时,要特别注意尾部斜杠。目录后面的尾部斜杠表示目录的内容。没有尾部斜杠表示目录本身。
1.3 在本地复制文件和目录
下面的说明假设当前用户拥有 /var/backup 目录的写入许可权限。要将单个文件从计算机上的一个目录复制到另一个路径,请使用以下命令:
rsync -avz backup.tar.xz /var/backup/
文件 backup.tar.xz 会复制到 /var/backup/,绝对路径是 /var/backup/backup.tar.xz。
请勿忘记在 /var/backup/ 目录后面加上尾部斜杠!如果不插入斜杠,文件 backup.tar.xz 会复制到 /var/backup(文件)中,而不是 /var/backup/ 目录中!
复制目录与复制单个文件相似。下面的示例将目录 tux/ 及其内容复制到 /var/backup/ 目录中:
rsync -avz tux /var/backup/
在绝对路径 /var/backup/tux/ 中可找到副本。
1.4 远程复制文件和目录
两台计算机上都需要有 Rsync 工具。要从远程目录复制文件或将文件复制到远程目录,需要提供 IP 地址或域名。如果本地计算机和远程计算机上当前的用户名相同,则可以不指定用户名。
要使用相同的用户(在本地和远程主机上)将文件 file.tar.xz 从本地主机复制到远程主机 192.168.1.1,请使用以下命令:
rsync -avz file.tar.xz tux@192.168.1.1:
如果目标主机端口不是默认的22,命令行加入 -e "ssh -p 12345"指定端口。
根据您的个人偏好,也可以使用下面的命令,它们的作用相同:
rsync -avz file.tar.xz 192.168.1.1:~
rsync -avz file.tar.xz 192.168.1.1:/home/tux
在使用标准配置的所有情况下,系统会提示您输入远程用户的通行口令。此命令会将 file.tar.xz 复制到用户 tux 的主目录(通常为 /home/tux)。
远程复制目录与在本地复制目录相似。下面的示例将目录 tux/ 及其内容复制到 192.168.1.1 主机上的远程目录 /var/backup/:
rsync -avz tux 192.168.1.1:/var/backup/
假设您在主机 192.168.1.1 上拥有写入许可权限,便可在绝对路径 /var/backup/tux 中找到副本。
1.5 配置和使用 Rsync 服务器
Rsync 可作为在用于传入连接的默认端口 873 上列出的守护程序 (rsyncd) 运行。此守护程序可以接收“复制目标”。
下面的说明介绍如何在 jupiter 上创建具有备份目标的 Rsync 服务器。此目标可用于储存您的备份。要创建 Rsync 服务器,请执行以下操作:
设置 RSYNC 服务器
在 jupiter 上,创建用于储存您所有备份文件的目录。在此示例中,我们使用 /var/backup:
mkdir /var/backup
指定所有权。在此示例中,该目录为用户组中的用户 tux 所拥有:
chown tux.users /var/backup
配置 rsyncd 守护程序。
我们将配置文件分割成一个主文件,和一些用于存放您的备份目标的“模块”。如此,以后便可更轻松地添加其他目标。全局值可以储存在 /etc/rsyncd.d/.inc 文件中,而模块放置在 etc/rsyncd.d/.conf 文件中:
创建目录 /etc/rsyncd.d/:
mkdir /etc/rsyncd.d/
在主配置文件 /etc/rsyncd.conf 中,添加以下几行:
# rsyncd.conf main configuration file
log file = /var/log/rsync.log
pid file = /var/lock/rsync.lock
# 1
&merge /etc/rsyncd.d
# 2
&include /etc/rsyncd.d
将 /etc/rsyncd.d/*.inc 文件中的全局值合并到主配置文件中。
从 /etc/rsyncd.d/*.conf 文件中装载任何模块(或目标)。这些文件不应该包含对全局值的任何参照。
在文件 /etc/rsyncd.d/backup.conf 中通过以下几行创建您的模块(您的备份目标):
# backup.conf: backup module
[backup]
uid = tux
gid = users
path = /var/backup
auth users = tux
secrets file = /etc/rsyncd.secrets
comment = Our backup target
1 备份目标。可以使用您喜欢的任何名称。但最好根据目标的用途来命名,并使用在 *.conf 文件中所用的相同名称。
2 指定在进行文件传输时所用的用户名或组名。
3 定义用于储存备份的路径(从步骤 1 中)。
4 指定允许的用户的逗号分隔列表。列表以最简单的方式包含允许连接到此模块的用户名。在我们的示例中,只允许用户 tux。
5 指定包含用户名和明文口令的行所在文件的路径。
创建包含以下内容的 /etc/rsyncd.secrets 文件,并替换 PASSPHRASE:
# user:passwd
tux:PASSPHRASE
确保该文件只有 root 用户可读:
chmod 0600 /etc/rsyncd.secrets
通过以下命令启动并启用 rsyncd 守护程序:
systemctl enable rsyncd
systemctl start rsyncd
测试是否可访问 Rsync 服务器:
rsync jupiter::
您应该会看到类似如下的响应:
backup Our backup target
若非如此,请检查您的配置文件、防火墙和网络设置。
上述步骤创建了 Rsync 服务器,现在可以使用它来储存备份。下例还创建了一个列出所有连接的日志文件。此文件储存在 /var/log/rsyncd.log 中。如果您要对传输进行调试,那么它非常有用。
要列出备份目标的内容,请使用以下命令:
rsync -avz jupiter::backup
此命令会列出服务器上 /var/backup 目录中存在的所有文件。此请求还记录在日志文件 /var/log/rsyncd.log 中。要开始实际传输,请提供源目录。使用 . 表示当前目录。例如,下面的命令会将当前目录复制到 Rsync 备份服务器:
rsync -avz . jupiter::backup
默认情况下,Rsync 不会在运行时删除文件和目录。要允许删除,必须另外指定选项 --delete。为保证不删除任何较新的文件,可转而使用选项 --update。必须手动解决所有冲突。
1.6 更多信息
Csync 双向文件同步程序,请参见 https://www.csync.org/。
RSnapshot 创建增量备份,请参见 http://rsnapshot.org。
Unison 与 CSync 类似的文件同步程序,但具有图形界面,请参见 http://www.seas.upenn.edu/~bcpierce/unison/。
Rear 一个灾难恢复框架,请参见 https://www.suse.com/documentation/sle-ha/ 上 SUSE Linux Enterprise High Availability Extension 的《管理指南》。
参考:
【1】https://documentation.suse.com/zh-cn/sles/15-SP1/html/SLES-all/cha-net-rsync.html
【2】https://bbs.huaweicloud.com/blogs/296193
宝塔7.8快速降级7.7办法
- 正常安装宝塔7.8
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
- 接着降级到7.7
wget http://download.bt.cn/install/update/LinuxPanel-7.7.0.zip
unzip LinuxPanel-*
cd panel
bash update.sh
cd .. && rm -f LinuxPanel-*.zip && rm -rf panel
- 取消账号绑定
rm -f /www/server/panel/data/bind.pl
- 破解为专业版
curl http://download.moetas.com/install/update6.sh|bash
查看 SELinux状态及关闭SELinux
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
sed 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
重启机器即可
宝塔面板+docker部署django项目
本文原理是,使用docker生成django+uwsgi容器,利用宝塔面板的nginx反向代理容器。
进入django项目目录,新建Dockfile, uwsgi.ini和start.sh三个文件。
Dockfile
# 基础镜像:python3.7环境
FROM python:3.7
# 镜像作者
MAINTAINER Richard
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 设置pypi源头为国内源
# COPY pip.conf /root/.pip/pip.conf
# 在容器内/var/www/html/下创建webapp文件夹
RUN mkdir -p /var/www/html/webapp
# 设置容器内工作目录
WORKDIR /var/www/html/webapp
# 将当前目录文件拷贝一份到工作目录中(. 表示当前目录)
# ADD . /var/www/html/webapp
ADD requirements.txt /var/www/html/webapp
ADD start.sh /var/www/html/webapp
# 利用 pip 安装依赖
RUN pip install -r requirements.txt
# Windows环境下编写的start.sh每行命令结尾有多余的\r字符,需移除。
RUN sed -i 's/\r//' ./start.sh
# 设置start.sh文件可执行权限
RUN chmod +x ./start.sh
uwsgi.ini
[uwsgi]
project=webapp
subproject=djangoProject1 #项目名称(需要修改的地方)
base=/var/www/html
chdir=%(base)/%(project)
module=%(subproject).wsgi:application
master=True
processes=2
socket=0.0.0.0:8080 #这里直接使用uwsgi做web服务器,使用http。如果使用nginx,需要使用socket沟通。
buffer-size=65536
pidfile=/tmp/%(project)-master.pid
vacuum=True
max-requests=5000
daemonize=/tmp/%(project)-uwsgi.log
#设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃
harakiri=60
#当一个请求被harakiri杀掉会,会输出一条日志
harakiri-verbose=true
start.sh
#!/bin/bash
python manage.py collectstatic --noinput&&
python manage.py makemigrations&&
python manage.py migrate&&
uwsgi --ini /var/www/html/webapp/uwsgi.ini
修改settings.py
import os
ALLOWED_HOSTS = ["*"]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
生成镜像
docker build -t mydjango_img:0.1 .
生成容器
docker run -it --name webapp -p 8080:8080 -v /www/wwwroot/projects/djangoProject1:/var/www/html/webapp -d mydjango_img:0.1
# /www/wwwroot/projects/djangoProject1 宿主机项目目录
# /var/www/html/webapp 容器工作目录
进入容器,启动uwsgi
docker exec -it webapp3 /bin/bash start.sh
宝塔面板设置反向代理
#PROXY-START/
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
}
location /static/ {
alias /www/wwwroot/projects/djangoProject1/static/; #静态资源路径
}
#PROXY-END/
参考:https://blog.csdn.net/weixin_42134789/article/details/106205182
CentOS/Ubuntu/Debian一键安装Docker
一、Docker安装脚本使用教程
在本地连上VPS后,直接运行脚本即可安装Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
此一键脚本由Docker官方发布并维护,支持CentOS、Ubuntu、Debian、Fedora等常见的Linux发行版本。
二、其他安装Docker教程
反正VPS GO在Linux上安装Docker环境基本都是用的这个Get Docker的一键脚本,如果你想自己从零开始搭建环境,也可以跟着Docker官方的教程一步步搭建,总的来说也是比较容易的,先卸载旧版本的Docker,再安装Docker Engine-Community即可。
详细的手动安装Docker步骤可以参考Docker官方教程:
CentOS:https://docs.docker.com/engine/install/centos/
Debian:https://docs.docker.com/engine/install/debian/
Fedora:https://docs.docker.com/engine/install/fedora/
Ubuntu:https://docs.docker.com/engine/install/ubuntu/
三、其他docker服务
通过 service docker start 和 systemctl start docker启动docker服务。
四、测试docker服务
docker run hello-world
如果能顺利看到“Hello from Docker!”,表明安装并启动docker成功。
Nginx打开目录浏览功能
Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件或你要启用目录浏览虚拟主机的配置文件,在server或location 段里添加上autoindex on;来启用目录流量,下面会分情况进行说明。
另外Nginx的目录流量有两个比较有用的参数,可以根据自己的需求添加:
autoindex_exact_size off;
默认为on,显示出文件的确切大小,单位是bytes。
改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
改为on后,显示的文件时间为文件的服务器时间
1、整个虚拟主机开启目录流量
在server段添加
location / {
autoindex on;
autoindex_localtime on; #之类的参数写这里
}
2、单独目录开启目录流量
2.1:直接二级目录开启目录流量
location /down/ {
autoindex on;
}
2.2:虚拟目录开启目录流量
location /down/ {
alias /home/wwwroot/lnmp/test/;
autoindex on;
}
详细参照:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
重启nginx,使其生效。
更换sqlite3 为pysqlite3
Python3.9环境运行django最新版本,即使更新了centos的sqlite3版本仍然会报错。出错提示如下:
“django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3”
这个问题有两种解决办法:
(1)使用Python3.8或其他
(2)通过更换sqlite3 为pysqlite3解决。
下文主要介绍第二种办法的具体操作。
#修改出错文件
vim /root/envs/myenv/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py
#注释掉第14行
#from sqlite3 import dbapi2 as Database
#新增行
from pysqlite3 import dbapi2 as Database
#然后安装pysqlite3包
pip install pysqlite3
泰恩数据

