pycharm同步服务器和本地源码参考此处 链接
1.安装python3,pip3,virtualenvwrapper。参考此处 链接
之后的操作都要在virtualenvwrapper创建的虚拟环境中设置喔
workon 虚拟环境名 # 进入虚拟环境
2.在创建单环境的时候,可在原环境导出requirements.txt,然后在新环境内安装。参考此处 链接
pip 安装时可能出现的错误:
1. Error: pg_config executable not found 参考此处链接
2. Command “python setup.py egg_info” failed with error code 1 参考此处链接
3. WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 参考链接 参考链接
3.psycopg 安装链接 链接2
当安装完新版openssl,用openssl --version查看版本信息时,若还是旧版本的信息,可能是有其它的openssl文件夹。
which openssl 查看一下当前使用的 openssl文件路径。
若出现其它文件夹,如:
/root/anaconda2/bin/openssl
例子: mv /root/anaconda2/bin/openssl /root/anaconda2/bin/openssl.bak 先备份文件夹
然后创建软连接,将新版的openssl路径链接到上面的路径
ln -s /usr/local/openssl/bin/openssl /root/anaconda2/bin/openssl
这样就能使用和看到新版的信息了。
4.解决"mysql.h" no such file or directory 参考链接
5.安装较新版本的postgresql(可选) 链接
链接2
PS:以下内容中出现的 project 均代表你的项目名称。
(一) gunicorn配置
安装gunicorn
pip install gunicorn
这里先创建一个手动导入环境变量的wsgi.py脚本(这里根据个人项目,有所不同。单app直接用app.py就行。)
import os
from dotenv import load_dotenv
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
if os.path.exists(dotenv_path):
load_dotenv(dotenv_path)
from project import create_app
app = create_app('production')
启动gunicorn
1. 手动命令启动
gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app
-w 为指定数量的worker进程。
-b 为设置监听的本机端口地址。
wsgi:app 为 包含程序实例的模块 : 变量名
2.创建配置文件启动
#-*- coding: utf-8 -*-
"""
这个gunicorn.py文件来对gunicorn作配置。
"""
workers = 2 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量(可选)
bind = "0.0.0.0:80" # 监听的端口地址
之后在shell中输入以下命令即可启动
gunicorn -c gunicorn.py wsgi:app
如何重启guicorn 链接
gunicorn配置https 链接
guicorn官方配置文档 链接
(二) nginx配置 nginx的作用
安装nginx 参考链接
yum install nginx
设置端口监听转发。将项目的nginx配置文件(project.conf)放置到此目录下
/etc/nginx/conf.d/ # 目标目录
示例: /etc/nginx/conf.d/project.conf
project.conf 的内容:
server{
listen 80; # 监听80端口
server_name 127.0.0.1; # 此处可填ip也可填域名(项目运行的)
access_log /var/log/nginx/project_access.log; # 项目进入日志路径
error_log /var/log/nginx/project_error.log; # 项目错误日志路径
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static { # 这里让nginx帮我们托管静态文件访问
alias /home/program/static/; # 加载的项目静态文件地址
expires 30d;
}
}
Nginx出现403 forbidden (13: Permission denied)报错的四种方法(在日志中查看)
参考链接
出现 No module named 'ConfigParser’
参考链接
文件配置完成后,输入命令测试语法正确性
nginx -t
如果显示正常,则重启nginx 参考链接
service nginx restart
nginx配置ssl的方法(https)
server{
listen 8080 ssl; # 监听8080端口(443是默认SSL口,最好用443。)
server_name 127.0.0.1; # 此处可填ip也可填域名(项目运行的)
# 以下为默认配置,搬过去即可。
ssl_certificate /etc/nginx/conf.d/SSL.pem;
ssl_certificate_key /etc/nginx/conf.d/SSL.KEY;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/project_access.log; # 项目进入日志路径
error_log /var/log/nginx/project_error.log; # 项目错误日志路径
location / {
# 当访问https://127.0.0.1:8080时,请求被转发到http://127.0.0.1:8000
proxy_pass http://127.0.0.1:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
参考 链接 链接
Supervisor 是一个客户端服务器系统,包含有两个程序:
linux下的supervisor下载
yum install supervisor
当下载完成后,默认配置文件(supervisor.conf 和 supervisord.d)会存在于/etc下面,其中supervisor是我自己创建的,用来存放所有项目配置文件。
[root@localhost etc]# ls | grep supervisor
supervisor
supervisord.conf
supervisord.d
修改项目配置文件夹的导入路径可在 supervisord.conf 中修改
[include]
files = supervisor/conf.d/*.ini # 这里的意思是导入conf.d文件夹下的所有以.ini结尾的配置文件
例如我的配置文件完整路径为
/etc/supervisor/conf.d/project.ini
常用命令
service supervisord start # 启动服务
service supervisord restart # 重启
supervisorctl # 进入supervisorctl命令行并列出当前所有项目的运行状态
supervisorctl reread # 重新读取配置
supervisorctl update # 更新以便让配置生效
supervisorctl status # 查看所有项目的运行状态
supervisorctl start program_name # 开始项目运行
supervisorctl stop program_name # 停止项目运行
项目配置表名为 project.ini
```powershell
[program:voice_presentation]
# command是完整的启动项目的命令(用了虚拟环境的话,记得导入的gunicorn是虚拟环境中的gunicorn。)
command=/gunicorn_path -c gunicorn.conf.py wsgi:app
directory=/project_dir # 项目存放的目录
user=root # 用户名
autostart=true # supervisor启动时启动
autorestart=true # 故障时自动重启
stopasgroup=true
killasgroup=true
loglevel=info
额外的设置(可选)
一. 非root用户也可使用supervisorctl
修改配置文件 /etc/supervisor.conf 的一个地方
[unix_http_server]
file=/var/run//supervisor.sock
chmod=0777 ; 原来是chmod=0700
二. 设置 HTTP 服务
加入如下两行到 /etc/supervisord.conf 中
[inet_http_server]
port = :9001
supervisorctl reload 重新加载配置。打开浏览器输入 http://localhost:9001, 就会看到管理页面了,网页上的功能也很全。
(简洁)参考 链接
(详细)参考 链接
配置supervisor自启动
链接
supervisor的其它功能链接如下
supervisor event 链接
supervisor xml_rpc 链接