Aliyun Cloud Server Envionment Preparation

环境搭建

购买了一款Ubuntu系统的阿里云服务器,简单记录下部分环境搭建过程。

一、远程连接

AccessKey, AccessSecret(可选)

阿里云提供客户端便于管理实例,使用客户端需要密钥,通过阿里云官网可以进行申请,详情参考文档。

ssh端口修改和用户登录限制(可选)

默认阿里云root用户可以ssh登录到服务器,端口号默认为22,均需要修改

sudo vim /etc/ssh/sshd_config

修改后重启,并需要在阿里云控制台对服务器防火墙规则进行修改,开放相关端口方可远程连接。

# 重启sshd
service sshd restart
ssh -p PORT [USERNAME]@[IP]

为了提高安全性,还可以添加密钥验证。

ssh密钥登录服务器

  1. 在本地生成密钥对
ssh-keygen

安全起见,创建密钥对时设置密钥口令。

  1. 将公钥(xxx.pub)上传到服务器

    参考命令:cat id_rsa.pub » ~/.ssh/authorized_keys

  2. 服务器端配置允许RSA密钥登录

    在配置文件/etc/ssh/sshd_config中添加如下配置:

    RSAAuthentication yes
    PubkeyAuthentication yes
    
  3. (可选)禁用密码登录

  4. 重启SSH服务

    service sshd restart
    

二、用户和组

新建组

groupadd -g 1314 testgroup

新建用户

useradd -g testgroup testuser
passwd testuser
# 指定用户登录默认终端为bash
chsh -s /bin/bash testuser

新建sudo用户

visudo

……

三、开发环境

  • Python安装Anaconda

  • Java

  • Scala

四、代理服务

  • nginx

nginx安装

apt install nginx

执行完上述命令,访问[IP]:80看到如下界面说明nginx服务已正常运行

默认情况下,nginx服务开机自启。

systemctl list-unit-files | grep nginx

配置静态图片资源服务代理

server {
    listen YOUR_PORT;
    server_name IP_OR_DOMAIN;
    root ROOT_PATH_OF_RESOURCES;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
        autoindex off;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        access_log off;
        add_header Cache-Control "public";
    }

}

通过autoindex off关闭目录索引避免别人直接查看目录内的文件列表

配置SSL证书

数字证书管理服务商店购买或申请SSL证书,申请到证书后,以阿里云Nginx部署为例,下载证书公私钥文件部署到服务器上,修改Nginx配置,详细部署说明可参考文档

一种示例配置如下(实际部署时选择高安全性的加密套件,并且视需求而定可以关闭80端口或者将80端口的http请求强制改写为https请求,本人选择前者):

server {
        #HTTPS的默认访问端口443
        #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
        listen 443 ssl;
        #填写证书绑定的域名
        server_name <yourdomain>;        

        #填写证书文件绝对路径
        ssl_certificate      "/etc/nginx/conf.d/cert/cert.pem";
        #填写证书私钥文件绝对路径 
        ssl_certificate_key  "/etc/nginx/conf.d/cert/cert.key";

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        #默认加密套件
        ssl_ciphers  HIGH:!aNULL:!MD5;

        #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
        #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
        #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        #表示优先使用服务端加密套件。默认开启
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

五、容器服务

  • docker

    sudo apt  install docker.io
    

六、数据库服务

  • PgSQL

  • MySQL

  • MongoDB

  • Redis

  • ……

PostgreSQL

编译安装postgresql

由于个人电脑pgsql采用版本15,故服务器上选择安装pgsql 15, 你也可以到PostgreSQL: File Browser选择一个你需要的版本.

axel https://ftp.postgresql.org/pub/source/v15.6/postgresql-15.6.tar.gz

下载完后解压压缩包,执行configure脚本检测系统的特性(系统类型和版本、编译器、依赖库的可用性等)并设置pgsql软件包的配置文件(Makefile)以适应系统

postgresql-15.6.tar.gz
./configure --prefix=/opt/spacetimelab/software_repo/postgresql15.6

遇到错误提示缺失readline库,执行如下命令安装,安装完成后再执行上一条命令。

sudo apt install libreadline-dev
make
make install

安装完成后,创建数据目录和系统内的数据库用户:

mkdir -p /data/postgresql/

useradd postgres

chown -R postgres /data/postgresql

创建数据库以验证基本命令可以正常执行

# 初始化数据目录
initdb -D /data/postgresql
# 启动数据库服务
pg_ctl -D /data/postgresql start
# 创建测试数据库
createdb testdb
# 连接测试数据库
psql testdb

至此无问题,编译安装过程也没报错,说明pgsql正常安装完成。后续还需编译安装postgis插件,更改postgres配置项提高安全性,此处暂略。

关于常见配置
服务端口

要更改服务端口,仅需修改配置文件再重启服务。

pg_ctl -D /data/postgresql restart
远程连接IP

pg_hba.conf, postgresql.conf

Redis

Redis服务安装

Install Redis on Linux | Redis

sudo snap install redis

常见redis配置文件位置:/etc/redis/redis.conf

默认日志文件位置:/var/log/redis

注意:使用不同方式安装的redis配置文件位置不同,具体的可以通过命令查看。

通过redis
Redis客户端工具安装

redis-tools包含一些常用的Redis工具集合,提供很多命令来管理和操作Redis,执行客户端操作:如发送命令、查看服务状态、故障排除等。

sudo apt install redis-tools

redis-cli常用方式
  • 连接远程redis

    redis-cli -h host -p port -a password
    
  • 发送命令

    redis-cli set test 1
    redis-cli get test
    

  • 修改密码

    CONFIG SET requirepass YOUR_PASSWORD
    

  • ……

redis默认服务端口修改

配置文件、客户端ip白名单等均可在配置文件中修改。

重启redis后生效

systemctl restart redis
ACL(访问控制列表)

创建用户
ACL setuser USER
ACL setuser USER on
ACL setuser USER >PASSWORD

ES

docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.0

docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.13.0
sudo docker run --name es01 --net elastic -p 9200:9200 -it -d  elasticsearch:8.13.0
sudo docker pull kibana:8.13.0

七、其他

  • 浏览器驱动

  • Spark

  • ……

Gitlab

配置不足以启动Gitlab

Spark

https://spark.apache.org/downloads.html

Apache Spark 是一个用于大规模数据处理的统一分析引擎。它提供了 Scala、Java、Python 和 R 的高级 API,并且拥有一个优化的引擎,支持用于数据分析的通用计算图。此外,Spark 还支持一系列丰富的高级工具,包括用于 SQL 和 DataFrames 的 Spark SQL,用于 pandas 工作负载的 pandas API,用于机器学习的 MLlib,用于图处理的 GraphX,以及用于流处理的 Structured Streaming。

Ubuntu下安装Spark

先安装java环境,简单起见可以:

sudo apt install default-jre

直接从官网下载https://dlcdn.apache.org/spark/spark-3.5.1/spark-3.5.1-bin-hadoop3.tgz

进行解压:

tar -xvf spark-3.5.1-bin-hadoop3.tar

配置环境变量:

export SPARK_HOME=/path/to/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

使环境变量生效:

source ~/.bashrc
Spark配置

默认情况下,conf目录下有相关配置文件的模板:

fairscheduler.xml.template
log4j2.properties.templat
metrics.properties.template
spark-defaults.conf.template 
spark-env.sh.template
workers.template
  • spark-env.sh

    这个文件用于设置 Spark 环境变量。你可以在这个文件中配置 JVM 选项、内存设置、以及其他与环境相关的配置。

  • spark-defaults.conf

    默认配置。

  • workers

    列出集群中所有Worker节点的主机名或IP地址。每个主机名或 IP 地址应该占一行。

  • log4j2.properties

    配置Spark的日志记录行为。你可以在这个文件中设置日志级别、日志格式、日志输出位置等。

  • metrics.properties.template

    设置 Spark 应用程序的指标收集和报告。这个文件的目的是定义如何收集和导出应用程序的度量信息,例如任务执行时间、内存使用情况、垃圾回收信息等。

  • ……

PySpark

pyspark · PyPI

pip install pyspark -i https://mirror.baidu.com/pypi/simple

MLlib
GraphX
CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发