加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

带你迈过那些陈设处事器时的坑?

发布时间:2018-09-01 09:11:45 所属栏目:业界 来源:程序猿与吉他狗
导读:在开拓情形完成了Flask项目标开拓往后,就必要将项目陈设随处事器上,开拓时由Werkzeug提供的开拓处事器是无法应用于现实项目标,在出产情形中必需行使专门的处事器措施,web处事器措施很是多,本文处事器操纵体系为Centos7,网站处事器回收的是uwsgi和ngin

导入数据库表

  1. (venv)$ python3 manage.py db init 
  2. (venv)$ python3 manage.py db migrate 
  3. (venv)$ python3 manage.py db upgrade 

退出假造情形

  1. (venv)$ deactivate 

2.设置uwsgi

在项目文件夹中新建一个uwsgi.py的文件和uwsgi.ini的文件,并填入设置

  1. $ cd /path/to/your/project 

新建uwsgi.py

  1. $ vi uwsgi.py 

导入建设应用的工场函数

  1. from webapp import create_app 
  2. app = create_app("production)" 

新建uwsgi.ini

  1. $ vi uwsgi.ini 

输入以下内容:

  1. [uwsgi] 
  2. module = uwsgi:app 
  3. master = true 
  4. processes = 5 
  5. uid = user 
  6. socket = /run/uwsgi/myapp.sock 
  7. chown-socket = user:nginx 
  8. chmod-socket = 660 
  9. vacuum = true 
  10. die-on-term = true 

上面的设置文件中的user是你新建的Linux用户名,第一句是汇报uwsgi我们的应用是uwsgi文件中的app,master和processes是处事器是否启用主历程和历程数,uid是启动uwsgi的用户,scoket是指把uwsgi天生的sock放在什么处所,chown-socket是修改sock的全部者,这样nginx和uwsgi可以同时会见,chmod-socket是修改sock的权限,vacuum是在措施退出时移除sock,由于后头我们会行使systemd来节制uwsgi,由于个中节制信号存在不同,以是行使die-on-term参数。

行使systemd节制uwsgi

新建uwsgi处事

  1. $ sudo vi /etc/systemd/system/uwsgi.service 

填入如下内容:

  1. [Unit] 
  2. Description=uWSGI instance to serve myapp 
  3. [Service] 
  4. ExecStartPre=-/usr/bin/bash -c 'mkdir -p /run/uwsgi; chown user:nginx /run/uwsgi' 
  5. ExecStart=/usr/bin/bash -c 'cd /home/user/myapp; source myappenv/bin/activate; uwsgi --ini myapp.ini' 
  6. [Install] 
  7. WantedBy=multi-user.target 

这样就完成了uwsgi的设置,我们可以像节制mysql一样来节制uwsgi了。

  1. $ sudo systemctl start uwsgi 
  2. $ systemctl status uwsgi 
  3. $ sudo systemctl enable uwsgi 
  4. $ sudo systemctl stop uwsgi 

3.设置nginx

nginx的设置文件位于/etc/nginx/nginx.conf

  1. $ sudo vi /etc/nginx/nginx.conf 

我们只必要修改响应部门就可以了,关于nginx更多的细节将单独再写。

  1. server { 
  2.  
  3.     listen 80; 
  4.  
  5.     server_name server_domain_or_IP; 
  6.  
  7.     location / { 
  8.  
  9.         include uwsgi_params; 
  10.  
  11.         uwsgi_pass unix:/run/uwsgi/myapp.sock; 
  12.  
  13.     } 
  14.  
  15.            location /static/ { 
  16.  
  17.                      alias /home/user/myapp/static/; 
  18.  

这里我们添加了location /static/,这是为了让js css这些静态文件直接由nginx经受,以是要修改这些静态文件的会见权限。

  1. $ cd /home/user/myapp/static/ 
  2. $ chown -R user:nginx static 
  3. $ chmod -R 660 static 

最后尚有一个小坑,nginx在启动加载时会报错。

  1. $ sudo mkdir /etc/systemd/system/nginx.service.d  
  2. $ cd /etc/systemd/system/nginx.service.d 
  3. $ sudo vi override.conf 

填入如下内容:

  1. [Service]  
  2. ExecStartPost=/bin/sleep 0.1 

生涯退出!

到此设置就完成了,启动处事看看结果吧!

测试nginx

  1. $ sudo nginx -t 

启动nginx

  1. $ sudo systemctl start nginx 

配置开机启动

  1. $ sudo systemctl enable nginx 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读