流程概括:
PART1:阿里云服务器配置
①购买并配置阿里云服务器(这里选择的是ESC云服务器 centOS7操作系统)
②配置安全组,开放端口(允许外部访问你的服务器)
③购买域名并解析到服务器端
④申请ssl证书并下载
PART2:远程操作服务器
①下载工具软件xshell和xftp,远程连接服务器并将相关文件(ssl证书、要部署的项目文件包)从本地上传服务器
②安装nginx(反向代理)并配置ssl证书
③搭建项目所需环境(python环境、flask所需虚拟环境[我们的项目中用到python的轻量级web框架flask,flask正常运行需要虚拟环境])
④在服务器防火墙开放服务端口
⑤使用终端命令让项目后台运行
PART 1:阿里云相关配置
1.服务器:
服务器是计算机的一种,它比普通计算机性能更好。服务器在网络中为其它客户机提供计算或者应用服务。
云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效,无需购买硬件,即可迅速创建或释放任意多台云服务器
登录阿里云管理后台:
地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
在云服务器概览查看我的资源——概览,单击实例名称查看详细信息
可以在详细信息中暂时关闭服务器,更改操作系统
购买好服务器后在操作栏中点击更多,设置/更改远程连接密码
2.安全组:
阿里云服务器后台→右侧选项卡:安全组→创建安全组→操作选项卡:配置规则
手动添加:协议类型TCP;端口范围(特殊端口:如443为SSL协议端口;也有可以自定义服务的端口);授权对象0.0.0.0/0即为对所有访问方开放
3.域名:
购买域名,完成实名认证
点击操作选项卡中的解析设置将域名解析到服务器
添加记录→两条记录类型分别为:@;www(一级/二级);记录值为主机IP地址;其他默认→状态正常即可
(域名备案:手机端下载APP搜索域名备案按提示操作即可)
检测解析结果:阿里云网站运维检测平台
PING 命令是用于确定本地主机(也就是你的机器)是否能与另一台主机(服务器和个人计算机)成功交换数据包,再根据返回的信息你就可以推断TCP/IP参数(因为现在网络一般都是通过TCP/IP传送数据的)是否设置,网络是否通畅等。
但不是PING成功就代表TCP/IP配置正确,你有可能要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性.
打开终端(cmd),输入ping chichibomm.com,检测连接
4.ssl证书:
阿里云搜索ssl证书,可以免费申请ssl证书
申请后配置到服务器,如果不能检测到服务器,自行下载相关版本ssl证书后通过服务器终端命令将证书配置到服务器
数字证书&ssl证书:
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。
SSL证书是数字证书的一种,遵守ssl协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能 ,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
PART2:远程操作服务器
1.Xshell和xftp:
下载地址:家庭/学校免费 - NetSarang Website
Xshell用于远程连接服务器,Xftp用于传输本地文件到服务器
点击新建→使用ssh协议,默认端口号22,主机填写服务器公网IP,用户名(默认为root)密码(在阿里云服务器端设置/更改的服务器密码)方式登录进入终端
SSH协议:SSH为 Secure Shell 的缩写,是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH客户端适用于多种平台。几乎所有UNIX平台—包括LHP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
终端页面如下(使用Linux命令)
几乎同样的方式用xftp远程连接到服务器并传输本地项目文件和ssl证书文件到主机(注意存放的目录[Linux基本目录结构:Linux目录结构和常用命令_Linux教程_Linux公社-Linux系统门户网站])
2.nginx安装和ssl证书配置:
大致分为以下步骤:
①nginx所需环境安装(编译工具及库文件等);②nginx安装;③配置nginx.conf;④启动nginx
配置nginx.conf时要注意更改域名信息,监听端口改为443,<http>部分配置ssl证书(文件位置及文件名)
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
443端口和80端口的区别?_weixin_39979119的博客-CSDN博客_443端口和80端口
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
Nginx是一个高性能的HTTP和反向代理服务器
关于正向代理服务器与反向代理服务器的区别问题_lyar1225的博客-CSDN博客_正向代理服务器
3.搭建项目所需环境:
python环境:(flask支持python3.6及以上版本)
python之(6)如何把python项目部署到linux服务器上 - 大码王 - 博客园
Linux部署Django:报错 nohup: ignoring input and appending output to ‘nohup.out’ - Tester北柯郡 - 博客园
centOS7自带python3环境,可跳过python环境的搭建
flask虚拟环境:
方法①:flask官方文档对虚拟环境下安装依赖的要求:安装 — Flask 中文文档 (2.0.2)
官方文件执行到python3 -m venv venv命令行时可能会报错,复制报错关键词搜索得到解决方案:加参数
python3 -m venv venv --system-site-packages --without-pip
方法②:virtualenv安装:virtualenv的介绍及基本使用(所有命令解释)_墨痕诉清风的博客-CSDN博客_virtualenv
#!/bin/bash
cd /opt
pip install virtualenv //安装虚拟环境软件
virtualenv flask //创建虚拟环境flask
. flask/bin/activate //激活虚拟环境
退出虚拟环境是deactivate命令
虚拟环境无所谓安装在哪个目录,只要为flask或其他项目依赖包搭建好虚拟环境保证其正常运行即可;
虚拟环境之间不会起冲突,但两个虚拟环境不能同时运行一个程序,因为程序运行占用同一个端口(在本项目中,两个环境唯一冲突的就是,两个不能时运行main.py,为什么呢?因为他们都跑了https的服务监听了443端口。);但可以分别运行不同的程序
4.在服务器防火墙开放服务端口:
Linux 防火墙 | Linux 服务器如何开放端口 配置防火墙_weixin_30399871的博客-CSDN博客
5.部署服务并在后台运行项目:
开源项目包 Huang-Shijie-SDUWH/Helpdesk
使用前阅读说明文件README.md
main.py为主程序,其他为主程序依赖函数等;需要更改的部分为main.py里的域名和ssl证书文件位置及证书名,新建config.yaml文件,用于放AESkey Stoken corpid secret参数(新建.py更改扩展名为yaml即可)
在文件资源管理器——查看中可以显示文件扩展名
更改完成后将项目文件上传到服务器(位置一般为opt文件夹)
使用nohup命令使项目在后台运行
cd project
nohup python main.py > /dev/null 2> /dev/null &
查看后台程序是否重复运行:
ps -ef|grep python
可以看出虚拟环境下的python主程序文件运行重复,杀掉32070
kill -s 9 (程序号)
前台运行测试:
cd /opt/project python main.py
出现error字段:address already in use,即前面提到过的程序运行重复,端口被占用问题
杀掉之前运行的程序再开启新的即可
last step:登陆企业微信后台→应用管理→验证url请求通过即可实现接收消息!