首先,此次项目正好需要对某云服务商的帮助文档进行全文抓取,涉及到对图片进行转存,需要重新搭建一个图片服务器方便管理,也避免数据丢失,经过多方案尝试,最终选择如下的方法,话不多说,开始行动。

环境说明

  • 系统 Ubuntu 18.04
  • 已开放 21号端口(ftp),80号端口(http)

安装Nginx

安装所需依赖库

1
2
3
4
5
sudo apt-get update
sudo apt-get install build-essential # 安装gcc g++依赖库
sudo apt-get install libpcre3 libpcre3-dev # 安装prce依赖库
sudo apt-get install zlib1g-dev # 安装 zlib依赖库
sudo apt-get install openssl # 安装 ssl依赖库

编译Nginx

先下载Nginx对应的最新版本(linux\windows)
我当前的最新版本是:1.13.

1
2
3
4
5
6
tar -zxvf nginx-*   #解压下载下来的压缩包
cd nginx-* #进入解压目录
./configure --prefix=/usr/local/nginx #配置并生成makefile,自行配置安装位置
sudo make #编译
make install #安装
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动Nginx

此时Nginx就安装完成了,会使用默认的80端口启动,如果有启动,启动完成可直接通过服务器ip或者云解析的域名查看默认网页。

默认网页如图所示:

安装与配置vsftpd

1
2
sudo apt-get install vsftpd #安装vsftpd
sudo service vsftpd start #启动vsftpd服务

下面方法目的在于单独为ftp建立一个用户,并建立images文件夹存储图片

1
2
3
4
5
sudo mkdir /home/ftpuser    #新建ftpuser目录作为ftp主目录
sudo useradd -d /home/ftpuser -s /bin/bash ftpuser #新建ftpuser用户指定用户主目录
passwd ftpuser #设置用户密码
chown ftpuser /home/ftpuser #制定用户组
chmod 777 -R /home/ftpuser #为ftpuser下所有文件开放访问权限

新建文件/etc/vsftpd.user_list,用于存放允许访问ftp的用户

1
sudo nano /etc/vsftpd.user_list

文本中添加ftpuser用户名

编辑vsftpd配置文件

1
sudo nano /etc/vsftpd.conf

作如下修改

  1. 去除注释 write_enable=YES
  2. 末尾添加 userlist_file=/etc/vsftpd.user_list
  3. 末尾添加 userlist_enable=YES
  4. 末尾添加 userlist_deny=NO

保存,退出

重启vsftpd服务

1
sudo service vsftpd restart

用filezilla或其他ftp软件,并使用刚刚新建的用户名和密码访问测试是否成功。

创建存储图片的根目录

1
2
3
4
sudo su 
cd /home/ftpuser
mkdir -p www/images #这里使用www/images为例
mkdir /usr/local/nginx/html/images #在nginx目录下创建images目录
1
sudo nano /usr/local/nginx/conf/nginx.conf    #在默认的server里再添加一个location并指定实际路径

插入内容为:

1
2
3
4
location /images/ {
root /home/ftpuser/www/;
autoindex on;
}

停用与重新载入nginx

1
2
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

最后测试

简介

BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
BeautifulSoup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

CSS 选择器

通过标签名查找

1
2
print(soup.select('title'))
print(soup.select('a'))

通过类名查找

1
print(soup.select('.sister'))

通过id查找

1
print(soup.select('#link1'))

组合查找

1
2
print(soup.select('p #link1'))      #查找p标签中内容为id属性为link1的标签
print(soup.select("head > title")) #直接查找子标签(绝对路径)

属性查找

查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。

1
2
print(soup.select('a[class="sister"]'))
print(soup.select('a[href="http://example.com/elsie"]'))

MySQL安装

首先在命令行中输入三个命令:

1
2
3
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev

接下来确认系统是否已经安装上Mysql:
输入命令:mysql --help
出现如下一大串help,即为成功:

可以通过如下命令进入MySQL服务:
mysql -uroot -p
会让你输入密码,在安装的时候有时候会出现让你设置密码,有些是默认登录。

现在设置mysql允许远程访问,首先编辑文件 /etc/mysql/mysql.conf.d/mysqld.cnf:

1
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉bind-address = 127.0.0.1:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

保存退出,然后进入mysql服务,执行授权命令:

1
2
Grant all on *.* to 'root'@'%' identified by 'root用户的密码' with grant option;
flush privileges;

然后执行quit命令退出mysql服务,执行如下命令重启mysql:

1
service mysql restart

补充:在进入MySQL时,输入mysql -uroot -p命令时,会出现 > ERROR 1045 (28000): Access denied for user ‘root’@’localhost’这种情况。于是在网上查了许多技术网站,发现一篇不错的,据此解决。链接: https://blog.csdn.net/learner_lps/article/details/62887343

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

  • 系统支持:Ubuntu 12+
  • 虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
  • 内存要求:≥128M
  • 日期:2018 年 03 月 20 日

关于本脚本

  1. 本脚本已在 digitalocean 上的 VPS 全部测试通过。
  2. 当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
  3. 脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
  4. 由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

  1. 使用root用户登录,运行以下命令:

    1
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

    安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。

  2. 重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

    1
    uname -r

    查看内核版本,显示为最新版就表示 OK 了

  3. 检查点1

    1
    sysctl net.ipv4.tcp_available_congestion_control

    返回值一般为:

    1
    net.ipv4.tcp_available_congestion_control = bbr cubic reno
  4. 检查点2

    1
    sysctl net.ipv4.tcp_congestion_control

    返回值一般为:

    1
    net.ipv4.tcp_congestion_control = bbr
  5. 检查点3

    1
    sysctl net.core.default_qdisc

    返回值一般为:

    1
    net.core.default_qdisc = fq
  6. 检查点4

    1
    lsmod | grep bbr

    返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

0%