分类 云计算 下的文章

在 CentOS 6 里安装 OpenJDK 1.8 和 Tomcat 8.5

环境:阿里云ECS云服务器 CentOS 6.9 64位

过程:

  1. yum update # 更新软件
    openjdk-1.png
  2. yum install java-1.8.0-openjdk-devel # 安装 OpenJDK 1.8
    openjdk-2.png
  3. wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz # 从国内镜像站点中下载 tomcat 8.5 安装包
  4. tar zxvf apache-tomcat-8.5.31.tar.gz # 解压缩 tomcat
  5. mv apache-tomcat-8.5.31 /usr/tomcat8 # 移到 /usr/tomcat8 目录
  6. useradd -M -d /usr/tomcat8 tomcat8 # 添加 tomcat8 用户
  7. chown -R tomcat8. /usr/tomcat8 # 更改目录属主
  8. vi /etc/rc.d/init.d/tomcat8 # 创建 tomcat 启动脚本

    #!/bin/bash
    
    # Tomcat8: Start/Stop Tomcat 8
    #
    # chkconfig: - 90 10
    # description: Tomcat is a Java application Server.
    
    . /etc/init.d/functions
    . /etc/sysconfig/network
    
    CATALINA_HOME=/usr/tomcat8
    TOMCAT_USER=tomcat8
    
    LOCKFILE=/var/lock/subsys/tomcat8
    
    RETVAL=0
    start(){
    echo "Starting Tomcat8: "
    su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup.sh"
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch $LOCKFILE
    return $RETVAL
    }
    
    stop(){
    echo "Shutting down Tomcat8: "
    $CATALINA_HOME/bin/shutdown.sh
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $LOCKFILE
    return $RETVAL
    }
    
    case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
        ;;
    esac
    exit $?
  9. chmod 755 /etc/rc.d/init.d/tomcat8 # 令启动脚本可执行
  10. /etc/rc.d/init.d/tomcat8 start # 手动启动 tomcat
    openjdk-3.png
  11. chkconfig --add tomcat8 # 将 tomcat8 添加到服务
  12. chkconfig tomcat8 on # 令 tomcat8 服务随系统启动自动启动
    openjdk-4.png

参考:

在 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