打通简单访问
===
## 全部流程概览
1. 登录服务器
2. 开启一个简单的web服务
3. 浏览器访问ip:port
4. 域名解析
5. 浏览器访问域名
## 1. 准备服务器,确保网络畅通
1. 阿里云后台查看服务器是否开机
2. 检查客户端到服务器的1互联网连接(可选)从客户端ping一下自己的服务器ip。(有些服务器设置禁ping,ping不同不一定代表有问题)
3. 检查服务器互联网连接。ssh登录服务器后安装下软件试试。
4. (重要)确认安全组。入口: /ECS云服务器/网络和安全/安全组
5. 服务器防火墙。iptable。新服务器默认不会设置。
上述几点需要注意安全组。其他一般情况下没问题
## 简单测试
1. 开启一个简单的web服务
python3 -m http.server
2. 浏览器访问ip:port
服务器ip:8000
数据流程:互联网上某台电脑 → 云ESC服务器 → web服务
## 域名解析
因为ip不好记所以购买域名
域名 → ip:port → 服务器上的服务,访问ip:port变为访问域名。
### 配置域名解析
入口:购买域名的服务商提供域名解析配置。这里以阿里云-万网为例子
[云解析](https://wanwang.aliyun.com/domain/dns?spm=5176.8142029.digitalization.15.2da76d3eYBzdpF)
购买的域名例如 maozhaojun.top 我的服务器ip 36.96.180.241
1. (常用)A 固定域名映射到服务器ip
A @ http://maozhaojun.top → ip
A www http://www.maozhaojun.top → ip
2. (常用)二级域名
二级域名 news.163.com game.163.com news game就是二级域名。对网站业务逻辑做划分。
3. cname 一个域名指向另一个域名。
场景:域名贩子
4. AAAA ipv6,未来将会流行。
5. MX 邮件服务相关。
注意需要阿里云实名认证。云解析需要实名认证,1-5个工作日,跟备案不同。
域名解析成功后会在各级dns服务器上生效 10min-2day。想较快验证可以设置自己电脑的dns服务齐全地址为阿里云dns223.5.5.5
## 测试
1. 服务器开启建议web服务
python3 -m http.server 127.0.0.1:80
2. 浏览器会会自动省略80端口,浏览器地址栏访问 http://maozhaojun.top 或 http://maozhaojun.top:80效果一致。
## 备案
阿里云备案https://beian.aliyun.com/?spm=5176..8142029.digitalization.17.5aff6d3e9AZJxT
根据教程提供个人信息。
河南管局规则https://help.aliyun.com/knowledge_detail/50254.html?spm=a2c4g.11186631.2.1.2bcf76583OxhJ4
提交初步信息 → 阿里云通过 → 管局 → 成功。提交初步信息后阿里云可能会电话沟通。
### 注意
1. 网站类型
参考 https://help.aliyun.com/knowledge_detail/36948.html#section-rdk-mvr-zdb
要求非常严格,避免关键字、登录注册等多用户相关功能。建议'某某的个人简历'.待备案通过后再更换后台代码。
2. 备案期间云服务器不计费。
3. 阿里云通过后需要拍照,邮寄幕布,拍照严格按照要求。
4. 管局审核中会要求现场拍照。
5. 成功后阿里云后台会有提示。
6. 去管局备案网站激活,注意保存备案网密码。
安装基础和初测项目
## 镜像的准备工作
1. apt更新源
修改源 vim /etc/apt/sources.list
更新源 apt-get update
升级已安装的包 apt-get upgrade
搜索 apt-cache search packagename
安装 apt-get install packagename
2. git
3. mysql 注意记住密码
4. 安全组放通端口
5. 修改python软连接
## 初步测试运行(自带单线程)
1. 本地验证可运行
2. 生成依赖说明文件 `pip freeze> requirement.txt`
这个命令搭配虚拟环境比较好。否则全部包都会生成
可以选择(选做)[pipreqs](https://github.com/bndr/pipreqs)生成项目所需依赖。
3. 关闭debug模式
`django settings.py中debug = False`
4. 设置接受的访问ip
`allowedhost = [*]` 或 ['127.0.0.1', 'localhost', '.example.com', '39.96.180.241']。host头攻击原理https://blog.csdn.net/u012397189/article/details/80559028
5. 以wsgi代理项目(django2版本不需操作,默认提供wsgi.py)
6. sftp上传项目
7. 安装项目依赖 cd到项目根目录下 pip install -r requirements.txt
如果服务器没有pip3的话 `apt install python3-pip`
8. 自带单线程启动 `python mange.py runserver 0.0.0.0:8000`。
这时的数据流是 外部ip→服务器1上的django服务,所以runserver 0.0.0.0
如果后面请求由nginx过来,那么runserver 127.0.0.1:8000即可。
9. 浏览器访问验证。http://[域名]:port 或 http://[服务器ip]:port。注意阿里云的云盾和安全组白名单访问ip和放通端口。
## 其他常用软件
- apt-get install python3-pip可以换pip源
- apt-get install nano
- apt-get install git
git生成秘钥对后才能1clone
- apt-get install mysql-server
默认5.7版本,需要配置字符集才能插入中文。8.1版本需要官网下载deb包然后安装。参考 https://www.cnblogs.com/wusr/p/10083754.html
## 报错
1. 安装依赖时。一些包的安装方式与win不同。看安装到哪个包时报错。
cairocffi 需要gcc编译,参考上面链接安装
mysqlclient包需要加载mysqlconfig。需要先安装mysql。
pywin不需要。
先手动去除requirements.txt项目中不需要的包
2. (大概率)apt-get install python3-pip 后显示安装成功但无法使用pip3命令/user/bin下没有解决apt-get remove 卸载后重装。
3. (小概率)apt提示进程正在使用中。 ps -a | grep apt 找到pid kill。apt install显示错误,根据提示命令修复。