分类 云计算 下的文章

在 Debian 9 里安装 WireGuard

WireGuard还在开发状态,但有热心网友赞叹它的强大,如它的组网功能。

环境:阿里云Ubuntu 16.04,vultr Debian 9

过程:

  1. WireGuard官方提供了Ubuntu和Debian的安装方法,请安装好WireGuard
  2. wg genkey | tee wg-private.key | wg pubkey > wg-public.key # 在两台机,均生成公匙和私匙
  3. ip link add wg0 type wireguard # 在两台机,均创建 wg0 网络接口,如果Debian9在执行 ip link add wg0 type wireguard 命令时提示 RTNETLINK answers: Operation not supported ,请安装相应的组件包 apt install linux-headers-$(uname -r)
    wireguard-2.png
  4. ip addr add 10.0.7.1/24 dev wg0 # 在阿里云机,为wg0接口配置10.0.7.1的IP
  5. ip addr add 10.0.7.2/24 dev wg0 # 在vultr,为wg0接口配置10.0.7.2的IP
  6. wg set wg0 private-key ./wg-private.key # 在两台机,为wg0设置私匙
  7. ip link set wg0 up # 在两台机,启用wg0连接状态
  8. wg # 在两台机执行,记下公匙及端口号
    wireguard-3.png
  9. wg set wg0 peer 7LtLwRWlv6tU0po04zoOcvispsouXVEAn+rzN9NsbR8= allowed-ips 10.0.7.1/32 endpoint 47.106.147.60:35927 # 在vultr机里执行,其中 7LtLwRWlv6tU0po04zoOcvispsouXVEAn+rzN9NsbR8= 是阿里云机的公匙,10.0.0.7.1 是阿里云的wg0接口IP,47.106.147.60 是阿里云的公网IP,35972是端口号
    wireguard-4.png
  10. wg set wg0 peer LA34zHFIRGTB6ZzFT2DhxrcNtXc7gY2xjZjyES9b3yQ= allowed-ips 10.0.7.2/32 endpoint 45.63.49.100:34114 # 在阿里云机执行,其中 LA34zHFIRGTB6ZzFT2DhxrcNtXc7gY2xjZjyES9b3yQ= 是vultr机的公匙,10.0.0.7.2 是vultr的wg0接口IP,45.63.49.100 是vultr的公网IP,34114是端口号
  11. 测试,可以互ping wg0接口的内网IP
    wireguard-5.png

参考:

在阿里云ECS云服务器里安装Ubuntu 17.10官方系统

当前阿里云公共镜像提供了ubuntu 16.04,没有17.10,但看到论坛网友想要,所以实践。

环境:云服务器T5 2GB内存规格,原系统Debian 9 64位,目标是安装ubuntu官方的17.10版本。

过程:

  1. uname -a # 查看当前系统版本及磁盘使用情况
    ubuntu17-1.png
  2. mkdir /boot/ub && cd /boot/ub # 创建新目录ub,用于存放安装文件
  3. wget http://archive.ubuntu.com/ubuntu/dists/artful/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux # 下载ubuntu的网络安装文件
  4. wget http://archive.ubuntu.com/ubuntu/dists/artful/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz # 下载ubuntu的网络安装文件
    ubuntu17-2.png
  5. 重启ECS实例,在“管理终端”里操作,当看到启动选择菜单时,按c,进入grub命令
    ubuntu17-3.png
  6. 在grub里输入以下命令,手动启动ubuntu安装
    ubuntu17-5.png
  7. 开始ubuntu安装,语言选择
    ubuntu17-6.png
  8. 阿里云的VPC网络实例是可以自动分配到IP的,配置主机名
    ubuntu17-7.png
  9. 选择ubuntu的软件安装源
    ubuntu17-8.png
  10. 设置用户名
    ubuntu17-9.png
  11. 磁盘分区,本例是“使用整个磁盘”
    ubuntu17-10.png
  12. 本实例仅有一个系统盘,所以选择了vda
    ubuntu17-11.png
  13. 写入新的分区表
    ubuntu17-12.png
  14. 软件选择,本例仅选择OpenSSH server和Basic Ubuntu server
    ubuntu17-13.png
  15. 安装Grub启动管理器
    ubuntu17-14.png
  16. 设置UTC系统时钟
    ubuntu17-15.png
  17. 安装完成
    ubuntu17-16.png
  18. 在“管理终端”里看到的Ubuntu 17.10启动界面
    ubuntu17-17.png
  19. 但在“管理终端”里,仅能看到光标,并不会提示用户登录
    ubuntu17-18.png
  20. 远程通过ssh登录,正常
    ubuntu17-19.png

参考:https://help.ubuntu.com/community/Installation/NetbootInstallFromInternet

在 Debian Linux 里“压缩卷” - shrink partion

环境:Debian 9,例子中,将阿里云ECS云服务器默认的系统盘,40GB的/dev/vda1,划成30GB的/dev/vda1和10GB的/dev/vda2。

过程:

  1. df -h # 查看当前的磁盘使用情况,/dev/vda1 是40GB
    resize-2.png
  2. on-line shrinking not supported # 尝试直接运行resize2fs来压缩,提示错误,不允许对正在使用的分区进行压缩操作
    resize-3.png
  3. vi /etc/initramfs-tools/hooks/resizefs # 创建好脚本,复制好resize2fs

    #!/bin/sh
    
    set -e
    
    PREREQS=""
    
    prereqs() { echo "$PREREQS"; }
    
    case $1 in
     prereqs)
         prereqs
         exit 0
     ;;
    esac
    
    . /usr/share/initramfs-tools/hook-functions
    
    copy_exec /sbin/e2fsck
    copy_exec /sbin/resize2fs
    
    exit 0
  4. chmod +x /etc/initramfs-tools/hooks/resizefs # 添加执行权限
  5. vi /etc/initramfs-tools/scripts/local-premount/resizefs # 创建好脚本,在挂载/前进行resize2fs操作

    #!/bin/sh
    
    set -e
    
    PREREQS=""
    
    prereqs() { echo "$PREREQS"; }
    
    case "$1" in
     prereqs)
         prereqs
         exit 0
     ;;
    esac
    
    /sbin/e2fsck -yf /dev/vda1
    /sbin/resize2fs /dev/vda1 30G
    /sbin/e2fsck -yf /dev/vda1
  6. chmod +x /etc/initramfs-tools/scripts/local-premount/resizefs # 添加执行权限
    resize-4.png
  7. update-initramfs -u -v # 更新系统引导
    resize-5.png
  8. 重启系统后用 df 查看磁盘使用情况
    resize-6.png
  9. fdisk /dev/vda # 用fdisk删除vda1分区,再新建30GB的vda1分区和10GB容量的vda2分区
    resize-7.png
  10. rm /etc/initramfs-tools/hooks/resizefs /etc/initramfs-tools/scripts/local-premount/resizefs # 删除之前的启动脚本
  11. update-initramfs -u -v # 更新系统引导
  12. 重启系统后,用 fdisk -l 查看,可以看到相应的分区和容量信息
    resize-8.png

参考:https://serverfault.com/questions/528075/is-it-possible-to-on-line-shrink-a-ext4-volume-with-lvm

当Linux里没netstat时,可以使用ss命令来查看当前的socket使用情况

在默认的Debian 9系统里,尝试输入 netstat -tunpl | grep :80 来查看是什么进程在使用80端口,但提示找不到这个命令。

ss-1.png

网上说netstat的软件包在一些新版本系统里已经弃用了,但可以使用 ss 命令来达到同样的目的,于是 man ss 后大概看了一下使用的方法和例子,在Shell里执行 ss -anp | grep :80 ,结果是差不多。

ss-2.png

参考:https://www.cyberciti.biz/tips/linux-investigate-sockets-network-connections.html

在phpmyadmin用root用户登录 MariaDB 10.1.26 (mysql 5.7) 失败

环境:Debian 9.4, MariaDB 10.1.26 或 mysql 5.7, phpmyamdin 4.8

过程:

  1. 在Debian系统里安装好 nginx + php7.0 + MariaDB 的环境,放置一份 phpmyadmin 尝试登录
  2. 用 MariaDB 的root用户和密码登录,失败,提示:
    mysql-1.png

    mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'>mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
  3. 搜索得,如 mysql 5.7 版本后,默认不允许root用户从如phpmyadmin登录
  4. 可在服务器里通过mysql,创建一个有完全权限的新用户,如果是生产环境,建议仅授权指定数据库的权限:
    mysql-4.png
    CREATE USER 'idbadm'@'localhost' IDENTIFIED BY 'meizi36829';
    GRANT ALL PRIVILEGES ON *.* TO 'idbadm'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  5. 用新建用户的信息(登录名idbadm,密码meizi36829),再次登录phpmyadmin,成功
    mysql-5.png

参考: