标签: Ubuntu

  • AWS云服务器Bitnami套件安装WordPress更新php版本到7.4.33 图文教程

    AWS云服务器Bitnami套件安装WordPress更新php版本到7.4.33 图文教程

    今日有小伙伴找到老季,说想要把aws云ec2服务器WordPress网站环境从php7.3升级到php7.4的版本,我们这里也记录一下这个的更新过程。

    服务器情况

    无法连接aws的ec2服务器

    登录上aws也经历了一些波折,发现登录服务器,老是无法连接。要不就是卡住了一样。之后就没有反应了。

    要么就是提示:

    ———-ERROR——- Unable to start command: invalid uid and gid

    毫无办法,按理来说aws不可能会有这种,控制台都无法连接ec2服务器的问题。之后我们终于查到了问题,由于系统安装的是ubuntu,所以我们用终端连接时,需要使用ubuntu用户进行连接,具体如下图所示:

    Run As : ubuntu

    这就是重点了,如果是centos、debian等发型版用root即可。

    之后重新使用”会话管理器”菜单就可以连接了。

    已安装的环境bitnami套件

    登录上服务器,发现服务器使用的是/opt/bitnami/ctlscript.sh命令,所以断定是bitnami的套件,而官网并没有给出详细的套件,这里我们只能自己编译了。

    编译php7.4.33

    安装必要的环境包

    请先直接切换到root用户,然后使用如下命令进行批量下载并安装必要的包

    sudo su   //直接回车
    wget https://www.php.net/distributions/php-7.4.33.tar.gz
    tar -xvf php-7.4.33.tar.gz
    apt-get update
    apt-get install -y libxml2-dev libssl-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev zlib1g-dev libzip-dev libsqlite3-dev libonig-dev

    No package ‘libxml-2.0’ found

    hecking for libxml-2.0 >= 2.7.6… no configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: No package ‘libxml-2.0’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBXML_CFLAGS and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

    但我们已经安装了libxml而且是最新的版本,在终端中指定一下路径:

    export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
    

    No package ‘sqlite3’ found

    configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package ‘sqlite3’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SQLITE_CFLAGS and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

    apt-get install libsqlite3-dev

    No package ‘oniguruma’ found

    configure: error: Package requirements (oniguruma) were not met: No package ‘oniguruma’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ONIG_CFLAGS and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

    apt-get install libonig-dev

    配置PHP

    cd php-7.4.33
    ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mbstring --with-curl --with-openssl --with-zlib --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-opcache --enable-xml --enable-intl --with-gd --with-jpeg --with-freetype --with-mysqli --with-pdo-mysql

    Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

    一开始出现了Your PHP installation appears to be missing the MySQL extension which is required by WordPress.错误,是我们没有带上mysql的扩展--with-mysqli --with-pdo-mysql,以上编译时,我们已经带上了。

    编译和安装PHP7.4.33

    make
    sudo make install
    

    配置php.ini

    sudo cp php.ini-development /usr/local/php7/etc/php.ini

    编辑 /usr/local/php7/etc/php.ini

    找到mysqli.default_socketpdo_mysql.default_socket的配置区,将其设置成/opt/bitnami/mysql/tmp/mysql.sock

    mysqli.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
    
    pdo_mysql.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
    

    如不配置则会出现:Error establishing a database connection

    导致WordPress的运行php环境找不到mysql的链接方法

    配置php-fpm.conf

    编辑/usr/local/php7/etc/php-fpm.conf文件

    sudo vi /usr/local/php7/etc/php-fpm.conf

    内容如下:

    [global]
    pid = /run/php-fpm.pid
    error_log = /var/log/php-fpm/error.log
    [my_pool]
    user = daemon
    group = daemon
    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm.sock
    listen.owner = daemon
    listen.group = daemon
    pm = dynamic
    pm.start_servers = 5
    pm.min_spare_servers = 2
    pm.max_spare_servers = 8
    pm.max_children = 12

    这里我们使用的用户及用户组都是daemon跟bitnami套件中apache设置的是一样的权限。

    检查一下/var/run/这个目录是否存在,不存在则需要创建。

    启动php-fpm

    /usr/local/php7/sbin/php-fpm

    可以通过 ps aux | grep php-fpm 命令查看我们的php是否允许成功

    如果有/usr/local/php7/etc/php-fpm.conf的配置在运行说明已成功。

    配置apache2

    修改/opt/bitnami/apache2/conf/php-fpm-apache.conf,修改前记得备份!!!

    修改配置前请确保:/usr/local/php7/etc/php-fpm.conf的php-fpm已在运行。

    /opt/bitnami/apache2/conf/php-fpm-apache.conf改为以下内容

    <IfDefine USE_PHP_FPM>
      <Proxy "unix:/var/run/php-fpm.sock|fcgi://www-fpm" timeout=300>
      </Proxy>
      <FilesMatch \.php$>
        <If "-f %{REQUEST_FILENAME}">
          SetHandler "proxy:fcgi://www-fpm"
        </If>
      </FilesMatch>
    </IfDefine>

    此处Proxy需要跟上面的php-fpm.conf配置的listen一致,否则apache2无法链接到php-fpm。

    重启bitnami的apache服务

    /opt/bitnami/ctlscript.sh restart apache
    

    检查php版本是否成功

    我们在网站目录中新建一个info.php内容如下

    <?php phpinfo();
    

    之后通过网址打开 http://域名/info.php 检查一下,php版本是否是7.4.33

    错误日志

    我们的配置过程中出现了一些未知错误,还好有日志可以查询,下面我们指一下日志位置,有需要的小伙伴可能会用到。

    tail -n 20 /opt/bitnami/apache2/logs/error_log

    至此,教程结束,可能不算十分完整,但大概过程就是这样的。请小伙伴们指正~

  • Debian 12 / Ubuntu 22.04 安装 Docker 以及 Docker Compose 图文教程

    Debian 12 / Ubuntu 22.04 安装 Docker 以及 Docker Compose 图文教程

    本文将指导如何在 Debian 12 和 Ubuntu 22.04 下安装 Docker 以及 Docker Compose。

    PS:本文同时适用于 Debian 11 以及 Ubuntu 20.04

    什么是 Docker?

    Docker 是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。

    什么是 Docker Compose?

    传统模式下运维人员需要运行 docker run 来启动各种容器,一旦容器过多,就无法一次性记住所有的运行参数和命令,这时候我们可以使用 Docker Compose 来解决这个问题。

    Docker Compose 是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务,然后使用一个命令就可以创建并启动所有服务。使用 Docker Compose 可以大大简化 Docker 容器的管理和部署,特别是对于具有多个互相依赖的容器的复杂应用。

    使用官方源安装 Docker

    以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。

    首先,安装一些必要的软件包:

    apt update
    apt upgrade -y
    apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

    然后加入 Docker 的 GPG 公钥和 apt 源:

    Debian

    curl -sSL https://download.docker.com/linux/debian/gpg | gpg –dearmor > /usr/share/keyrings/docker-ce.gpg
    echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable” > /etc/apt/sources.list.d/docker.list

    Ubuntu

    curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
    

    国内机器可以用清华 TUNA 的国内源:

    Debian

    curl -sS https://download.docker.com/linux/debian/gpg | gpg –dearmor > /usr/share/keyrings/docker-ce.gpg echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable” > /etc/apt/sources.list.d/docker.list

    Ubuntu

    curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
    

    然后更新系统后即可安装 Docker CE:

    apt update
    apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

    此时可以使用 docker version 命令检查是否安装成功:

    root@debian ~ # docker version
    Client: Docker Engine - Community
     Version:           24.0.2
     API version:       1.43
     Go version:        go1.20.4
     Git commit:        cb74dfc
     Built:             Thu May 25 21:52:17 2023
     OS/Arch:           linux/amd64
     Context:           default
    Server: Docker Engine - Community
     Engine:
      Version:          24.0.2
      API version:      1.43 (minimum version 1.12)
      Go version:       go1.20.4
      Git commit:       659604f
      Built:            Thu May 25 21:52:17 2023
      OS/Arch:          linux/amd64
      Experimental:     true
     containerd:
      Version:          1.6.21
      GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
     runc:
      Version:          1.1.7
      GitCommit:        v1.1.7-0-g860f061
     docker-init:
      Version:          0.19.0
      GitCommit:        de40ad0

    如果需要某个特定用户可以用 Docker rootless 模式运行 Docker,那么可以把这个用户也加入 docker 组,比如我们把 www-data 用户加进去:

    apt install docker-ce-rootless-extras
    sudo usermod -aG docker www-data
    

    安装 Docker Compose

    因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose

    root@debian ~ # docker compose version
    Docker Compose version v2.18.1
    

    如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose:

    我们可以使用 Docker 官方发布的 Github 直接安装最新版本:

    curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    此时可以使用 docker-compose version 命令检查是否安装成功:

    root@debian ~ # docker-compose version
    Docker Compose version v2.18.1

    修改 Docker 配置

    以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训):

    cat > /etc/docker/daemon.json << EOF
    {
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "20m",
            "max-file": "3"
        },
        "ipv6": true,
        "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
        "experimental":true,
        "ip6tables":true
    }
    EOF
    

    然后重启 Docker 服务:

    systemctl restart docker

    好了,我们已经安装好了 Docker 和 Docker Compose,然后就可以开始愉快的安装各种软件,限于篇幅,我们不再赘述,今后慢慢介绍安装各种 Docker 软件的方法。

  • Debian/Ubuntu/Centos 设置防火墙仅允许Cloudflare的ip访问80 443端口 脚本解决方案 图文教程

    Debian/Ubuntu/Centos 设置防火墙仅允许Cloudflare的ip访问80 443端口 脚本解决方案 图文教程

    背景

    最近网站被疯狂CC,很不幸的源站IP被暴露。在使用了cloudflare防护盾的情况下,攻击者直接打IP:443端口导致VPS资源被耗尽。

    解决方案

    配置UFW防火墙,只放行cloudflare的IP。其余的一律禁止。

    使用下面的脚本可以方便的将cloudflare IP加入VPS的防火墙白名单中。

    github下载地址:https://raw.githubusercontent.com/okoklai/studes/master/cfip.sh

    #!/bin/bash
    if !command -v ufw >/dev/null 2>&1; then
    echo "UFW not found! please install it from your package manager!"
    echo "For RHEL/CentOS/Fedora, use yum install ufw."
    echo "For Ubuntu/Debian/Proxmox VE, use apt install ufw."
    echo "Don't forgot to allow your ssh port before enable UFW!"
    echo "When you finished it, just use command ufw enable to enable it!"
    exit 1
    fi
    for line in `curl https://www.cloudflare.com/ips-v4`
    do
      echo "Reading $line from CloudFlare's offical ip list."
      ufw allow from $line to any port 80
      ufw allow from $line to any port 443
    done
    for line in `curl https://www.cloudflare.com/ips-v6`
    do
      echo "Reading $line from CloudFlare's offical ip list."
      ufw allow from $line to any port 80
      ufw allow from $line to any port 443
    done

    此脚本只会设置固定ip允许访问80、443端口,其他的ufw设置不会修改。

  • apk命令 – 下载包管理工具

    Android应用程序包(APK)是android操作系统使用的应用程序包文件格式,用于分发和安装移动应用及中间件。 一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成一个android系统所能识别的文件才可以运行。

    语法格式:apk [参数]

    常用参数:

    install安装应用程序包
    upgrade更新最新本地镜像源
    search搜索

    参考实例

    安装应用程序包:

    [root@jiloc ~]# apk install xxx

    升级系统已安装的所以软件包(一般包括内核):

    [root@jiloc ~]# apk upgrade 

    查找所以可用软件包及其描述内容:

    [root@jiloc ~]# apk search -v

    显示软件包的信息:

    [root@jiloc ~]# apk info 

    卸载并删除包:

    [root@jiloc ~]# apk del openssh openntp vim 
  • dpkg-reconfigure命令 – 重新配置已安装的软件包

    dpkg-reconfigure命令是Debian linux中重新配置已经安装过的软件包,可以将一个或者多个已安装的软件包传递给此指令,它将询问软件初次安装后的配置问题。

    当用户需要再次对软件包配置的时候,可以使用dpkg-reconfigure命令来对指定的软件包进行配置。

    语法格式:  dpkg-reconfigure [参数] [软件包]

    常用参数:

    -a重新配置所有的软件包
    -u仅显示未提过的问题
    — -default-priority使用默认优先级
    — -force强制执行操作
    — -no-reload不要轻易的重装模板
    -f指定 debconf 前端界面
    -p指定要显示的问题的最优先级
    — -terse开启简要模式

    参考实例

    查询配置“bash”软件包:

    [root@jiloc ~]# dpkg-reconfigure bash

    重配置所有软件包:

    [root@jiloc ~]# dpkg-reconfigure -a
  • dpkg-trigger命令 – 软件包触发器

    dpkg-trigger命令是Debian linux下的软件包触发器。 dpkg-trigger命令只能应用在维护者脚本中,或者必须使用“- — by-package”参数。

    语法格式 : dpkg-trigger [参数] [触发器]

    常用参数:

    — -check-supported检查运行的dpkg是否支持触发器,返回值为0,则支持触发器
    — -help显示帮助信息
    — -admindir=<目录>设置dpkg数据库所在的目录
    — -no-act仅用于测试,不执行任何操作
    — -by-package=<软件包>覆盖触发器等待者

    由于 dpkg-trigger 只能运行在维护者脚本程序中,直接在命令行运行会给出报错信息。如下参考实例。

    参考实例

    在命令行中运行dpkg-trigger:

    [root@jiloc ~]# dpkg-trigger nowait 
    dpkg-trigger: 错误: 必须从维护者脚本中调用(或者通过 --by-package 选项)
  • dpkg-statoverride命令 – 改写所有权和模式

    dpkg-statoverride命令是Debian linux下改写软件包状态的实用工具,dpkg-statoverride命令有3个基本功能即添加、删除、和显示改写列表。

    使用dpkg-statoverride命令删除改写后,如果希望恢复旧的权限,需要手工设置权限或重新安装包含该文件的软件包。

    语法格式: dpkg-statoverride [参数]

    常用参数:

    -add为文件添加一个改写
    — -remove为文件删除一个改写
    — -list显示所有改写列表
    — -update如果文件存在,则立刻执行改写操作

    参考实例

    显示当前所有改写列表:

    [root@jiloc ~]# dpkg-statoverride --list

    修改文件夹的权限属性:

    [root@jiloc ~]# dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3

    强制修改文件夹的权限属性:

    [root@jiloc ~]# dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

    将文件从数据库中删除:

    [root@jiloc ~]# dpkg-statoverride --remove /usr/bin/wall
  • dpkg-split命令 – 分割软件包

    dpkg-split命令用来将Debian linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。

    dpkg-split命令只能在Debian系统上使用,因为他需要调用dpkg-deb命令分析软件包的组成。

    语法格式: dpkg-split [参数] [软件包]

    常用参数:

    -S设置分割后的每个小文件最大尺寸(以字节为单位)
    -s分割软件包
    -j<分块文件><分块文件>把各个分块合并到一起
    -I<分块文件>显示分块文件的相关信息
    -l列出不匹配的部分
    -dscard<文件名>忽略不匹配的部分

    参考实例

    分割软件包:

    [root@jiloc ~]# dpkg-split -s gcc-4.5.deb

    以2MB为单位分割文件:

    [root@jiloc ~]# dpkg-split -S 2048 -s gcc-4.5.deb

    合并GCC软件包:

    [root@jiloc ~]# dpkg-split -j gcc-4.5.*
  • apt-sortpkgs命令 – 排序软件包索引文件

    apt-sortpkgs命令是Debian linux下对软件包索引文件进行排序的简单工具。

    该命令会获取索引文件(源索引或包索引)并对记录进行排序,它还将根据内部排序规则对每个记录的内部字段进行排序。

    语法格式: apt-sortpkgs [参数] [文件]

    常用参数:

    -c指定要使用的配置文件
    -s使用源索引字段排序
    -o设置配置选项
    -h显示帮助信息

    参考实例

    排序软件包(Packages)索引文件:

    [root@jiloc ~]# apt-sortpkgs Packages

    使用指定的配置文件进行操作:

    [root@jiloc ~]# apt-sortpkgs -c Packages

    使用源索引字段进行排序:

    [root@jiloc ~]# apt-sortpkgs -s Packages
  • apt-key命令 – 管理APT软件包的密钥

    apt-key命令用于管理Debian Linux系统中的软件包密钥。每个发布的Debian软件包都是通过密钥认证的,apt-key命令用来管理Debian软件包密钥。

    语法格式: apt-key [参数]

    常用参数:

    add filename从文件中加载新的密钥到被信任的密钥中
    del kid从被信任的密钥中删除指定密钥
    export keyed将指定的密钥输出到标准输出设备
    exportall将所有密钥输出到标准输出设备
    list显示被信任密钥
    finger显示被信任密钥的指纹
    adv向pgp传递高级特性
    update通过key包来更新key

    参考实例

    列出已保存在系统中key:

    [root@jiloc ~]# apt-key list

    把下载的key添加到本地trusted数据库中:

    [root@jiloc ~]# apt-key add keyname

    从本地trusted数据库删除key:

    [root@jiloc ~]# apt-key del keyname

    更新本地trusted数据库,删除过期没用的key:

    [root@jiloc ~]# apt-key update
  • Windows10 WSL2 Ubuntu 宝塔面板无法打开 无法链接host网络 解决办法 图文教程

    Windows10 WSL2 Ubuntu 宝塔面板无法打开 无法链接host网络 解决办法 图文教程

    今日在windows10系统上安装了wsl2,之后安装了ubuntu的系统,在Ubuntu系统上安装了宝塔面板。但是发现ubuntu与win10之间无法进行网络通讯,面板更加无法打开。

    试了各种方法,最后找到了解决方法,这里记录一下。

    在win10的powershell上,使用管理员命令运行如下命令:

    netsh winsock reset 
    netsh int ip reset all
    netsh winhttp reset proxy
    ipconfig /flushdns

    之后重启windows系统即可。

  • CentOS、Ubuntu、Debian依赖源配置

    CentOS、Ubuntu、Debian依赖源配置

    本文档以配置阿里云源为例,可将地址替换为其它源,如清华:mirrors.tuna.tsinghua.edu.cn

    CentOS 7 yum源

    rm -rf /etc/yum.repos.d/*.repo #删除repo文件,或者自己备份
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum makecache #更新缓存

    CentOS 6 yum源

    rm -rf /etc/yum.repos.d/*.repo #删除repo文件,或者自己备份
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum makecache #更新缓存

    Ubuntu 18 apt源

    mv /etc/apt/sources.list{,bak} #备份sources.list
    cat > /etc/apt/sources.list << EOF
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    EOF
    apt update

    Ubuntu 16 apt源

    mv /etc/apt/sources.list{,bak} #备份sources.list
    cat > /etc/apt/sources.list << EOF
    deb http://mirrors.aliyun.com/ubuntu/ xenial main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    EOF
    apt update

    Debian 9 apt源

    mv /etc/apt/sources.list{,bak} #备份sources.list
    cat > /etc/apt/sources.list << EOF
    deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
    deb http://mirrors.aliyun.com/debian-security stretch/updates main
    deb-src http://mirrors.aliyun.com/debian-security stretch/updates main
    deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
    deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
    EOF
    apt update

    Debian 8 apt源

    mv /etc/apt/sources.list{,bak} #备份sources.list
    cat > /etc/apt/sources.list << EOF
    deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
    deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
    EOF
    apt update
WeChat