Cloud

前言

​ 写之前,谈一谈本人的心路历程吧。最近这段时间,由于备考压力略大,我在闲暇之余总是想偷偷做点什么东西玩玩。而在之前的博客也提到,我弄到了一台服务器的普通账号,这台服务器呢带宽够足、GPU性能强劲、

内存也算不错,总之比云主机强一万倍。因此呢,我走上了一条不归路,把我的休息时间大部分折腾在了这台服务器上。但是呢,这段时间也算是摸索出了很多Linux的知识吧,马克思诚不我欺也,实践是检验整理的唯一标准。


2020.09.16Update

SakuraFrp目前需要实名认证才能开启http且需要端口80(即须是root用户),且每个账户有流量限制了一个月好像25G。以后有公网服务器再来更新

目的

​ 在最初折腾之前呢,主要目的是视频服务器+离线下载,但后来衍生出了一些新需求,在折腾的路上停不下来,主要目的有以下几点:

  • 私人云盘s
  • 离线下载服务器
  • 建副站
  • 视频服务器

1.环境配置

首先呢,当你拿到一台服务器的时候你需要知道它是什么架构的?它的各方面性能怎么样?能使用工具有哪些?

1.1了解系统信息

你可以采用如下几种方式:

  • uname命令
1
2
XXXXX@ubuntu:~$ uname -a
Linux ubuntu 4.15.0-29-generic #31~16.04.1-Ubuntu SMP Wed Jul 18 08:54:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • lsb_release命令
1
2
3
4
5
6
XXXXX@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
  • 查看/proc/version文件
1
2
XXXXX@ubuntu:~$ cat /proc/version
Linux version 4.15.0-29-generic (buildd@lcy01-amd64-024) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)) #31~16.04.1-Ubuntu SMP Wed Jul 18 08:54:04 UTC 2018
  • 查看/etc/os-release文件
1
2
3
4
5
6
7
8
9
10
11
XXXXX@ubuntu:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial

通过以上,你可以知道服务器的基本信息。

1.2了解硬件性能

​ 这里仅介绍些基本的信息

  • 内存
1
2
3
4
XXXXX@ubuntu:~$ free -h
total used free shared buff/cache available
Mem: 31G 12G 448M 368M 18G 17G
Swap: 9.5G 7.2G 2.3G
  • CPU
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
XXXXX@ubuntu:~$ lscpu 
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz
Stepping: 2
CPU MHz: 2900.044
CPU max MHz: 3300.0000
CPU min MHz: 1200.0000
BogoMIPS: 5001.80
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0-11,24-35
NUMA node1 CPU(s): 12-23,36-47
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti intel_ppin ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts

如果想要更加详细信息,可以查看

1
cat /proc/cpuinfo
  • GPU
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
XXXXX@ubuntu:~$ nvidia-smi 
Fri Jul 31 19:00:20 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:02:00.0 Off | N/A |
| 52% 83C P2 154W / 250W | 5072MiB / 11019MiB | 69% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce RTX 208... Off | 00000000:03:00.0 Off | N/A |
| 24% 44C P2 60W / 250W | 1685MiB / 11019MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce RTX 208... Off | 00000000:82:00.0 Off | N/A |
| 23% 43C P2 54W / 250W | 1685MiB / 11019MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 3 GeForce RTX 208... Off | 00000000:83:00.0 Off | N/A |
| 23% 42C P2 63W / 250W | 1685MiB / 11019MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+__+太猛了,四块2080Ti
+-----------------------------------------------------------------------------+
  • 硬盘
1
2
3
4
5
6
7
8
9
10
11
XXXXX@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.2G 332M 2.9G 11% /run
/dev/sdc6 429G 331G 77G 82% /
tmpfs 16G 265M 16G 2% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sdc1 1.9G 128M 1.7G 8% /boot
/dev/sdb1 881G 512G 324G 62% /data
/dev/sda1 7.3T 1.4T 5.5T 20% /mnt/data

1.3了解环境信息

​ 这阶段,我主要是了解一些节本的工具信息,比如gcc版本、有没有数据库、docker之类的。结果大失所望,管理员啥也没装,就给了个gcc

1
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)

​ 不得不说,我的内心是崩溃,这台机器估计就是专门拿来跑深度学习的,基本上除了linux自带的什么都没有,关键是我并联系不上管理员,所以这就开启了我的悲催之路,我的所有依赖都是手动编译安装的=^=,我多么希望我是个Geeker,把root的密码给黑了,哎。。。


先写到这里,回头再补充!

2.安装Aria2

3.安装Nginx+PHP

3.1 Nginx

3.1.1 编译
1
./configure --with-http_ssl_module --prefix=/home/tongshun/byp/app/nginx_new --with-pcre=/home/tongshun/byp/download/pcre/pcre-8.00 --with-openssl=/home/tongshun/byp/devel/openssl --with-zlib=/home/tongshun/byp/download/zlib-1.12.1
3.1.2 防坑指南
  • 编译nginx需要pcre(正则表达式支持)、zlib、openssl三个库支持,你需要提前安装opensssl

  • 最好提前把ssl模块编译上去

    1
    2
    3
    4

    - **nginx配置openssl路径**

    在这个过程中你可能会遇到

    [$prefix /.openssl/include/openssl/ssl.h] Error 127

    1
    2
    3
    4
    5
    6

    这是由于我们的openssl安装目录之后下并没有./openssl

    所以你需要:

    - 在nginx源码目录中,找到```./auto/lib/openssl/conf
    • 找到这么一段代码:

      1
      2
      3
      4
      5
      CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
      CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
      CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
      CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
      CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

      替换为:

      1
      2
      3
      4
      5
      CORE_INCS="$CORE_INCS $OPENSSL/include"
      CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
      CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
      CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
      CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
  • –with-pcre –with-zlib

    • 这个后面接的是源码的位置,而不是你编译后安装的位置!

      如果你使用了安装后的位置,你会出现./configure is not found,因为nginx会去寻找源码,而你编译安装后的目录是没有configure的

    1
    --with-pcre=/home/tongshun/byp/download/pcre-8.00
    • 源码的位置需重新下载,不能使用编译过的

      1
      wget XXXXXXXX

      否则你会出现make一半,会列出configure list summary,然后无故结束。

      这个地方坑了我一晚上!

3.1.3 配置文件

3.2 PHP

3.2.1编译安装
1
./configure --prefix=/home/tongshun/byp/app/php-7.4.8 --enable-fpm --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --enable-xml --enable-mbstring --enable-curl --with-libxml-dir --with-pdo-sqlite --with-png-dir --with-jpeg-dir --enable-gd --enable-libxml --enable-sqlite3 --enable-opcache --enable-zip --enable-json --enable-pcre --enable-mhash --enable-fileinfo --with-gettext --enable-postix --enable-ctype --enable-filter --enable-date --enable-dom --enable-Reflection --enable-standard --enable-SimpleXML --enable-Phar --enable-session --enable-SPL --enable-tokenizer --enable-PDO --enable-Core --with-openssl --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-ftp --enable-opcache

以上是我总结之后的安装,静态库编译。

3.2.2注意事项
  • 通过pkg-config配置编译环境

    e.g.

    1
    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/home/tongshun/byp/devel/sqlite3/lib/pkgconfig"

    请通过以上格式写入环境变量中。

  • enable 与 with的区别

  • 重要的扩展库

    扩展 释义
    –enable-fpm 这个是php-fpm的由来,请你务必勾选此选项
    -enable-mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd 此为mysql的扩展,如果你的php以后需要连接mysql,请务必勾选此项,因为php7的版本无法之后通过phpize编译扩展
    –enable-curl
    –with-zlib
3.2.3 编译动态扩展

如果你已经编译安装完成了,之后需要使用到某扩展,请通过以下形式安装动态扩展

  • 进入php资源目录下(源码目录)

  • 进入./ext/$你想要安装的扩展

  • 使用phpize命令

    1
    2
    #如果你没有添加环境变量,请使用绝对路径,例如
    /home/tongshun/byp/app/php-7.4.8/bin/phpize
  • configure

    1
    2
    #请使用绝对路径指定php-config目录
    ./configure --with-php-config=/home/tongshun/byp/app/php-7.4.8/bin/php-config
  • make && make install

  • 编辑php.ini

    1
    2
    # Add extension,e.g.
    extension = zlib.so
  • 重启php

4.私人云盘

​ 私人云盘致力于打造专属于你自己的云上空间,是一种很实用的工具,它可以让你独享你自己的资源,再也不用担心被限速、被和谐等等情况。目前呢,较为常用的有NextCloud、OwnCloud、Seafile、可道云等。由于我没有root权限、也没有docker,所以很多依赖库都得源码安装,因此选择了可道云来部署。

(等上岸了再来补充吧。。。。)

5.Sqlite+wordpress

  • 安装wordpress

  • 安装sqlite-integration

    1
    2
    3
    4
    5
    wget https://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip

    unzip sqlite-integration.1.8.1.zip

    mv sqlite-integration ./wp-content/plugins/
  • 修改wp-config.php

    1
    2
    3
    mv wp-config-sample.php wp-config.php

    vim wp-config.php

    原文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
    /** WordPress数据库的名称 */
    define('DB_NAME', 'database_name_here');
    /** MySQL数据库用户名 */
    define('DB_USER', 'username_here');
    /** MySQL数据库密码 */
    define('DB_PASSWORD', 'password_here');
    /** MySQL主机 */
    define('DB_HOST', 'localhost');
    /** 创建数据表时默认的文字编码 */
    define('DB_CHARSET', 'utf8');
    /** 数据库整理类型。如不确定请勿更改 */
    define('DB_COLLATE', '');

    修改后:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
    /** WordPress数据库的名称 */
    define('DB_NAME', 'MyBlog');//MyBlog<====这是数据库名,可以自定义
    /** MySQL数据库用户名 */
    define('DB_USER', '');
    /** MySQL数据库密码 */
    define('DB_PASSWORD', '');
    /** MySQL主机 */
    define('DB_HOST', 'localhost');
    /** 创建数据表时默认的文字编码 */
    define('DB_CHARSET', 'utf8');
    /** 数据库整理类型。如不确定请勿更改 */
    define('DB_COLLATE', '');
    //define('WP_ALLOW_REPAIR', true);//数据库修复时使用
    define('DB_TYPE', 'sqlite'); //mysql or sqlite`
  • 移动db.php至根目录

    1
    mv ./wp-content/plugins/sqlite-integration/db.php ./wp-content/

6.jupyter notebook

偶然发现这个东西挺有意思的,不仅是个web ide,而且还可以执行shell命令。强大!