网络编程实践笔记_2_"阿贝云"_"免费云服务器"_云端启动
接上一篇 ,申请好云端服务器后,0基础记录全过程
先在服务器的管理页面,按照提示安装操作系统,根据不同服务器提供方,会有很多可选项,这里可选的有 win ubantu CentOS 还有各种版本,

点完安装系统,在这个页面等一阵子,在上面的状态栏里就会提示安装成功。不过还可以继续再装,就是更换新系统了。
这里我第一次选的Ubantu,因为看到免费版的CPU和内存都比较小,想选个轻量化的系统。结果等半天也不知道是安装慢还是装好了我不知道,看起来没什么变化。
最后又选了一次CentOS试试,装了3分钟顶部的控制按钮产生变化了,感觉安装成功了

之后尝试使用ssh 连接一下主机,可以连上了。
ssh root@111.xxx.xxx.xxx -p 22
这里的111.xxx.xxx.xxx 就是我的云主机 下面的那个IP地址,命令发出后会让输入密码,不显示输入内容的,密码就是操作系统安装时,定义的那个

连接成功后会提示
Activate the web console with: systemctl enable --now cockpit.socket
并显示上一次登录失败的IP和上一次成功的登陆IP
然后命令提示变为:
[root@localhost ~]#
可以使用ls命令 显示一下当前文件夹
忘了刚安装好的系统这个位置是否有内容了。。。。。当时一脸蒙,忘记看了。
由于选的是CentOS,所以开通防火墙命令与Ubantu的有点区别,是firewall
有空的时候先用
firewall-cmd --zone=public --add-port=5000/tcp
和
firewall-cmd --reload
永久开通一下 5000 端口,这个端口是与py代码里的
if __name__ == '__main__':
print_hi('PyCharm')
init_database()
with app.app_context():
db.create_all()
app.run(host='0.0.0.0', port=5000)
这里的port对应的。后续开通服务器程序也用到这个端口号。
后续是安装 python 和 升级 pip 和 virtualenv
创建环境,虽然不知道为什么,先照做
virtualenv -p python3 venv
然后启动环境
source venv/bin/activate
装gunicorn库
pip install flask gunicorn
之后根据py代码需要,安装其他需要的库flask_sqlalchemy,sqlite3,bcrypt 等
pip freeze > requirements.txt
一切就绪之后,可以复制本地测试好的代码到服务器了
scp -r /本地/目录路径 用户名@远程IP:/目标路径 例如将本地/data/reports目录上传到远程服务器的/backup/2025目录:
scp -r C:\test\host root@111.xxx.xxx.xxx:/backup/2025[root@localhost ~]# ls
anaconda-ks.cfg host install.sh requirements.txt venv
其中 host 是拷贝过来的,venv是环境建立的,貌似他俩是目录,所以显示时是蓝色的。
如果使用的别的环境名,改一下source VXXX/bin/activate 其那面那个VXXX对应你的环境名
万事俱备之后
使用
(venv) [root@localhost ~]# gunicorn -w 4 -b 0.0.0.0:5000 host.main:app
启动服务器程序!前面的 (venv) [root@localhost ~]# 是命令提示符的状态,这个(venv)代表启动了环境, [root@localhost ~]代表在远程主机的工作目录。
最后面的 0.0.0.0:5000 host.main:app,是对应5000端口,然后/host/main.py文件中,app所对应程序。
py的代码里有定义程序名字
app = Flask(__name__)
……
……
……
if __name__ == '__main__':
print_hi('PyCharm')
init_database()
with app.app_context():
db.create_all()
app.run(host='0.0.0.0', port=5000)
最后面的代码里也有这个app.run
py的代码里有定义程序名字,对应好。
如果一切正常,应该会提示
[2025-10-13 09:33:50 +0800] [318919] [INFO] Starting gunicorn 21.2.0
[2025-10-13 09:33:50 +0800] [318919] [INFO] Listening at: http://0.0.0.0:5000 (318919)
[2025-10-13 09:33:50 +0800] [318919] [INFO] Using worker: sync
[2025-10-13 09:33:50 +0800] [318922] [INFO] Booting worker with pid: 318922
[2025-10-13 09:33:50 +0800] [318923] [INFO] Booting worker with pid: 318923
[2025-10-13 09:33:50 +0800] [318924] [INFO] Booting worker with pid: 318924
[2025-10-13 09:33:50 +0800] [318925] [INFO] Booting worker with pid: 318925
[2025-10-13 09:34:10 +0800] [318919] [INFO] Handling signal: winch
到这就不要乱按了,尤其是crtl+c。。这里是终止程序用的。
然后就可以切换到浏览器里,输入虚拟服务器的IP:5000 来访问了,第一次可能稍微慢点,可能是网页里有其他内容要加载。

上面是所有服务器和远程端的操作,过去了几天,并且由于服务器到期了一次,命令历史记录没了,有些是靠回忆的,有些是今天的操作命令。
最主要的一点就是那个防火墙放行端口,也许第一天就已经可以访问了,但是一直不知道怎么调试或者查询状态,加上时间紧,一阵手忙脚乱。
想测试服务器是否远程启动,可以用
curl localhost:5000
在服务器端访问一下,看看有没有响应,如果运行正常,会得到http的应答,
(venv) [root@localhost host]# curl localhost:5000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的博客</title>
…………
就是py代码里
@app.route('/')
def index():
posts = Post.query.order_by(Post.created_at.desc()).all()
return render_template('index.html', posts=posts)
这里return的index.html的内容
下一篇会继续更新py代码和html的内容,其实这些可以用AI提供的代码稍作修改就可以,只要本地运行本地测试正常,这里就都一样了

浙公网安备 33010602011771号