万恶之源

开始建站

研究所一个医科生、一个挖下水道的、一个整理档案的,所以建站这事情就安排给了我这个学SE的,时间是大一的暑假,正好在做全国大学生嵌入式芯片与系统设计竞赛,竞赛要求中要做AES数据加密,并且要在网页上显示数据。所以就买了这个服务器,也就有了现在你看到的这篇文章,中间也踩了不少坑,创建TCP链接却习惯性的把内网地址填成了127.0.0.1,折腾了4天才解决,第一份成功链接TCP的代码如下,谨以此为纪念。

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
from Crypto.Cipher import AES
import base64

class MyAES:
def __init__(self, key, iv):
self.key = bytes(key, encoding='utf8')
self.iv = bytes(iv, encoding='utf8')
self.mode = AES.MODE_CBC

def my_encrypt(self, text):
my_aes = AES.new(self.key, self.mode, self.iv)
length = 16
count = len(text)
self.padding = length - (count % length)
text = text + (chr(self.padding) * self.padding)
text = bytes(text, encoding='utf8') # 加密的文本必须是bytes
cipher_text = my_aes.encrypt(text)
# 统一把加密后的bytes转化为base64
return str(base64.b64encode(cipher_text), encoding='utf8')

def my_decrypt(self, text):
my_aes = AES.new(self.key, self.mode, self.iv)
plain_text = my_aes.decrypt(base64.b64decode(bytes(text, encoding='utf8')))
return str(plain_text, encoding='utf8').rstrip(chr(self.padding))
AES=MyAES("123456","0")
AES.my_decrypt("ft3z4YPgg90oIiCS/Pu76JxAwww7gCjJ")

购买了服务器后,一开始为了图省事,就装了Windows Server 2010 系统,全部都是GUI操作,加上现学的PHP,就完成了下图的网页。

嵌入式作品网页
嵌入式作品网页

嵌入式作品网页

做的也很简单,就是实现了从数据库里读数据、画表、动态网页,也算是第一个网页。至于为什么本站的域名是这个,本来想注册https://nichijou.com这个域名,发现被其他肠粉注册了,所以就在后面添上了-lab,注册了这个域名,结果现在变成了我的私有域名。在做完比赛后,有段时间没有去碰服务器就让服务器空转吃灰了,下图为nichijou.com网站截图。

nichijou.com内容
nichijou.com内容

系统转为CentOS

在2019年,实验室多了两个靓仔也要搞服务器,想了想Windows Server过捞,于是就没想太多,把网站资料拷出来后把系统干成了CentOS,中途也踩了不少坑,感谢建站过程中帮助我的小伙伴们,以上过去一年的碎碎念,以下为建站记录。

CentOS服务器建站记录

警告 本教程适用的环境可能有变化,请根据实际情况修正

GCC安装

gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行,并且很多软件都需要依赖高版本的GCC作为支持。本人在阿里云服务器上尝试了编译7.2 7.3 9.1 版本但均未通过实际编译,7.1通过了编译并运行成功,故接下来的教程将以GCC 7.1为例。

GCC下载站:https://mirrors.ustc.edu.cn/gnu/gcc

  • 首先创建GCC安装包下载的文件夹并将7.1的安装包下载到文件夹并解压
1
2
3
cd /usr/download/
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.gz
tar -zxvf gcc-7.1.0.tar.gz
下载并解压GCC
下载并解压GCC
  • 打开文件夹并安装依赖项目,因为gcc依赖了mpfr、gmp、mpc 、isl共四个库,所以需要提前配置。有两种办法,一种是手动安装,另一种可以使用GCC自带的脚本进行一键安装。
1
2
cd gcc-7.1.0
./contrib/download_prerequisites
安装GCC依赖
安装GCC依赖
  • 出现“All prerequisites downloaded successfully.”即说明GCC环境依赖全部部署完成,接下来在GCC文件夹内创建build文件夹用于编译,并输入以下命令创建makefile文件。
1
2
3
mkdir build
cd build
../configure --prefix=/usr --enable-multilib --enable-languages=c,c++ -disable-multilib
创建makefile文件
创建makefile文件
  • makefile文件生成完毕没有错误后就可以开始make编译,这里不推荐多线程编译容易失败,输入以下命令即可完成。
1
2
make
make install
make编译
make编译
  • 上文安装部分设置了prefix=/usr 所以会自动安装到/usr/bin目录文件夹并替代原有的GCC,出现以下提示即说明GCC安装完成。
make install 安装
make install 安装
  • 想要测试当前升级的GCC是否安装成功并应用到全局可以输入以下命令查看当前版本
1
gcc -v
GCC 版本测试
GCC 版本测试

Python3安装

Centos服务器系统默认只有Python2环境,因为系统底层原因及相关依赖我们无法粗暴的将Python2升级到Python3,会导致相关软件无法正常运行,所以常见的解决方案为安装Python3并创建系统软链接,使得系统默认Python仍然指向Python2版本,新增python3和pip3指向python3。

Python源码下载站:https://www.python.org/ftp/python/

  • 安装相关的依赖库
1
2
3
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
  • 下载Python的安装包文件并解压到本地
1
2
3
cd /usr/download/
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar -xvJf Python-3.6.2.tar.xz
源代码下载并解压
源代码下载并解压
  • 完成解压后首先创建/usr/local/python3做编译使用,然后进入解压文件夹创建makefile文件并开始编译
1
2
3
4
mkdir /usr/local/python3
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install
make编译
make编译
  • 出现如下提示即说明软件安装完成
安装成功
安装成功
  • 创建软链接并进行测试Python3是否安装完成,之后系统需要使用Python3.6版本时输入Python3即可。
1
2
3
4
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
python3 -V
pip3 -V
测试安装结果
测试安装结果

MySql数据库

  • 安装MySQL源
1
2
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
sudo yum install mysql80-community-release-el7-1.noarch.rpm
MySQL服务运行信息
MySQL服务运行信息

Screen窗口管理工具

作为会话管理及切换工具,Screen体积小且安装简单,也能在关闭窗口后继续保持回话状态
具体的命令集请参见https://www.imooc.com/article/17788?block_id=tuijian_wz

1
2
yum install screen -y
rpm -qa|grep screen

NodeJS 安装

1
2
3
4
5
6
7
yum -y install gcc gcc-c++ kernel-devel
wget https://nodejs.org/dist/v8.11.3/node-v8.11.3.tar.gz
tar -xzf node-v8.11.3.tar.gz
cd node-v8.11.3
./configure
make
make install
程序编译
程序编译
1
2
node -v
npm -v

运行测试命令出现npm与nodejs版本即说明安装成功

安装检查
安装检查