1.硬件:
①购买任意云服务器:阿里云、华为云、百度云……
②云服务器:
* 注意:安全组开放http的80端口(其他相关端口需要时开启:如使用数据库需要开启3306)
* 修改安全组配置后,重启服务器保障修改成功。
* 软件源更新慢:
——》apt clean
——》apt update
* 切换软件源:
——》vim /etc/apt/sources.list
——》把其它源的地址都一股脑写进去
2.软件:
①XShell
*控制远程Linux主机,SSH工具(https://www.netsarang.com/download/down_form.html?code=622&downloadType=0&licenseType=1)
②Xftp
* 上传代码到远程主机
③Server环境
* Python-Web开发环境
安装pip:
sudo apt install python3-pip
第三方依赖的移植:
pip3 freeze > requirements.txt
pip3 install -r requirements.txt
* 服务器
Nginx:
静态文件访问+反向代理(跳板机,保证安全)+负载均衡
apt install nginx
uwsgi:
安装:pip install uwsgi
(正向)http业务服务器
* 数据库
MySQL:
apt install mysql-server
apt install mysql-client
apt install libmysqlclient-dev
Redis:
apt install redis-server(server和client都会安装)
二、部署框架图
nginx+uwsgi+mysql+项目:
正向代理:
反向代理:
负载均衡:
三、uwsgi
1.Django配置
vi uwsgi(手动创建在工程下,不能同时启用2个uwsgi)---------------------------------------------
[uwsgi]
# 使用nginx连接时 使用
socket=127.0.0.1:8000
# 直接作为web服务器使用
;http=127.0.0.1:8080
# 配置工程目录
chdir=/root/django/Aixianfeng
# 配置项目的wsgi目录。相对于工程目录
wsgi-file=AixianfengDay01/wsgi.py
;wsgi-file = manage.py
;callable = app
;virtualenv = /apps/venvs/.axfmine
#配置进程,线程信息
processes=1
threads=1
;启用多线程
enable-threads=True
;允许主进程开子进程
master=True
;进程日志
pidfile=uwsgi.pid
;业务日志
daemonize=uwsgi.log
2.Flask配置
[uwsgi]
socket = 127.0.0.1:5000
wsgi-file = manage.py
callable = app
3.运行和停止
运行命令:
uwsgi --ini uwsgi.ini
停止运行:
uwsgi --stop uwsgi.ini(不怎么灵验)
寻找uwsgi主进程pid:
ps -ef | grep uwsgi
杀死uwsgi主进程,有效:
kill -9 XXX
温馨提示:修改了代码或配置,都要杀死和重启uwsgi服务器
四、Nginx
1.关于
①简介
*Nginx是由伊戈尔.塞索耶夫开发的,于2004年10月4日公开源码,以类BSD许可证形式发布
*Nginx是一款轻量级、高性能的HTTP/反向代理服务器
*也是一个IMAP/POP3/SMTP服务器
*其特点是占用内存少,并发能力强,在同类型的网页服务器中表现优秀
*Nginx因它的稳定性,丰富的功能,示例配置文件和低系统资源的消耗而闻名
*中国大陆使用Nginx的网站:淘宝,京东,腾讯,百度,新浪,网易...
②Why Nginx
*作为We服务器:相比Apache,Nginx使用资源更少,支持更多的并发连接,体现更高的效率,使Nginx倍受欢迎,能够支持高达50000个并发连接数的响应
*作为负载均衡服务器:Nginx既可以在内部直接支持Redis和PHP,也可以支持作为HTTP代理服务器对外进行服务,Nginx使用C编写,不论是系统资源开销还是CPU使用效率都处理的非常优秀
*Nginx安装非常简单,配置文件非常简洁,Bug非常少:Nginx启动非常容易,并且几乎可以做到7 * 24小时不间断运行,即使运行数个月也不需要重新启动
③安装
* 源码编译安装:
./configure
make
make install
* apt安装:
apt install nginx
④参考
* 官网:
http://nginx.org/
* 中文资料:
http://tengine.taobao.org/book/
⑤静态资源服务
*开发者服务器默认集成了静态资源服务
*关闭后静态资源服务失效(只能处理动态代码)
*静态代码交给Nginx实现动静分离
*runserver是开发者服务器,生产环境使用——uwsgi
2.配置
* 寻找配置文件所在的位置:
whereis nginx.conf
find / -name nginx.conf
* 默认使用的配置文件:/etc/nginx/nginx.conf
* 自定义路径无法定位uwsgi_params(如果要给uwsgi做反向代理,就不能使用自定义位置的配置文件)
* 后台启动的相关配置(使用较少):/etc/init/nginx.conf
* 测试配置是否有效:
nginx -t -c 配置文件的位置
nginx -t
配置样本1:
server {
# 监听在80端口
listen 80;
# 主机地址
server_name 39.108.89.249;
# 如果有域名,可以使用域名代替主机地址
# server_name www.blog.com blog.com;
# 接下来的都是路由派发
# 访问路由就是主机地址时(反向代理)
location /axf {
#root /apps/www/MyBlog;
#index app/templates/main/index.html;
# 反向代理监听在127.0.0.1:8000位置的uwsgi服务器
# 前提是uwsgi已经运行并监听在8000端口
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
# 访问路由就是主机地址时(反向代理)
location /blog {
#root /apps/www/MyBlog;
#index app/templates/main/index.html;
# 反向代理监听在127.0.0.1:5001位置的uwsgi服务器
# 前提是uwsgi已经运行并监听在8000端口
include uwsgi_params;
uwsgi_pass 127.0.0.1:5001;
}
# 访问静态资源(正向代理)
location /static {
#root html/blog;
# 静态资源目录
alias /apps/www/Aixianfeng/static;
}
# 访问指定文件夹下的任意资源(正向代理)
location /fresh{
alias /apps/www/fresh;
# 默认访问某个页面
index index.html;
}
# 纯前端小游戏(正向代理)
location /2048{
alias /apps/www/2048;
index index.html;
}
}
配置样本2:
vi default(cd /etc/nginx/sites-enabled)-------------------------------------
server {
#listen 80 default_server;
#listen [::]:80 default_server;
listen 80;
# root /root/django/love/;
#index index.html index.htm index.nginx-debian.html;
#server_name _;
server_name 47.106.201.6;
location / {
# alias /root/django/love/;
# index index.html;
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /root/django/Aixianfeng/static/;
}
location /love {
alias /root/django/love/;
index index.html;
}
}
3.Nginx指令
①启动:(若要成为uwsgi做反向代理,需提前启动uwsgi)
*nginx
②nginx -c 配置文件位置:
*使用指定的配置文件启动
*只有正向代理才能自定义配置文件位置
*如果配置文件不在/etc/nginx/下,就无法定位uwsgi_params
*如果要为uwsgi做反向代理,则配置文件位置最好使用默认位置(/etc/nginx/nginx.conf)
③nginx -t -c 配置文件的位置 :测试配置文件是否有效
④暴力停止:nginx -s stop
⑤正常退出:nginx -s quit
⑥重启(配置文件已经被修改):nginx -s reload
4.使用systemctl去操作Nginx
启动:systemctl start nginx
停止:systemctl stop nginx
重启:systemctl restart nginx
查看状态:systemctl status nginx
五、小结
1.阿里云/腾讯云默认只允许http开发80端口
2.nginx.conf只有在/etc/nginx/下时才能访问uwsgi_params(不一定是100%)