腾讯云轻量服务器定时创建快照

把下面的实例ID和secretId、secretKey替换就行了,这里是查询快照然后删除快照并新建一个快照。

由于腾讯云一个轻量只能有两个快照,我这里直接删除第二个快照,所以设置定时任务时,设置多久创建一次新快照都行。

// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");

const LighthouseClient = tencentcloud.lighthouse.v20200324.Client;

const clientConfig = {
  credential: {
    secretId: "更改为账号secretId",
    secretKey: "更改为账号secretKey",
  },
  region: "ap-guangzhou",
  profile: {
    httpProfile: {
      endpoint: "lighthouse.tencentcloudapi.com",
    },
  },
};

const client = new LighthouseClient(clientConfig);

const chakan = {
  "Filters": [
    {
      "Name": "instance-id",
      "Values": [
        "更改为实例id"
      ]
    }
  ]
};

client.DescribeSnapshots(chakan).then(

  (data) => {

    shanchu_id = data.SnapshotSet[1].SnapshotId //数组的第二个

    const shanchu = {
      "SnapshotIds": [
        shanchu_id
      ]
    };

    client.DeleteSnapshots(shanchu).then(
      (data) => {

        console.log('删除一个旧快照成功');
        console.log(data);

        // 创建快照

        const chuangjian = {
          "InstanceId": "更改为实例id"
        };
        client.CreateInstanceSnapshot(chuangjian).then(
          (data) => {
            console.log('创建一个新快照成功');
            console.log(data);
          },
          (err) => {
            console.error("error", err);
          }
        );

      },
      (err) => {

        console.log('删除一个旧快照失败~~~~必须已有两个快照,才能删除第二个快照并创建新快照');
        console.error("error", err);
      }
    );

  },
  (err) => {

    console.log('查询旧快照失败');
    console.error("error", err);
  }
);

这里是查询一个轻量的流量使用情况,然后发邮件通知我。这里除了实例id和密钥要替换外,还要设置smtp信息。

// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");

const LighthouseClient = tencentcloud.lighthouse.v20200324.Client;

const nodemailer = require('nodemailer'); //发送邮件的


function bytesToSize(bytes) {
  var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
  if (bytes == 0) return '0 Byte';
  var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
  return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
}

function sendEmail(data) {
  let transporter = nodemailer.createTransport({
    service: 'QQex', // 发送者的邮箱厂商,支持列表:https://nodemailer.com/smtp/well-known/ 如果是qq邮箱,就填QQ, QQex是腾讯企业邮
    port: 465, // SMTP 端口
    secureConnection: true, // SSL安全链接
    auth: {   //发送者的账户密码
      user: '账户', //账户
      pass: 'smtp授权码,到邮箱设置下获取', //smtp授权码,到邮箱设置下获取
    }
  });
  let mailOptions = {
    from: '"腾讯云轻量流量通知" <i@zuoridangnian.com>', // 发送者昵称和地址
    to: data.email, // 接收者的邮箱地址
    subject: data.subject, // 邮件主题
    html: data.content
  };
  //发送邮件
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    }
    console.log('邮件发送成功 ID:', info.messageId);
  });
}

const clientConfig = {
  credential: {
    secretId: "更改为账号secretId",
    secretKey: "更改为账号secretKey",
  },
  region: "ap-guangzhou",
  profile: {
    httpProfile: {
      endpoint: "lighthouse.tencentcloudapi.com",
    },
  },
};

const client = new LighthouseClient(clientConfig);
const params = {
  "InstanceIds": [
    "更改为实例id"
  ]
};

let Traffic

client.DescribeInstancesTrafficPackages(params).then(
  (data) => {
    Traffic = `使用了${bytesToSize(data.InstanceTrafficPackageSet[0].TrafficPackageSet[0].TrafficUsed)},总共有1000GB。`

    let mail = {
      email: '收件邮箱@qq.com', //收件邮箱
      content: `腾讯云轻量应用服务器 流量使用情况:${Traffic}`,
      subject: Traffic
    }

    sendEmail(mail)

  },
  (err) => {
    console.error("error", err);
  }
)

Apache 域名跳转到目录

RewriteEngine On
RewriteCond %{SERVER_NAME} =photo.zuoridangnian.com
RewriteRule ^ https://zuoridangnian.com/photo-gallery%{REQUEST_URI} [END,NE,R=permanent]

Ubuntu 20.04 apache开启http2

apt update && apt upgrade
apt install apache2 php7.4-fpm 
a2enmod proxy_fcgi setenvif
a2enconf php7.4-fpm 
a2dismod php7.4 
systemctl restart apache2
a2dismod mpm_prefork 
a2enmod mpm_event 
systemctl restart apache2
systemctl restart php7.4-fpm
a2enmod http2
systemctl restart apache2

Arch Linux 服务器开启BBR提高网络带宽和降低延迟

为内核加载 bbr 模块

echo "tcp_bbr" > /etc/modules-load.d/modules.conf

将默认的拥塞算法设置为 bbr

echo "net.core.default_qdisc=fq" > /etc/sysctl.d/bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.d/bbr.conf

重启服务器后验证一下

sysctl net.ipv4.tcp_congestion_control

net.ipv4.tcp_congestion_control = bbr

打开bbr后,网站速度感觉快了一些

解决 WP 图像后期处理失败,可能是服务器忙或没有足够的资源。请尝试上传较小的文件。推荐的最大尺寸为2500像素。

我的服务器是NGINX,所以先查看NGINX的错误日志

tail /var/log/nginx/error.log -n 10

上传一次大图像,然后看日志最后一条的信息是

2021/04/23 10:17:11 [error] 212420#212420: *166782 client intended to send too large body: 6849556 bytes, client: 120.85.112.147, server: zuoridangnian.com, request: “POST /wp-admin/async-upload.php HTTP/1.1”, host: “zuoridangnian.com”, referrer: “https://zuoridangnian.com/wp-admin/upload.php”

错误是:

client intended to send too large body

解决办法是:

在NGINX配置文件中添加

client_max_body_size 80m;

添加在 server 内对单独网站生效,添加在 http 块中对所有网站生效

如果你的服务器错误日志中是其它错误,就查其它的解决办法

Ubuntu 20.04 / Debian设置 swap 交换分区

创建 swap 文件

fallocate -l 2G /swapfile

更改权限为root可读

chmod 600 /swapfile

将该文件转为交换分区

mkswap /swapfile

启用该文件交换分区

swapon /swapfile

查看启用的交换分区

swapon --show

设置开机后自动启动这个交换分区

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

ok!

参考

Xshell设置秘钥登录并使用rz上传文件

scp又出毛病了,百度了一圈发现可以用Xshell+rz上传

xshell 下载链接: Free for Home/School – Xshell and Xftp Free Licensing。填写邮箱查收下载链接

打开xshell ,填好ip后在用户身份验证处选择 public key

选择导入,选择生成好的 id_rsa文件就好了

连上服务器后输入 rz ,就可以选择文件上传

解决Debian 升级到testing后无法输入中文

原本直接安装的腾讯云的Debian版本是能输入中文的,有中文字体,升级到testing后无法在远程中输入中文

重新配置 locales 软件包:

dpkg-reconfigure locales

然后用方向键移动,空格键选择上 en_US 开头的几个选项和 zh_CN 开头的几个选项

然后tab键选择 ok ,然后选择默认语言,选择 en_US UTF-8

即可

Ubuntu 20.04 Server装完系统需要做的一些事

打开ufw

ufw allow OpenSSH ## 打开SSH端口

ufw enable ## 启动 ufw

ufw status ## 查看 ufw 状态

ufw allow 8888/tcp ## 放行8888端口

安装pip

apt install python3-pip
pip3 config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

安装lamp

apt install apache2
apt install mysql-server ##mariadb-server

安装PHP

apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
systemctl restart apache2

设置mysql

mysql_secure_installation

mysql

创建数据库
CREATE DATABASE zrdn DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

创建用户
CREATE USER 'zrdn'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

给权限
GRANT ALL ON zrdn.* TO 'zrdn'@'%';

安装certbot自动配置HTTPS证书

snap install core; sudo snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --apache

ufw 放行 apache 端口

ufw allow in "Apache Full" ## 80/443

添加用户

adduser sammy

usermod -aG sudo sammy ## 给 sudo 权限

配置用户执行sudo命令不用输入密码

1.配置单用户不用输入密码

linuxconfig ALL=(ALL) NOPASSWD:ALL

2.配置所有sudo组的用户不用输入密码

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

Centos 8 服务器/VPS 安装桌面环境(GUI)并远程连接

废话不多说,直接ssh远程连接上服务器,开始安装桌面环境

dnf --enablerepo=epel group -y install "Xfce" "base-x"

我这里选择安装xfce,占用资源较少。

接着安装xrdp,用来提供远程连接

dnf install xrdp 

启动xrdp服务并且开启开机自启

systemctl enable xrdp --now

然后就可以用Windows自己的远程桌面连接 连接服务器了,计算机处输入IP,用户名不填,默认端口3389!

记得要放行服务器的3389端口哦!比如腾讯云要在网站里安全组放行,如安装有宝塔,要在宝塔里也放行

然后就看到xrdp的登陆界面了

账户和密码填服务器的,比如账户是root

然后就进去了

我也不知道为啥这里进去是gnome了。。。。

不过也还好,不是特别卡,勉强凑合

参考

没有更多文章了