阿里云服务器初始化简记

推荐版本

CPU、内存、硬盘视活动而定,一般活动价99元一年

个人使用对CPU、内存、硬盘需求不大,无具体硬性要求。

双十一活动价99元一年,但不可99元续费。因为续费非常贵,个人使用可以到期后再重新申请一台云服务器并重新初始化,并迁移数据和资料。

注意带宽

有些低价活动中给的带宽非常有限,注意是否满足自己的使用需求。

云服务器具体设置建议
  1. 区域:建议选择自己所在城市;
  2. 建议关闭附送的全套安全监视,对个人使用其带来的收益非常有限,关闭可以节约系统的性能损耗。
  3. 登录方式可以设置为密码方式(该方式虽然安全性有所降低,但远程登录使用更方便),ecs-user登录即可。注意:云服务器可以在公网使用密码登录,所以,登录密设置一定要满足强度。
系统推荐CentOS 7.9

CentOS 7 作为长期支持版本(LTS),CentOS 7享有广泛的用户基础和长期的官方支持周期,这意味着它经历了长时间的市场检验,积累了大量的软件包更新和安全补丁,稳定性与可靠性较高。特别是在生产环境中,很多用户倾向于选择CentOS 7,因为它提供了一个稳定的软件生态系统,便于维护和管理。

虽然CentOS 8已经推出,但由于CentOS项目在2020年底宣布停止对CentOS 8的长期支持,转而推荐用户使用CentOS Stream,这导致了许多用户对CentOS 8的使用持谨慎态度。

推荐最新稳定版本:一般来说,选择最新发布的稳定版本(如7.9)更为推荐。这是因为新版本通常包含了旧版本以来的所有重要更新、安全修复以及性能改进。使用最新版本可以确保系统具有最新的安全防护,减少潜在的安全风险。

本地系统推荐MacOS+iTerm2

具体参见:Mac OS系统使用笔记,涉及的相关内容全文搜索对应关键字即可。

  1. 终端使用iTerm2;
  2. 设置ssh连接可以复用之前的连接;
  3. 使用命令 ssh ecs-user@公网IP 即可远程登录,首次登录需要输入密码;
本地系统推荐Win11+Linux子系统

具体参见:Win10 & Win11 安装和使用手记

  1. 终端使用Linux子系统,如Ubuntu;
  2. 可选:设置ssh连接可以复用之前的连接;(需要参考上文MacOS部分设置)
  3. 使用命令 ssh ecs-user@公网IP 即可远程登录
推荐开发环境Nginx+Python+MySQL

考虑到个人使用场景,为了追求极致的轻量级,易于开发、部署和管理,推荐以下开发环境组合:

  1. Nginx:作为高性能的HTTP和反向代理服务器,Nginx以其低内存消耗、高并发处理能力和稳定性著称。它适合用于搭建简单且高效的Web服务器、提供静态文件服务、实现负载均衡等功能。

  2. Python:作为一门易学易用、功能强大的编程语言,Python拥有丰富的Web开发框架和库。推荐使用Flask,因为它轻量、灵活且易于上手,可以快速构建功能丰富的Web应用,同时保持代码结构清晰。

  3. MySQL:作为一款广泛使用的开源关系型数据库管理系统,MySQL提供稳定的数据存储和查询能力,足以应对大部分数据管理需求,且其资源占用相对较低。

机器和系统基本状况

测试网速

speedtest-cli 是一个用 Python 编写的轻量级 Linux 命令行工具,基于 Speedtest.net 的基础架构来测量网络的上/下行速率。

安装:

wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod a+rx speedtest.py
sudo mv speedtest.py /usr/local/bin/speedtest

直接执行命令 speedtest 测试网速,使用实例:

speedtest
Retrieving speedtest.net configuration...
Testing from Hangzhou Alibaba Advertising Co. (xx.xx.xx.xx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by China Mobile Group Beijing Co.Ltd (Beijing) [0.43 km]: 8.8 ms
Testing download speed................................................................................
Download: 110.95 Mbit/s
Testing upload speed................................................................................................
Upload: 3.76 Mbit/s
设置Vim显示中文

分别编辑自己和root的vim配置文件:

vi ~/.vimrc
sudo vi /root/.vimrc

写入如下内容:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set encoding=utf-8
其他系统状态监控和常见操作

参见:linux常用命令,目录索引或者全文搜索。

MySQL

推荐5.7版本

MySQL 5.7 是目前最为稳定的版本之一,被许多企业广泛使用。相比早期版本有显著性能、安全性和可靠性的提升。

MySQL 8.0 是最新的稳定版本,提供了性能、安全性、可靠性方面的大幅提升。特别在大规模数据存储和处理方面表现优秀。

安装
sudo yum update -y

# CentOS系统默认仓库可能不包含MySQL 5.7,需要添加MySQL官方的Yum仓库。
sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

sudo yum install mysql-community-server -y
安装提示错误:“GPG 密钥已安装,但是不适用于此软件包”

执行以下命令安装正确的MySQL GPG密钥,然后,重新安装MySQL 5.7:

# 移除已安装的MySQL GPG密钥
sudo rpm -e gpg-pubkey --allmatches --noprompt

# 获取最新的GPG公钥文件并导入
wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo rpm --import RPM-GPG-KEY-mysql-2022

# 更新Yum缓存
sudo yum clean all
sudo yum makecache

# 重新安装MySQL 5.7
# sudo yum install mysql-community-server -y
配置和使用

在云服务器终端上执行:

# 启动MySQL服务
sudo systemctl start mysqld

# 设置为自动启动
sudo systemctl enable mysqld

# 查找生成的root临时密码
sudo grep 'temporary password' /var/log/mysqld.log

# 使用刚才找到的临时密码登录MySQL
mysql -u root -p

在MySQL命令行执行:

# 使用root临时密码登录后,首先需要重新设置root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '<强密码(包含数字、大写字母、小写字母、特殊字符)>';

# 查看每个用户的详细权限信息
SHOW GRANTS;

其他优化操作,如binlog和慢查询优化等,参见:https://blog.csdn.net/zhiyuan411/article/details/6892164#6. 对my.cnf的优化

更多MySQL命令参见:mysql命令

Python

Python版本

系统默认已经安装好Python2和Python3版本,分别为:

python --version
Python 2.7.5

python3 --version
Python 3.6.8

如无特殊要求,推荐Python3版本。(如果需要对老旧的库和技术兼容则使用Python2版本)

安装和使用Web框架Flask

可选:创建并激活虚拟环境

mkdir my_flask_project
cd my_flask_project
python3 -m venv venv

source venv/bin/activate

安装Flask:

sudo pip3 install Flask

验证安装是否成功,首先执行python3,进入Python3交互环境;然后,在Python提示符下输入:

import flask
flask.__version__
exit()
使用Flask实现Web服务

使用示例参见:https://blog.csdn.net/zhiyuan411/article/details/7108836#2)Flask

安装并使用Gunicorn来部署Flask服务

安装Gunicorn:

sudo pip3 install gunicorn

使用Gunicorn命令来启动Flask应用:

# 假设Flask应用入口点在test.py文件中,且应用实例名为app
gunicorn --workers=2 --bind=0.0.0.0:8080 test:app

# Gunicorn其他常用参数包括:
# -t SEC: 设置请求超时时间(秒)。
# -k WORKER_CLASS: 选择工作进程类型,如sync(默认)、gevent、eventlet等。
配置Supervisor来监视Web服务运行

test.py的同级目录中创建 Gunicorn 配置文件 (gunicorn.conf.py),内容如下:

import os

bind = "0.0.0.0:8080"  # 监听的 IP 和端口
workers = 2  # 根据实际情况调整工作进程数
worker_class = "sync"  # 或选择其他 worker 类型,如 "gevent", "eventlet", "tornado"

# 指定日志文件路径
accesslog = "/var/log/gunicorn-app-access.log"
errorlog = "/var/log/gunicorn-app-error.log"

# 其他可能需要的配置项,如 timeout、keepalive、preload_app 等
# ...

安装Supervisor:

# 添加EPEL(Extra Packages for Enterprise Linux)仓库
sudo yum install -y epel-release

# 安装Supervisor
sudo yum install -y supervisor

/etc/supervisord.d目录下创建一个名为gunicorn.ini的文件:sudo vi /etc/supervisord.d/gunicorn.ini,其内容为:

[program:gunicorn]
# 替换为实际配置文件路径
command=/usr/local/bin/gunicorn -c /path/to/my_flask_app/gunicorn.conf.py test:app
# Python应用程序所在目录
directory=/path/to/my_flask_app
# user=root  # 根据实际情况选择合适的用户
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/gunicorn-err.log
stdout_logfile=/var/log/gunicorn-out.log
# environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8  # 根据需要设置环境变量

更新Supervisor配置,使用Supervisor启动Gunicorn服务:

sudo supervisorctl reread
sudo supervisorctl update

sudo supervisorctl status
# sudo supervisorctl start gunicorn
其他

如Python语法和常用操作、实例等,参见:Python简记

Django Web框架(重量级全栈框架,个人使用场景不推荐),参见:Django学习笔记

Nginx

安装

安装Nginx:

# 添加EPEL(Extra Packages for Enterprise Linux)仓库
sudo yum install -y epel-release

# 安装Nginx
sudo yum install -y nginx

启动Nginx服务并设置为开机自启动:

# 启动
sudo systemctl start nginx

# 设置为自启动
sudo systemctl enable nginx

验证Nginx服务正常运行:

systemctl status nginx
更多Nginx参数和命令

每次变更配置文件后,执行如下命令:

# 测试配置文件
sudo nginx -t

# 重新加载配置文件
sudo nginx -s reload

更多参数和配置内容,参见:Nginx学习记要

配置静态Web服务器

创建网站根目录:

# 默认网站根目录为:/usr/share/nginx/html
# sudo mkdir -p /var/www/html

# 更改权限,便于使用
sudo chmod -R 777 /usr/share/nginx/html

编辑Nginx配置文件:sudo vi /etc/nginx/nginx.conf,找到http块下的server块,修改root属性值为网站根目录即可。server块示例:

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}
配置动态Web服务器

将gunicorn改为不对外提供服务,修改绑定地址为本机地址:gunicorn --workers=4 --bind=127.0.0.1:8080 test:app

编辑Nginx配置文件:sudo vi /etc/nginx/nginx.conf,找到http块下的server块,添加转发到8080服务的内容。server块示例:

server {
    listen       80;
    listen       [::]:80;
    server_name  _;
    root         /usr/share/nginx/html;

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    
    # 转发到Gunicorn的接口,移除请求路径中的"/pybackend/"前缀
    location /pybackend/ {
        proxy_pass http://127.0.0.1:8080/;  # 注意末尾的斜杠是用于移除匹配部分
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
	
	    # 如果接口支持WebSocket,添加以下内容
	    # proxy_http_version 1.1;
	    # proxy_set_header Upgrade $http_upgrade;
	    # proxy_set_header Connection "upgrade";
	}
    
}

其他Web服务开发架构

Go

Go语言标准库本身就包含了完善的HTTP服务器实现,当然,也可以部署在反向代理服务器(如Nginx、Apache等)之后提供Web服务。

具体参见:
Go简记
https://blog.csdn.net/zhiyuan411/article/details/100110910#带HTML页面的Web Server
https://blog.csdn.net/zhiyuan411/article/details/100110910#一个使用了日志,数据库,并提供JSON格式返回数据的HTTP接口服务的实例

Apache/lighttpd+PHP
# 更多参见:https://httpd.apache.org/
sudo yum install httpd -y # 安装Apache

# 更多参见:https://www.lighttpd.net/
sudo yum install lighttpd -y

PHP相关,参见:PHP语法摘要

Tomcat+Java(Spring)
# 默认不带Java环境,需要手动安装
sudo yum install java-1.8.0-openjdk-devel  # 安装Java 8开发环境

# 下载所需版本后解压配置权限即可。更多参见:https://tomcat.apache.org/
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz

Java(Spring)后端和前端(一般配合完整的JS框架)都非常重量级,内容非常多。部分主要内容可以参考以下资料:

  1. Java 8 简记
  2. Java代码片段留存
  3. Spring Bean
  4. SpringBoot整合MyBatis从零开始
  5. Vue及Element UI&vue-element-admin简记

相关推荐

  1. 阿里服务器初始化简记

    2024-03-31 12:06:03       30 阅读
  2. 阿里服务 安装 Docker

    2024-03-31 12:06:03       43 阅读
  3. 阿里OSS 公共服务

    2024-03-31 12:06:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 12:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 12:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 12:06:03       82 阅读
  4. Python语言-面向对象

    2024-03-31 12:06:03       91 阅读

热门阅读

  1. 微信小程序渲染有问题

    2024-03-31 12:06:03       40 阅读
  2. Python100个库分享第4个—difflib

    2024-03-31 12:06:03       41 阅读
  3. Golang基础-7

    2024-03-31 12:06:03       34 阅读
  4. C# serialPort

    2024-03-31 12:06:03       34 阅读
  5. Python 变量、数据类型、数据类型的转换介绍

    2024-03-31 12:06:03       35 阅读
  6. zookeeper--znode数据结构详解

    2024-03-31 12:06:03       37 阅读
  7. 大AI与小AI盈利点在哪里?AI积木与图谱视角

    2024-03-31 12:06:03       39 阅读
  8. TYPORA笔记

    2024-03-31 12:06:03       44 阅读
  9. Concul 配置中心 微服务的配置

    2024-03-31 12:06:03       37 阅读
  10. python 报错问题汇总

    2024-03-31 12:06:03       39 阅读
  11. K8S 运维管理

    2024-03-31 12:06:03       39 阅读
  12. 基于UDP的可靠传输协议QUIC协议

    2024-03-31 12:06:03       40 阅读