阿里云服务器初始化简记

文章目录

      • 推荐版本
        • 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.mzph.cn/news/782783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python | Leetcode Python题解之第2题两数相加

题目&#xff1a; 题解&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optiona…

仓库规划csp

满分代码&#xff08;直接暴力&#xff09; #include<iostream> using namespace std; const int M11; const int N1001; int n,m; int a[N][M]; bool isfather(int x,int y)//y是否是x的上级仓库 {for(int i1;i<m;i){if(a[x][i]>a[y][i])return false;}return …

LabVIEW无人机大气数据智能测试系统

LabVIEW无人机大气数据智能测试系统 随着无人机技术的迅速发展&#xff0c;大气数据计算机作为重要的机载设备&#xff0c;在确保飞行安全性方面发挥着重要作用。设计了一套基于LabVIEW的无人机大气数据智能测试系统&#xff0c;通过高效、稳定的性能测试&#xff0c;及时发现…

统计XML文件内标签的种类和其数量及将xml格式转换为yolov5所需的txt格式

1、统计XML文件内标签的种类和其数量 对于自己标注的数据集&#xff0c;需在标注完成后需要对标注好的XML文件校验&#xff0c;下面是代码&#xff0c;只需将SrcDir换成需要统计的xml的文件夹即可。 import os from tqdm import tqdm import xml.dom.minidomdef ReadXml(File…

图像缩放算法双立方插值法

双立方插值法&#xff08;Bicubic Interpolation&#xff09;是一种常用的图像缩放算法&#xff0c;它通过对原始图像中的像素进行加权平均来计算目标图像中的像素值。相比双线性插值&#xff0c;双立方插值能更好地保留图像的细节和平滑过渡效果。 具体实现步骤如下&#xff…

Vue路由导航守卫

一、什么是Vue路由导航守卫&#xff1f; Vue路由导航守卫是Vue Router提供的一种机制&#xff0c;它可以让你在路由跳转之前或之后执行一些自定义逻辑&#xff0c;例如&#xff1a;鉴权、重定向等。守卫分为全局守卫、路由独享守卫和组件内守卫。 二、全局守卫 全局守卫作用…

Jenkins执行策略(图文讲解)

Jenkins执行策略-图文讲解 一&#xff1a;手动执行1、手动执行流程2、手动执行操作 二、通过构建触发器——定时执行1、定时执行流程2、定时执行操作 三、当开发部署成功之后进行执行——在测试项配置——关注的项目1、执行流程2、操作流程 四、测试代码有更新的时候自动构建1、…

nginx编译安装详细说明

前言 在 CentOS 7 上编译安装 Nginx 1.24.0 &#xff0c;您可以按照以下步骤进行操作。 一、编译前准备 1.1、下载Nginx源代码 下载 Nginx 1.24.0 的源代码压缩包&#xff0c;并解压缩&#xff1a; 访问Nginx官网&#xff08;http://nginx.org/&#xff09;&#xff0c;找…

Kubeflow文档1:介绍与架构

Kubeflow 2024/3/19版本的文档 此专栏用来展示相关的内容翻译&#xff0c;重点关注本地部署&#xff0c;关于运营商的方案&#xff0c;请自行查阅 文档地址https://www.kubeflow.org/docs/ 开始编辑时间&#xff1a;2024/3/27&#xff1b;最后编辑时间2024/3/27 Kubeflow文…

毕设论文目录设置

添加目录 选择一种格式的自动目录 更新目录 发现该目录中只有1、2章&#xff0c;3、4章 然后再点击更新目录 对应的&#xff0c;小标题添加二级目录

数据库之MyBatisPlus详解

MyBatisPlus MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网地址&#xff1a;https://baomidou.com/ 一、入门案…

C++学习随笔(8)——模板初阶

本章我们来学习一下C的模版部分&#xff01; 目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通…

精通Go语言文件上传:深入探讨r.FormFile函数的应用与优化

1. 介绍 1.1 概述 在 Web 开发中&#xff0c;文件上传是一项常见的功能需求&#xff0c;用于允许用户向服务器提交文件&#xff0c;如图像、文档、视频等。Go 语言作为一门强大的服务器端编程语言&#xff0c;提供了方便且高效的方式来处理文件上传操作。其中&#xff0c;r.F…

(完结)Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(三)项目优化

本文参考自 Springboot3微服务实战12306高性能售票系统 - 慕课网 (imooc.com) 本文是仿12306项目实战第&#xff08;三&#xff09;章——项目优化&#xff0c;本篇将讲解该项目最后的优化部分以及一些压测知识点 本章目录 一、压力测试-高并发优化前后的性能对比1.压力测试相关…

探索C语言中的联合体和枚举:让处理数据更加得心应手

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;http://t.csdnimg.cn/Oytke 小新的主页&#xff1a;编程版小新-CSDN博客 C语言中有内置类型&#xff0c; 比如&…

2024年云计算使用报告,89%组织用多云,25%广泛使用生成式AI,45%需要跨云数据集成,节省成本是云首要因素

备注&#xff1a;本文来自Flexera2024年的云现状调研报告的翻译。原报告地址&#xff1a; https://info.flexera.com/CM-REPORT-State-of-the-Cloud Flexera是一家专注于做SaaS的IT解决方案公司&#xff0c;有30年发展历史&#xff0c;5万名客户&#xff0c;1300名员工。Flex…

​数据结构—栈操作经典案例

括号匹配&#xff1a; 这是我最开始写的&#xff0c;运行有问题 对于输入的括号序列&#xff0c;建议使用标准的 C 字符串而不是字符数组。 #include<iostream> using namespace std;typedef char SelemType; typedef int Status; #define OK 1 #define MAXSIZE 100 #…

Qt5.14.2 程序的华丽开场,让Splash窗口释放无限可能!

作为一款有追求的优秀软件&#xff0c;启动时的那个小小的Splash窗口可谓是程序的形象大使&#xff0c;它展现着软件精雕细琢的品味和非凡的待客之道。今天&#xff0c;就让我们一同领略Qt对这个"开场小品"的深谙之道——Splash窗口设计&#xff0c;感受一番Qt大神们…

Python数据分析九

一、Python之列表操作方法remove和pop 在Python中&#xff0c;列表还提供了其他一些常用的操作方法&#xff0c;例如删除指定元素和弹出&#xff08;移除并返回&#xff09;指定位置的元素。其中&#xff0c;remove()方法用于删除列表中第一个匹配的元素&#xff0c;而pop()方…

python基础——异常捕获【try-except、else、finally】

&#x1f4dd;前言&#xff1a; 这篇文章主要介绍一下python基础中的异常处理&#xff1a; 1&#xff0c;异常 2&#xff0c;异常的捕获 3&#xff0c;finally语句 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基础以及python入门…