不依赖第三方服务搭建网站服务器及功能html
Nginx不直接处理请求,而是在云主机中有一个Real Server,Nginx只是把请求转发给Real Server,等待Real Server请求处理完成后,再将请求返回给客户端python
在环境中存在 Nginx, Real Server No.1, Real Server No.2......
Nginx同样执行请发转发,可是在 Nginx 挑选 Real Server 的时候,权重是不同的,Nginx 中本身的一套逻辑,这套逻辑就是为了负载均衡nginx
假设:Real Server No.1 的权重是3,Real Server No.2 的权重是1,在4个请求过来后,极可能 Real Server No.1 会收到3个请求,Real Server No.2会收到一个请求sql
yum install nginx
复制代码
sudo nginx
复制代码
判断是否启动成功
在浏览器中输入公网的IP,出现以下的页面则为启动成功 django
快速中止Nginxubuntu
sudo nginx -s stop
复制代码
与上面的 stop 相比会更加优雅一下vim
sudo nginx -s quit
复制代码
在修改完配置后执行该命令centos
sudo nginx -s reload
复制代码
sudo nginx -s reopen
复制代码
cd /etc/nginx/
主配置文件:nginx.conf
复制代码
配置存在层级关系浏览器
# nginx.conf 五大配置域相关层次关系
events {
...
}
http {
...
upstream {
...
}
server {
...
location {
...
}
}
}
# mail {
# ...
# }
复制代码
全称:Web Server Gateway Interface
是 Web Server 和 Web Application 通讯的规范安全
1.查找python的位置:
whereis python
复制代码
2.安装相关包,用于下载编译python3
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
复制代码
3.默认的,centos7也没有安装pip
#运行这个命令添加epel扩展源
yum -y install epel-release
#安装pip
yum install python-pip
复制代码
4.用pip装wget
pip install wget
复制代码
5.用wget下载python3的源码包
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
复制代码
6.手动安装
#解压
xz -d Python-3.7.0.tar.xz
tar -xf Python-3.7.0.tar
#进入解压后的目录,依次执行下面命令进行手动编译
./configure prefix=/usr/local/python3
make && make install
复制代码
7.添加软连接
#将原来的连接备份
mv /usr/bin/python /usr/bin/python.bak
#添加python3的软连接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
#测试是否安装成功了
python -V
复制代码
8.更改yum配置,由于其要用到python2才能执行,不然会致使yum不能正常使用
vi /usr/bin/yum
# 把 #! /usr/bin/python修改成#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改成#! /usr/bin/python2
复制代码
9.修改pip的python版本
原先的pip文件是以python2为默认版本
查找pip的位置
whereis pip => /usr/bin/pip # 这里面会有不少其余的pip,好比pip2,pip3,pip3.6等
vim /usr/bin/pip
#!/usr/bin/python2 ==> #!/usr/bin/python3
复制代码
1.经过pip安装 uWSGI
pip install uwsgi
复制代码
若是出现 致命错误:Python.h:没有那个文件或目录
执行以下命令
yum install libffi-devel -y
复制代码
2.添加软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/sbin/uwsgi
复制代码
将配置经过命令行写入,进而启动
uwsgi --chdir xxxx --socket :80 --max-requests 5000 --processes 4 --module xxx.wsgi
--chdir xxxx (指定 uwsgi 的应用目录)
--socket :80 (指定端口)
--max-requests (最大请求数)
--processes (处理的进程数)
--module (指定具体的wsgi模块)
复制代码
1.建立 uwsgi 的配置文件
vim uwsgi-demo.ini
复制代码
2.写入配置文件
[uwsgi]
chdir = /xxxx/xx
http-scoket = :80
max-requests = 5000
processes = 4
module = xxx.wsgi
复制代码
3.经过命令行执行 wsgi 的配置
uwsgi --ini uwsgi-demo.ini
复制代码
1.建立一个文件夹
mkdir deployment
cd deployment
复制代码
2建立Python文件,定义uWSGI应用
touch uwsgi_test.py
复制代码
3.写入相关配置
def application(env, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
return [b'Hello World, Hello uWSGI']
复制代码
4.运行 uwsgi
uwsgi --http :8000 --wsgi-file uwsgi_test.py
复制代码
1.修改 django 的 setting
ALLOWED_HOSTS = ['*'] # 开启全部人均可以访问
复制代码
找到 django 目录下的 wsgi文件执行 django_deployment.wsgi
为对应django项目下的文件相对路径
uwsgi --http :8000 --module django_deployment.wsgi
复制代码
在django
目录中建立一个配置文件
touch django-uwsgi.ini
复制代码
修改里面的内容
[uwsgi]
chdir = /root/deployment/xianshangbushuceshi/django_deployment
module = django_deployment.wsgi
http-socket = :8000
master = True
processes = 4
threads = 1
vacuum = True
复制代码
启动 uwsgi 服务
uwsgi --ini django-uwsgi.ini
复制代码
优化:改成后台启动,将日志打印到日志文件中
将django-uwsgi.ini
修改成
[uwsgi]
chdir = /root/deployment/xianshangbushuceshi/django_deployment
module = django_deployment.wsgi
http-socket = :8000
master = True
processes = 4
threads = 1
vacuum = True
# backend run uwsgi
daemonize = %(chdir)/log/uwsgi-8000.log
log-maxsize = 1024*1024*1024
pidfile = %(chdir)/pid/uwsgi-8000.pid
复制代码
在对应目录建立相关的日志文件夹存放日志文件
mkdir log
mkdir pid
复制代码
启动 uwsgi 服务
uwsgi --ini django-uwsgi.ini
复制代码
中止 uwsgi 服务
uwsgi --stop pid/uwsgi-8000.pid
复制代码
查看相关的日志log
tail -f uwsgi-8000.log
复制代码
查看相关的进程id pid
cat uwsgi-8000.pid
复制代码
查看进程
拿到进程 id 以后,13290是个人进程id
ps -aux | grep 12390
复制代码
uwsgi --ini django-uwsgi.ini
复制代码
进入 nginx 的配置目录
cd /etc/nginx
复制代码
注意该目录下的文件都是须要root权限才能够修改,若是当前不是root的话能够切换成root
sudo su
复制代码
修改nginx.conf
...
http {
...
upstream uwsgi {
server 127.0.0.1:8000 # 我这里django项目是经过8000端口启动的因此就映射到:8000
}
server {
...
listen 80 default_server;
listen [::]:80 default_server;
server_name .actoress.xyz; # 这里配置的是解析到该服务器的域名,前面加 . 表示所有二级域名
charset utf-8;
access_log /var/log/nginx-uwsgi.log; # 添加日志配置
location / {
proxy_pass http://uwsgi; # 映射到反向代理
}
# 配置静态文件寻址目录
location /static {
alias /home/ubuntu/jarvis/deployment/django_deployment/static;
}
...
}
}
...
复制代码
添加静态文件寻址目录
在 django.settings.py
文件中
# 最后一行添加
STATIC_OOT = os.path.join(BASE_DIR, 'static/')
复制代码
执行收集静态文件
python manage.py collectstatic
复制代码