标签:lob 情况下 web comm 就是 文件的 关闭进程 自己 open
复制全局settings.py配置文件(或者直接修改),创建一个名为deploy_settings.py的副本,修改DEBUG
=False。
DEBUG = False
# 填写你自己的ip和域名 # 注意,这里要写上允许谁访问的ip地址,不然就访问不了,踩了个大坑,长记性了
ALLOWED_HOSTS = ["yan.long920.cn", "localhost", "127.0.0.1", '112.74.160.252']
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tznewblog.deploy_settings')
application = get_wsgi_application()
# 在xshell中生成requirements.txt文件(将项目中安装的包,存放到requirements.txt文件中)
pip freeze > requirements.txt
安装包之前先创建一个虚拟环境
pip install -r requirements.txt
# 进入到虚拟环境 安装uwsgi
workon dj_pro
pip install uwsgi
测试uwsgi是否安装成功文件代码:
# 测试py文件
# test_uwsgi.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
运行uwsgi:
uwsgi --http :8101 --wsgi-file test_uwsgi.py
测试uwsgi是否运行正常:
curl 127.0.0.1:8101
# 如下就是正常的
[root@zhenzi0322 ~]# curl http://127.0.0.1:8101
Hello World[root@zhenzi0322 ~]#
uwsgin_conf.ini
文件代码 在项目根目录中创建deploy目录,新建uwsgi_conf.ini文件。[uwsgi]
# ip和端口
# nginx连接
socket=127.0.0.1:8101
#http=127.0.0.1:8101 # socker 和 http 两者只能设置一个, 如果设置的是http, 那么此时在服务器上curl http://127.0.0.1:8101 就能够接收到返回结果, 如果是socker的话,那么还需要搭配nignx来使用
#http=0.0.0.0:8101
# 指定项目的根目录
chdir=/home/cheng/django_deploy/tznewblog/
# 项目中 wsgi.py 文件的相对目录,相对于项目根目录
wsgi-file=tznewblog/wsgi.py
# 进程数
processes=1
# 线程数
threads=1
# uwsgi服务器角色
# 这里设置为主
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见,以前的runserver是依赖终端的
# 记得在当前目录下创建logs文件夹
daemonize=logs/uwsgi.logs
# 指定虚拟环境所在目录,绝对路径
virtualenv=/home/cheng/.virtualenvs/cheng_dj_deploy
# 启动uwsgi
uwsgi --ini uwsgi_conf.ini
# 停止uwsgi
uwsgi --stop uwsgi.pid
# 安装nginx
sudo apt-get update
sudo apt-get install nginx
# nginx 安装后一般自动启动
sudo service nginx status # 查看nginx状态
# 默认开启80端口,可以查看一下是否提供web服务
curl -I 127.0.0.1
1. 启动nginx: nginx
2. 停止nginx: nginx -s stop
3. 重新加载nginx配置文件(一般修改nginx配置文件的时候用): nginx -s reload
# 一般我就用上面这几个命令
dongcheng@long:~$ sudo nginx -h
nginx version: nginx/1.15.5 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/share/nginx/)
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
-g directives : set global directives out of configuration file
# 1. QUIT: 优雅的关闭进程,即等请求结束后再关闭
# 2. HUP: 改变配置文件,平滑的重读配置文件
# 3. USR1: Reopen the log files 重读日志,在日志按月/日分割时有用
# 4. USR2: Upgrade Executable on the fly 平滑的升级
# 5. WINCH: Gracefully shutdown the worker processes 优雅关闭旧的进程(配合USR2来进行升级)
# 一般情况下只会用到QUIT 和 HUP
使用方法: 首先要知道nginx的进程号, (所以可能还是nginx本身提供的命令好用)
ps -aux|grep nginx # 查nginx 的进程号, 比如 nginx 的进程号为4873
具体语法:
kill -信号选项 nginx的主进程号
kill -HUP 4873 # 相当于nginx -s reload
kill -quit 4873
kill -9 4873
# 可能通过查看nginx.pid来获得nginx的进程号,从而省去ps -aux|grep nginx查找nginx进程号的步骤
kill -信号控制 `cat /run/nginx.pid` # nginx的pid进程号一般存放在这里
kill -USR1 `cat /run/nginx.pid`
dongcheng@long:/run$ sudo kill -hup `cat nginx.pid`
安装好nginx后,查看nginx版本: nginx -v
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf /etc/nginx/sites-available /etc/nginx/sites-enabled |
配置文件 | nginx主配置文件 |
/etc/nginx/fastcgi_params /etc/nginx/scgi_params /etc/nginx/uwsgi_params |
配置文件 | fastcgi 、scgi 、 uwsgi配置文件 |
/etc/nginx/win-utf /etc/nginx/koi-utf /etc/nginx/koi-win |
配置文件 | nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | htttp协议的Content-Type与扩展名 |
/usr/lib/systemd/systemd/nginx.service | 配置文件 | 配置系统守护进程管理器 |
/etc/logrotate.d/nginx | 配置文件 | nginx?志轮询,?志切割 |
/usr/sbin/nginx /usr/sbin/nginx-debug |
命令 | nginx终端管理命令 |
/etc/nginx/modules /usr/lib/nginx 可能也为/usr/lib64/nginx /usr/lib/nginx/modules |
目录 | nginx模块目录 |
/usr/share/nginx /usr/share/html /usr/share/html/index.html /var/www/html/ |
目录 | nginx默认站点目录 |
/var/log/nginx | 目录 | nginx的日志目录 |
/run/nginx.pid | 文件 | nginx 运行的端口号 |
查看nginx编译参数 命令:nginx -V
nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}
来表示开始与结束。
fail -f /var/log/nginx/access.log
# 使用fail命令来查看# 我的nginx_uwsgi.conf配置
upstream chengBlog {
# 此处为uwsgi运行的ip地址和端口号
server 127.0.0.1:8101;
}
server {
# 监听端口
listen 80;
# 服务器域名或者ip地址
server_name yan.long920.cn 112.74.160.252 localhost;
# 编码
charset utf-8;
# 文件最大上传大小
client_max_body_size 75M;
# 媒体文件
location /media {
alias //home/cheng/django_deploy/tznewblog/media;
}
# 静态文件
location /static {
alias //home/cheng/django_deploy/tznewblog/static;
}
# 主目录, 交给uwsgi处理, nginx 只处理静态文件目录
location / {
uwsgi_pass chengBlog;
include /www/server/nginx/conf/uwsgi_params;
}
}
# 在我ubuntu 中:
# user www-data
user pyvip;
# 在centos7中:
# user www www
user root
# sudo nginx -t -c /etc/nginx/nginx.conf
sudo nginx -t # 一般我使用这条命令
# 打印如下内容,则没问题
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重新加载配置
# sudo nginx -s reload -c /etc/nginx/nginx.conf
sudo nginx -s reload # 一般我使用这条命令, 这两条命令都应该是加不加参数都无所谓
cheng
这个用户并为其设置密码:useradd cheng -g root -m # 创建cheng用户
password cheng # 为cheng 设置密码
su cheng # 切换到cheng用户
准备工作:
ls -l /etc/sudoers 查看文件权限
chmod u+w /etc/sudoers 修改文件权限为可编辑
# 首先切换为root用户
su root
# 修改sudoers文件
vim /etc/sudoers
# 找到: root All=(ALL) ALL 这一行, 在下一行添加上相应的用户即可
## Allow root to run any commands anywhere; 若要给cheng用户增加sudo权限,需要增加如下一行
root ALL=(ALL) ALL
cheng ALL=(ALL) ALL
修改完成后,记得将文件权限改回只读:
chmod u-w /etc/sudoers 修改文件权限为只读
ls -l /etc/sudoers 查看文件权限
至此就为 cheng 这个用户添加上了sudo权限, 该用户可以使用sudo 来提升至管理员权限了
workon
mkvirtualenv
...
此时你会发现在root用户下管用的这几个命令在cheng这个用户下是找不到的(提示你没有命令没找到), # 刚创建好的这个用户是没有: workon mkvirtualenv 等命令的, 还需要我们去配置
~/.bashrc
在最后添加上这几句话 # 家目录下的这一隐藏文件export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr//bin/virtualenvwrapper.sh # 注意 virtualenvwrapper.sh 的位置, 有可能不是这个位置
# find / -name virtualenvwrapper.sh # 查找virtualenvwrapper.sh 这个文件的位置
source ~/.bashrc
此时, 再输入 workon 等命令就可以了
mkvirtualenv -p python3 cheng_py3
至此剩下的步骤都是一样的了
标签:lob 情况下 web comm 就是 文件的 关闭进程 自己 open
原文地址:https://www.cnblogs.com/nichengshishaonian/p/11522789.html