uwsgi/ gunicorn网站部署

网站部署前先安装Nginx服务器 sudo apt-get nginx
启动Nginx sudo service nginx start

1. uwsgi部署

配置文件

  • 从配置文件启动 uwsgi (socket) uwsgi.ini uwsgi --ini uwsgi.ini
  • 找到要部署的项目文件目录下,在manage.py同级目录中创建 uwsgi.ini文件内容如下:
      [uwsgi]
      socket = 127.0.0.1:5000
      module = manage
      callable = app
      daemonize = /var/log/uwsgi.log
    

Nginx转发(HTTP)

  • /etc/nginx/conf.d 下增加 yourproject.conf
server {
        listen 80;
        server_name 192.168.242.130;  # 你的服务器IP地址

        location / {
                                        # 加载 uwsgi 配置
                include uwsgi_params;
                # 将请求转发到 127.0.0.1:5000
                uwsgi_pass 127.0.0.1:5000;
        }
}

Nginx配置完成后重启Nginx sudo service nginx restart

2. Gunicorn部署

创建虚拟环境 python3 -m venv venv_django
启动虚拟环境 source venv_django/bin/activate
进入项目所在文件目录,安装项目依赖包
pip install -r requeirements.txt
ps:根据项目创建数据库,并迁移同步。
安装Gunicorn和gevent pip install gunicorn gevent

Nginx配置端口转发

server{
    listen 80;    # 监听的端口
    server_name 127.0.0.1;
    server_name 111.111.111.111;
    server_name your_www;
    #当请求这些server name的时候,nginx才会做反向代理,0.0.0.0是指全部
    location / {
      proxy_pass http://127.0.0.1:8080;
      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 顾名思义,定位,就是当访问 / 的时候,nginx会将请求转给本地的8080端口,而后面的设置都是一些基本的配置,可以直接用
    location /static {
      alias /home/project/static;
    }
    # 这个就是配置静态文件的地方,要用绝对地址,对应最开始的目录形式,假设project就在/home下面,那么这样配置就可以的了,还有个前提是,你在开发的时候,采取了django的建议,每个app的静态文件都用多了一层app_name的文件夹来包住。
}

测试运行 gunicorn -w 2 -b 127.0.0.1:8000 项目名.wsgi:application
在项目根目录编写一个gunicorn.conf.py文件,在里面填写gunicorn相关的配置。

workers = 2    # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
bind = "0.0.0.0:8000"

然后启动服务:gunicorn -c gunicorn.conf.py 项目名.wsgi:appliction
---------------- 官方文档 ----------------

其他:

安装mysql
apt-get -y install mysql-server mysql-client libmysqlclient-dev mytop
创建mysql用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
授权用户某个数据库所有权限
GRANT ALL ON 数据库名.表名 TO 'username'@'%

Linux 将一个前台正在运行的任务切换到后台,三步
1. 暂停程序运行CTRL+Z

[oracle@isgis121 ~]$ sh ins.sh

^Z
[1]+ Stopped                 ins.sh

2. 查看暂停的程序
察看jobs使用jobs或ps命令可以察看正在执行的jobs。

[oracle@isgis121 ~]$ jobs -l

[1]+  4524 Stopped            ins.sh

jobs命令执行的结果,+表示是一个当前的作业,减号表是是当前作业之后的一个作业。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated

3. 切换程序至后台
bg将一个在后台暂停的命令,变成继续执行如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出.

[oracle@isgis121 ~]$ bg %1

[oracle@isgis121 ~]$ jobs -l

[1]+  4524 Running           ins.sh

4.切换程序至前台
也可以用 fg %[number] 指令把一个程序掉到前台运行

[oracle@isgis121 ~]$ fg %1

./tcpserv01
  1. 终止后台程序
    也可以直接终止后台运行的程序,使用 kill 命令
[oracle@isgis121 ~]$ kill %1

但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息。

command  & 
# 让进程在后台运行
jobs –l 
# 查看后台运行的进程
fg %n 
# 让后台运行的进程n到前台来
bg %n 
# 让进程n到后台去;

你可能感兴趣的:(uwsgi/ gunicorn网站部署)