阿里云服务器初始化简记

news/2024/10/18 2:31:13/

文章目录

      • 推荐版本
        • CPU、内存、硬盘视活动而定,一般活动价99元一年
        • 注意带宽
        • 云服务器具体设置建议
        • 系统推荐CentOS 7.9
        • 本地系统推荐MacOS+iTerm2
        • 本地系统推荐Win11+Linux子系统
        • 推荐开发环境Nginx+Python+MySQL
      • 机器和系统基本状况
        • 测试网速
        • 设置Vim显示中文
        • 其他系统状态监控和常见操作
      • MySQL
        • 推荐5.7版本
        • 安装
        • 安装提示错误:“GPG 密钥已安装,但是不适用于此软件包”
        • 配置和使用
      • Python
        • Python版本
        • 安装和使用Web框架Flask
        • 使用Flask实现Web服务
        • 安装并使用Gunicorn来部署Flask服务
        • 配置Supervisor来监视Web服务运行
        • 其他
      • Nginx
        • 安装
        • 更多Nginx参数和命令
        • 配置静态Web服务器
        • 配置动态Web服务器
      • 其他Web服务开发架构
        • Go
        • Apache/lighttpd+PHP
        • Tomcat+Java(Spring)

推荐版本

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.rpmsudo 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.5python3 --version
Python 3.6.8

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

安装和使用Web框架Flask

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

mkdir my_flask_project
cd my_flask_project
python3 -m venv venvsource 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 osbind = "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 updatesudo 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简记

http://www.ppmy.cn/news/1401956.html

相关文章

复制构造函数的使用

#include<iostream> using namespace std; class sample{ public:int v;sample(int n):v(n){}sample(const sample & c){v2*c.v;} }; int main(){sample a(5);sample ba;cout<<b.v;return 0; }

JSQLParserException异常

前言 SQL中加入了租户字段&#xff0c;报这个错&#xff0c;可以查出数据&#xff0c;但是不多&#xff1b;SQL检查无问题 解决 原因一 引入新的SQL解析器检查解析SQL&#xff0c;与mybatis多租户无关 参考 <!--jsqlparser版本太低也无法解析&#xff0c;如2.0--> &…

厦门攸信技术亮相新技术研讨会,展现物流自动化解决方案新高度!

今日&#xff0c;厦门攸信信息技术有限公司受邀参加了一场备受行业关注的电子制造高端盛会——一步步新技术研讨会&#xff0c;凭借卓越的智能制造与物流自动化技术在会议中大放异彩。作为一家引领行业发展的企业&#xff0c;厦门攸信技术不仅展示了其深厚的技术底蕴&#xff0…

XR虚拟直播间,引领创新风潮,打破直播局限!

随着互联网技术日新月异的发展&#xff0c;直播行业也迎来了蓬勃发展的春天。然而&#xff0c;大多数直播间在吸引观众眼球和延长用户观看时长方面&#xff0c;仍然面临着巨大的挑战。正是在这样的背景下&#xff0c;XR虚拟直播系统应运而生&#xff0c;以其多维度的直播场景、…

字符串加解密例题训练

描述 对输入的字符串进行加解密&#xff0c;并输出。 加密方法为&#xff1a; 当内容是英文字母时则用该英文字母的后一个字母替换&#xff0c;同时字母变换大小写,如字母a时则替换为B&#xff1b;字母Z时则替换为a&#xff1b; 当内容是数字时则把该数字加1&#xff0c;如…

使用INSERT INTO ... ON DUPLICATE KEY UPDATE批量插入更新导入excel数据的实践场景应用

INSERT INTO ... ON DUPLICATE KEY UPDATE 是 MySQL 中的一个非常有用的语法&#xff0c;它允许你在插入新记录时&#xff0c;如果记录的唯一键&#xff08;如主键或唯一索引&#xff09;已存在&#xff0c;则执行更新操作而不是插入。这可以帮助你避免在插入数据时产生的重复键…

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵 目录 前言 一、Givens旋转简介 二、Givens旋转解释 三、Givens旋转进行QR分解 四、Givens旋转进行QR分解数值计算例子 五、求逆矩阵 六、MATLAB仿真 七、参考资料 总结 前言 在进行QR分解时&#xff0c;HouseHolder变换…

软考 - 系统架构设计师 - 架构风格

软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件&#xff0c;以及这些构件的组织方式&#xff0c;惯用模式指众多系统所共有的结构和语义。 目录 架构风格 数据流风格 批处理架构风格 管道 - 过滤器架构风格 调用 / 返回风格 主程序…