阿里云个人建站笔记【持续更新】【第三部分还没有整理完】

一、购买ECS服务器

我的需求:建立一个个人小网站,访问人五人以下,可能就我自己访问。并且开发一个微信小程序。需要用mysql

最后购买的配置:
2核 1GB突发性能实例 t6系列 V
I/O 优化实例:I/O 优化实例
系统盘:高效云盘/dev/xvda40GB模块属性
带宽:1Mbps按固定带宽
CPU:2核
可用区:随机分配
操作系统:Alibaba Cloud Linux 3.2104 LTS 64位Linux64位
内存:1GB
地域:华南 1
网络类型:专有网络
体检服务:是
管家服务:是

已分配公网IP

价格54元/月

二、配置mysql

(一)安装Mysql

在这里插入图片描述
点击立即登录
进入linux界面

参考以下链接安装mysql
https://help.aliyun.com/zh/ecs/use-cases/manually-deploy-mysql-on-an-ecs-instance-that-runs-centos
【到配置安全组之前都是这篇文章的,原文比较清晰建议大家去看原文。然后再返回来看】

步骤一:安装mysql

1.运行以下命令,更新YUM源。

sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

2.(可选)当操作系统为Alibaba Cloud Linux 3时,请执行如下命令,安装MySQL所需的库文件。

sudo rpm -Uvh https://mirrors.aliyun.com/alinux/3/updates/x86_64/Packages/compat-openssl10-1.0.2o-4.0.1.al8.x86_64.rpm

3.运行以下命令,安装MySQL。

sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck

4.运行以下命令,查看MySQL版本号。

mysql -V

5.返回结果如下,表示MySQL安装成功。

mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)

步骤二:配置MySQL

1.运行以下命令,启动并设置开机自启动MySQL服务。

sudo systemctl start mysqld
sudo systemctl enable mysqld

2.运行以下命令,获取并记录root用户的初始密码。

sudo grep 'temporary password' /var/log/mysqld.log

执行​命令结果示例如下。

2022-02-14T09:27:18.470008Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: r_V&f2wyu_vI

说明
示例末尾的r_V&f2wyu_vI为初始密码,后续在对MySQL进行安全性配置时,需要使用该初始密码。

3.运行以下命令,对MySQL进行安全性配置。

sudo mysql_secure_installation

根据提示信息,重置MySQL数据库root用户的密码。

说明
在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。

Enter password for user root: #输入已获取的root用户初始密码

The existing password for the user account root has expired. Please set a new password.

New password: #输入新的MySQL密码

Re-enter new password: #重复输入新的MySQL密码
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #输入Y选择更新MySQL密码。您也可以输入N不再更新MySQL密码。

New password: #输入新的MySQL密码

Re-enter new password: #重复输入新的MySQL密码

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #输入Y确认使用已设置的密码。
根据提示信息,删除匿名用户。


By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y #输入Y删除MySQL默认的匿名用户。
Success.
禁止root账号远程登录。


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y #输入Y禁止root远程登录。
Success.
删除test库以及对test库的访问权限。


By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y #输入Y删除test库以及对test库的访问权限。
- Dropping test database...
Success.

- Removing privileges on test database...
Success.
重新加载授权表。


Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y #输入Y重新加载授权表。
Success.

All done!

步骤三:远程访问MySQL数据库

建议您使用非root账号远程登录MySQL数据库。下文示例中,将创建新的MySQL账号,用于远程访问MySQL。

远程连接ECS实例。

关于连接方式的介绍,请参见连接方式概述。

运行以下命令后,输入root用户的密码登录MySQL。

sudo mysql -uroot -p

依次运行以下命令,创建远程登录MySQL的账号,并允许远程主机使用该账号访问MySQL。

本示例账号为dmsTest、密码为Ecs@123****。

重要
实际创建账号时,需将示例密码Ecs@123****更换为符合要求的密码,并妥善保存。密码要求:长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。可以使用以下特殊符号:

()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/

#创建数据库用户dmsTest,并授予远程连接权限。

create user 'dmsTest'@'%' identified by 'Ecs@123****'; 

#为dmsTest用户授权数据库所有权限。

grant all privileges on *.* to 'dmsTest'@'%'; 

#刷新权限。

flush privileges; 

执行以下命令,退出数据库。

exit

使用dmsTest账号远程登录MySQL。

在自己的电脑上用Navicat连接该服务器。

navicat连接信息:
在这里插入图片描述
这里的IP地址就是你购买ECS服务器配置的公网IP

(二)给实例配置安全组策略

主要是为了允许我们这个linux服务器上运行mysql服务的3306端口可以被访问。(就像你要让一只猫进家里,总得把门打开吧。)

在阿里云的左侧菜单栏点击 实例与镜像->实例
在这里插入图片描述
找到要配置端口的云服务器
在这里插入图片描述
点击三个点
点击加入安全组
在这里插入图片描述
选择一个安全组
在这里插入图片描述
然后在左侧的网络与安全->安全组中对刚刚选择的安全组进行配置
在这里插入图片描述
在这里插入图片描述
点击管理规则
入方向
在这里插入图片描述
点击手动添加
然后
在这里插入图片描述
在这里插入图片描述
到这里,用Navicat连接还是提示

远程连接Linux系统的ECS实例中的MySQL失败,提示“ERROR 2003 (HY000): Can't connect to MySQL server on '112.106.**.**'”错误怎么办?

此时,进入linux,把linux的my.cnf文件备份一下(一开始我看有的人是mysqld.cnf 我说怎么我的没有,后来才知道原来windows是这个,linux是my.cnf)

cp my.cnf my.cnf.bak

修改my.cnf配置文件
首先执行命令,打开my.cnf文件
vim /etc/my.cnf

然后按i进入编辑模式,把bind-address = 0.0.0.0加入到文件中
然后添加完成后按esc退出编辑模式,然后输入:wq后按enter键保存改动并退出文件

bind-address=0.0.0.0

然后重启mysql服务
sudo systemctl restart mysqld

(三)设置防火墙

1.启动并配置 FirewallD
首先,尝试启动 FirewallD 服务:

sudo systemctl start firewalld

然后,确认 FirewallD 已经启动:

sudo systemctl status firewalld

接下来,为了确保远程连接到MySQL服务器的能力,需要确保firewalld防火墙配置正确,允许外部访问服务器上的MySQL端口(默认是3306)。尝试添加3306端口到防火墙规则:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

之后,重新加载 FirewallD 以应用更改:

sudo firewall-cmd --reload

检查更新后的规则,确认3306端口已被允许:

sudo firewall-cmd --list-all 

这个命令将显示所有配置的规则,包括允许的端口。你应该能在列表中看到3306端口。

在这里插入图片描述
此时再连接就成功了!

三、根据阿里云给的搭建微信小程序的教程进行操作

(一)先找到教程并执行

1.进入阿里云控制台
在这里插入图片描述
2.点击侧边栏的ECS服务器
在这里插入图片描述
3.在概览页面找到教程
在这里插入图片描述

##(二)根据教程进行操作(遇到的一些问题)
这是官方的流程,第一个登录我就不说了,
在这里插入图片描述

1.登录云服务器(略)

2.安装Ngix服务

1.执行命令安装Nginx。

yum update && yum -y install nginx

2.启动Nginx

systemctl start nginx

3.测试Nginx。在浏览器地址栏输入http://<ECS公网IP地址>,ECS服务器的弹性公网IP可以从ECS实例页面获取,出现Welcome to CentOS表示Nginx已安装成功。
这里要注意,别输入成https://,要不然是成功不了的。我一开始输入的是https结果失败了我还在那里找半天原因

3.开发后端服务

1.创建服务目录

mkdir /data && cd /data

2.创建并编辑Python服务依赖文件。

vim requirements.txt

3.进入Vim编辑器后,按i键进入编辑模式,粘贴以下内容。

aliyun_python_sdk_core==2.13.36
aliyun_python_sdk_ecs==4.24.62
Flask==2.0.3

4.粘贴后,按Esc键,输入:x保存并退出编辑。
执行如下命令安装依赖。

pip3 install --upgrade pip && pip3 install -r requirements.txt

5.创建并编辑Python服务代码文件。

vim get_server_info.py

6.进入Vim编辑器后,按i键进入编辑模式,粘贴以下内容。
注意:metaUrl里面的这个IP地址100.100.100.200不用改哦!!这个IP地址是一个特殊的内部IP,仅在阿里云ECS实例内部可用,用于访问实例的元数据

# -*- coding: utf-8 -*-
from flask import Flask, jsonify, request
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth import credentials
import requests
import json
from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest, DescribeInstanceStatusRequest

# 创建Flask应用
app = Flask(__name__)

# 元数据URL,用于获取安全凭证
metaUrl = 'http://你的公网IP地址/latest/meta-data/ram/security-credentials/刚刚创建的角色名(如pighero)'
# 实例地域
region = 'cn-beijing'

# 获取临时身份凭证函数
def getStsToken():
    # 请求元数据服务获取临时凭证
	tokenResponse = requests.get(metaUrl)
	return tokenResponse.json()

# 定义获取服务器信息的路由
@app.route('/ecs/getServerInfo', methods=['GET'])
def getServerInfo():
    # 获取STS临时凭证
    tokenResult = getStsToken()
    accessKeyId = tokenResult['AccessKeyId']
    accessSecret = tokenResult['AccessKeySecret']
    securityToken = tokenResult['SecurityToken']
    
    # 使用临时凭证创建阿里云客户端
    credential = credentials.StsTokenCredential(accessKeyId, accessSecret, securityToken)
    client = AcsClient(credential=credential, region_id=region)

    # 从GET请求中获取实例ID
    instanceId = request.args.get("instanceId")
    if instanceId is None:    
        return "Invalid Parameter"
    
    # 查询实例信息请求
    describeInstancesRequest = DescribeInstancesRequest.DescribeInstancesRequest()
    describeInstancesRequest.set_InstanceIds([instanceId])
    describeInstancesResponse = client.do_action_with_exception(describeInstancesRequest)
    # 将响应的bytes类型转换为str,然后反序列化为json
    describeInstancesResponse = json.loads(str(describeInstancesResponse, 'utf-8'))
    
    # 检查响应中是否包含实例信息
    if len(describeInstancesResponse['Instances']['Instance']) == 0:
        return jsonify({})

    # 获取实例信息
    instanceInfo = describeInstancesResponse['Instances']['Instance'][0]

    # 查询实例状态请求
    describeInstanceStatusRequest = DescribeInstanceStatusRequest.DescribeInstanceStatusRequest()
    describeInstanceStatusRequest.set_InstanceIds([instanceId])
    describeInstanceStatusResponse = client.do_action_with_exception(describeInstanceStatusRequest)
    describeInstanceStatusResponse = json.loads(str(describeInstanceStatusResponse, 'utf-8'))
    instanceStatus = describeInstanceStatusResponse['InstanceStatuses']['InstanceStatus'][0]['Status']

    # 封装返回结果
    result = {
        'Cpu': instanceInfo['Cpu'],  # CPU数
        'Memory': instanceInfo['Memory'],  # 内存大小
        'OSName': instanceInfo['OSName'],  # 操作系统名称
        'InstanceType': instanceInfo['InstanceType'],  # 实例规格
        'IpAddress': instanceInfo['PublicIpAddress']['IpAddress'][0],  # 实例公网IP地址
        'InternetMaxBandwidthOut': instanceInfo['InternetMaxBandwidthOut'],  # 公网出带宽最大值
        'instanceStatus': instanceStatus  # 实例状态
    }
    return jsonify(result)

# 运行Flask应用
if __name__ == "__main__":
    app.run()

粘贴后,按Esc键,输入:x保存并退出编辑。

重点:需要修改get_server_info.py的metaUrl的角色名称

get_server_info.py里面的metaUrl需要修改
1.首先创建一个RAM角色
(1)登录阿里云管理控制台
(2)在搜索框里面索索RAM,点击“访问控制”
在这里插入图片描述
在这里插入图片描述

(3)点击角色
在这里插入图片描述
(4)点击创建角色
在这里插入图片描述
(5)下面这三种角色选择“阿里云服务”,这个角色是让某个特定的阿里云服务来使用这个角色进行API调用。这个对我们的ECS实例来说是最常见选择
在这里插入图片描述

(6)然后创建一个普通服务角色。受信服务选择云服务器。
在这里插入图片描述

(7)创建完成后为角色授权

在这里插入图片描述
(8)点击新增授权
在这里插入图片描述
在这里插入图片描述
2.其次把ECS实例与角色关联起来【重点!!!不关联后面会报错】
在控制台里面点击实例,点击三个点(更多)
在这里插入图片描述
点击授予/收回RAM角色
在这里插入图片描述
把刚才创建的角色授权过来
在这里插入图片描述
如果这里授权成功,后面的步骤里面运行

curl http://100.100.100.200/latest/meta-data/ram/security-credentials/pighero

↓会显示如下图。
在这里插入图片描述
如果不给授权的话,运行会报错提示Internal Server Error
在这里插入图片描述

需要修改get_server_info.py的region

这个region可以在我们那个控制台的地址栏看一下url的参数哈哈哈哈
region = 'cn-beijing’←我是深圳的所以我改为cn-shenzhen了
在这里插入图片描述

4.安装uWSGI Server

写完服务端代码后,您需要安装并使用uWSGI来启动Flask服务。

1.执行命令安装uWSGI。

pip3 install uwsgi

2.新建uwsgi配置文件。

cd /data &&vim uwsgi.ini

3.进入Vim编辑器后,按i键进入编辑模式。

[uwsgi]
#uwsgi启动时所使用的地址和端口
socket=127.0.0.1:5000
#指向网站目录
chdir=/data

#python启动程序文件
wsgi-file=get_server_info.py
#python程序内用以启动的application变量名
callable=app

#处理器数
processes=1

#线程数
threads=2

#状态检测地址
stats=127.0.0.1:9191

#保存启动之后主进程的pid
pidfile=uwsgi.pid

#设置uwsgi后台运行,uwsgi.log保存日志信息 自动生成
daemonize=uwsgi.log

4.粘贴后,按Esc键,输入:x保存并退出编辑。
5.运行uwsgi server。

uwsgi uwsgi.ini

6.执行以下命令查看uwsgi服务启动情况,看到如下图效果是服务启动成。

ps aux | grep uwsgi

在这里插入图片描述

5.配置Nginx并重启

启动好后端服务后,我们需要添加Nginx配置来代理后端服务。

1.创建配置文件。

vim /etc/nginx/conf.d/app.conf

2.进入Vim编辑器后,按i键进入编辑模式。

server {
    listen 80 default_server;
    
    server_name app.example.com;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    location / {
        # 转发端口
        uwsgi_pass  127.0.0.1:5000;
        include uwsgi_params;
    }
}

3.粘贴后,按Esc键,输入:x保存并退出编辑。
4.重启Nginx。

nginx -s reload

5.验证配置是否成功。
说明:如果未运行成功,可以在/data/uwsgi.log日志文件查看原因。

curl http://127.0.0.1/ecs/getServerInfo

命令执行结果是Invalid Parameter表示服务配置成功。

过程中存在的报错等

(一)执行curl http://127.0.0.1/ecs/getServerInfo提示Internal Server Error

在这里插入图片描述

排查
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/pighero
先试一下这个,如果报错说明你没有给实例关联角色。可以参看前面部分给实例分配角色
如果成功应该提示如下信息
在这里插入图片描述

查了半天感觉没有问题,最后我采用了大招!重启了我的ECS服务器哈哈哈哈哈
很好,现在变成502 bad gateway了…
在这里插入图片描述

如何查看flask应用是否正在运行
使用ps命令
ps命令可以显示当前系统中的活动进程。您可以结合grep命令来搜索包含您的应用名称的进程。例如,如果您的Flask应用文件名为app.py,您可以这样做:

ps aux | grep app.py

输出后发现没启动flask应用
因为我用用的是uwsgi来使用flask所以用如下命令来重启

uwsgi --ini /data/uwsgi.ini

检查uWSGI服务状态:
您可以使用下面的命令来确认uWSGI服务是否成功启动:

bash
Copy code
ps aux | grep uwsgi
如果看到uWSGI进程正在运行,那么uWSGI服务应该是正常启动了。

确认Nginx服务状态:
如果uWSGI服务运行正常,下一步是确认Nginx服务是否也在正常运行。可以使用以下命令来检查Nginx服务状态:

bash
Copy code
systemctl status nginx
如果Nginx没有运行,使用以下命令启动它:

bash
Copy code
systemctl start nginx
一旦Nginx服务启动,您应该能够通过Nginx访问您的Flask应用。

http://112.74.35.88/ecs/getServerInfo

给我整无语了
我决定先往后弄

登录微信小程序
https://mp.weixin.qq.com/

点击设置
在这里插入图片描述

在基本设置里面找到自己的AppID
在这里插入图片描述

7.安装小程序开发环境并创建项目

启动好后端服务后,我们接下来要开发开发小程序。先安装小程序开发环境。

安装Node.js开发环境,请到Node.js页面下载并安装Node.js环境。
下载并安装微信小程序开发工具。详细信息请参见开发工具下载。
打开小程序开发工具,然后使用微信扫码登录。
单击加号创建微信小程序示例项目。
5.参考以下填写项目信息,最后单击新建。
项目名称:例如ECSAssistant。
目录:例如D:\workspace\wechat\ECSAssistant。
AppID:小程序的唯一标识,从小程序控制台获取。
开发模式:小程序。
后端服务:不使用云服务。
6.配置项目允许访问非HTTPS域名。在顶部配置栏,选择设置>项目设置,在本地设置页签,选中不校验合法域名、web-view(业务域名)、TLS版本一级HTTPS证书。

阿里云ECS怎么查看mysql数据库?

背景,用navicat连上阿里云后,创建了数据库。现在想在服务器上看这些数据库
在这里插入图片描述
首先,登录ECS服务器,然后mysql -u [username] -p
输入密码以后就进来了
我这里的用户名username是zdx
在这里插入图片描述

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值