Rumah pembangunan bahagian belakang Tutorial Python ubuntu下python+tornado+supervisor+nginx部署

ubuntu下python+tornado+supervisor+nginx部署

Jul 14, 2017 pm 06:13 PM
ubuntu mengerahkan

由于之前在医院采集的数据都是拍照得到的处方图片,而需要用到的是处方的文本形式。因此这两个星期写了个小程序把服务器的图片显示给用户(到时候雇一些人),让用户根据图片录入文字信息。

之前都是用java写web,想到自己最近学机器学习要用python,所以用python来写一下,此外,因为想用点新东西,也介于程序比较小,所以考虑用mongodb来存储(虽然确实没有必要)。

基本架构是这样:(后台语言)python +(web框架和web服务器)tornado + (数据库)mongodb  +(进程管理)supervisor +  (反向代理)nginx

 

(1)python:我是看廖学峰的python教程 

学了一些基本的语句,然后做的时候不懂再查。

 

(2)tornado:我是看这个教程开始学的 

tornado用起来特别快,它既可以像spring里转发器那样直接映射请求,又可以像tomcat那样直接监听某个端口的http请求,这些东西tornado都帮我们做好了,我们只需要书写get和post方法就可以了。

其它的就和java web里面差不多了。没有springMVC和hibernate的框架,可以自己在python包里面分层controller, service, dao。

 

(3)mongodb:非关系型数据库,对于一张表(mongodb里叫collection集合)的每一行数据(mongodb里叫document文档)没有要求统一相同的字段名,可多可少,参差不齐。还有一点就是不支持事务,在python中执行多条读写语句的时候没法回滚,所以要自己想办法在程序中防止并发导致的问题。

比如我需要从collection中find一个status为0的document出来并update成1,代表用户正在查看,用户进行修改后,然后设置status为2之后再放回去,在这里0代表未浏览,1代表正在浏览,2代表已修改。这个时候可能很多个用户同时取到了这个status为0的数据,这就违背了我们的意愿,让很多人对同一个数据进行了修改。可以考虑直接update_one把某个document的status由0改为1,然后增多一个唯一字段来标识这个document,用这个唯一字段来find到document,这个时候别的用户是无法取到该document的,因为update_one的时候会上锁,别人取不到这条数据。

 

(4)supervisor:supervisor是用python开发的进程管理程序,可以将普通的命令变成后台的守护进程,并监控进程状态。

安装好后可以在/etc/supervisor/conf.d目录下添加配置文件printprescription.conf,配置示例如下

[program:printprescription] #设置守护进程名
command = python /home/liaohuqiang/Code/printprescription/main2.py #设置执行命令
autorstart=true #设置随supervisor的启动而启动
stdout_logfile = /home/liaohuqiang/Code/printprescription/printprescription.log #设置日志路径
Salin selepas log masuk

 配置完成后,可以开启,关闭和重启supervisor服务。可以用supervisorctl status查看进程状态,还可以在相关日志文件查看错误信息

sudo /etc/init.d/supervisor start
sudo /etc/init.d/supervisor stop
sudo /etc/init.d/supervisor restart<br><br>sudo supervisorctl status printprescripton<br>vim cat /var/log/supervisor/xxx.log
Salin selepas log masuk

  

(5)nginx:nginx用于反向代理,可以监控80端口,把相应的请求转发到别的主机以及别的端口上,这里我们显示的图片的路径不在tornado的static中(static用来存放js和css等前端静态资源),而是在服务器另外的位置,所以可以通过nginx的转发来获取图片。另一方面,一般不会暴露其它端口(比如tornado监听的8001端口)给用户,所以用nginx来转发。此外,location /static/指令告诉nginx直接提供静态目录文件,而不再代理请求到tornado,nginx可以比tornado更高效地提供静态文件。

安装好nginx后,查看相关配置文件,发现这一句:include /etc/nginx/sites-enabled/*。可以在这个目录下新建配置文件进行配置

cat /etc/nginx/nginx.conf<br>sudo touch /etc/nginx/sites-enabled/default2
Salin selepas log masuk

配置示例如下,需要注意的是最下面的http://127.0.0.1:8001/ 这里最后一个斜杠如果不打,实际上会加上上面的printprescription,用户访问”主机/printprescription"就相当于访问"主机:8001/printprescription“了,由于自己在tornado上映射的是主机:8001/的请求,所以这个时候会出现404。

<span style="color: #000000">  upstream frontends {
      server </span><span style="color: #800080">222.222</span>.<span style="color: #800080">222.222</span>:<span style="color: #800080">8000</span><span style="color: #000000">;
      server </span><span style="color: #800080">222.222</span>.<span style="color: #800080">222.222</span>:<span style="color: #800080">8001</span><span style="color: #000000">;
  }
  
  server {
      listen </span><span style="color: #800080">80</span><span style="color: #000000">;
  
      location </span>/<span style="color: #000000"> {
         proxy_read_timeout </span><span style="color: #800080">1800</span><span style="color: #000000">;
         proxy_pass_header Server;
         proxy_set_header Host $http_host;
         proxy_redirect off;
         proxy_set_header X</span>-Real-<span style="color: #000000">IP $remote_addr;
         proxy_set_header X</span>-<span style="color: #000000">Scheme $scheme;
         proxy_pass http:</span><span style="color: #008000">//</span><span style="color: #008000">frontends;</span>
<span style="color: #000000">     }
 
    location </span>/doctorAfter/<span style="color: #000000"> {  #配置图片路径
         root </span>/home/<span style="color: #000000">wenserver;
    }
 
    location </span>/static/<span style="color: #000000"> {  #配置前端静态资源路径
         root </span>/home/xxx/Code/printprescription/<span style="color: #000000">view;
    }
 
    location </span>/printprescription/<span style="color: #000000"> {
         proxy_read_timeout </span><span style="color: #800080">1800</span><span style="color: #000000">;
         proxy_pass_header Server;
         proxy_set_header Host $http_host;
         proxy_redirect off;
         proxy_set_header X</span>-Real-<span style="color: #000000">IP $remote_addr;
         proxy_set_header X</span>-<span style="color: #000000">Scheme $scheme;
         proxy_pass http:</span><span style="color: #008000">//</span><span style="color: #008000">127.0.0.1:8001/;</span>
<span style="color: #000000">     }
 
 }</span>
Salin selepas log masuk

 

(6)opencv:一个计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。由于之前采集数据的时候在处方图片数据中混杂了人脸图片,所以采用oepncv里的算法检测人脸,如果是人脸则删除该记录。然而还是会残留一些人脸图片,需要人工清洗,这个数据好像之前有师兄清洗过,到时候拿过来重构一下数据库。

ps:安装opencv的时候imshow报错,虽然imshow用不到,但是强迫症使然,搞了我一天,来来回回装了十多次,最后还是没搞定,真是心力交瘁,特想吐嘈:垃圾opencv!毁我青春!颓我精神!耗我时间!磨我意志!浪费人生!!!

好吧我就随便说说,回头还要靠它干活。

cv2.error: /io/opencv/modules/highgui/src/window.<span style="color: #0000ff">cpp</span>:<span style="color: #800080">583</span>: error: (-<span style="color: #800080">2</span>) The <span style="color: #0000ff">function</span> is not implemented. Rebuild the library with Windows, GTK+ <span style="color: #800080">2</span>.x or Carbon support. If you are on Ubuntu or Debian, <span style="color: #0000ff">install</span> libgtk2.<span style="color: #800080">0</span>-dev and <span style="color: #0000ff">pkg-config</span>, <span style="color: #0000ff">then</span> re-run cmake or configure script <span style="color: #0000ff">in</span> <span style="color: #0000ff">function</span> cvShowImage
Salin selepas log masuk

 

Atas ialah kandungan terperinci ubuntu下python+tornado+supervisor+nginx部署. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika terminal Ubuntu tidak boleh dibuka Bagaimana untuk menyelesaikan masalah yang Ubuntu tidak boleh membuka terminal? Apakah yang perlu saya lakukan jika terminal Ubuntu tidak boleh dibuka Bagaimana untuk menyelesaikan masalah yang Ubuntu tidak boleh membuka terminal? Feb 29, 2024 pm 05:30 PM

Ia adalah masalah yang sangat biasa hari ini bahawa Ubuntu tidak membenarkan penggunanya membuka terminal. Jika anda menerima isu yang sama dan tidak tahu apa yang perlu dilakukan seterusnya, ketahui tentang lima pembetulan tentang cara menyelesaikan isu "Ubuntu tidak boleh membuka terminal" ini pada peranti Linux anda. Tanpa berlengah lagi, mari kita selami apa yang menyebabkannya dan penyelesaian yang tersedia untuknya. Mengapa Ubuntu tidak boleh membuka terminal padanya? Ini berlaku terutamanya apabila anda memasang beberapa perisian yang rosak atau mengubah suai konfigurasi terminal. Di samping itu, aplikasi atau permainan baharu yang berinteraksi dengan setempat dan merosakkannya boleh menyebabkan masalah yang sama. Sesetengah pengguna melaporkan pembetulan untuk isu ini apabila mencari Terminal dalam menu aktiviti Ubuntu. Ini menunjukkan bahawa

Log masuk ke Ubuntu sebagai pengguna super Log masuk ke Ubuntu sebagai pengguna super Mar 20, 2024 am 10:55 AM

Dalam sistem Ubuntu, pengguna root biasanya dilumpuhkan. Untuk mengaktifkan pengguna root, anda boleh menggunakan arahan passwd untuk menetapkan kata laluan dan kemudian menggunakan arahan su untuk log masuk sebagai root. Pengguna akar ialah pengguna dengan hak pentadbiran sistem tanpa had. Dia mempunyai kebenaran untuk mengakses dan mengubah suai fail, pengurusan pengguna, pemasangan dan pengalihan keluar perisian, dan perubahan konfigurasi sistem. Terdapat perbezaan yang jelas antara pengguna akar dan pengguna biasa Pengguna akar mempunyai kuasa tertinggi dan hak kawalan yang lebih luas dalam sistem. Pengguna akar boleh melaksanakan perintah sistem yang penting dan mengedit fail sistem, yang tidak boleh dilakukan oleh pengguna biasa. Dalam panduan ini, saya akan meneroka pengguna akar Ubuntu, cara log masuk sebagai akar, dan bagaimana ia berbeza daripada pengguna biasa. Notis

Sekilas tentang tujuh sorotan Ubuntu 24.04 LTS Sekilas tentang tujuh sorotan Ubuntu 24.04 LTS Feb 27, 2024 am 11:22 AM

Ubuntu24.04LTS, dengan nama kod "NobleNumbat" akan dikeluarkan tidak lama lagi! Jika anda menggunakan versi bukan LTS seperti Ubuntu 23.10, lambat laun anda perlu mempertimbangkan untuk menaik taraf. Bagi mereka yang menggunakan Ubuntu20.04LTS atau Ubuntu22.04LTS, patut difikirkan sama ada untuk menaik taraf. Canonical telah mengumumkan bahawa Ubuntu 24.04LTS akan menyediakan sokongan kemas kini sehingga 12 tahun, dipecahkan seperti berikut: Sebagai versi LTS, ia akan mempunyai 5 tahun penyelenggaraan biasa dan kemas kini keselamatan. Jika anda melanggan Ubuntu Pro, anda boleh menikmati 5 tahun sokongan tambahan. Pada masa ini, tempoh sokongan tambahan ini telah dilanjutkan kepada 7 tahun, bermakna anda akan mendapat sehingga 12 tahun

Ubuntu 20.04 perisian rakaman skrin pemasangan OBS dan tutorial grafik nyahpasang Ubuntu 20.04 perisian rakaman skrin pemasangan OBS dan tutorial grafik nyahpasang Feb 29, 2024 pm 04:01 PM

OBS ialah perisian sumber terbuka yang dibangunkan oleh penyumbang sukarelawan di seluruh dunia pada masa lapang mereka. Perisian rakaman langsung video, digunakan terutamanya untuk rakaman video dan penstriman langsung. Sila ambil perhatian bahawa apabila memasang Ubuntu/Mint, OBSStudio tidak boleh berfungsi sepenuhnya pada ChromeOS dan fungsi seperti tangkapan skrin dan tetingkap tidak boleh digunakan. Adalah disyorkan untuk menggunakan xserver-xorg1.18.4 atau versi yang lebih baru untuk mengelakkan potensi isu prestasi dengan ciri tertentu dalam OBS, seperti projektor skrin penuh. FFmpeg diperlukan Jika anda tidak memasang FFmpeg (jika anda tidak pasti, anda mungkin tidak melakukannya), anda boleh mendapatkannya dengan: sudoaptinstallffmpeg Saya sudah memasangnya di sini

Bagaimana untuk mengalih keluar Firefox Snap dalam Ubuntu Linux? Bagaimana untuk mengalih keluar Firefox Snap dalam Ubuntu Linux? Feb 21, 2024 pm 07:00 PM

Untuk mengalih keluar FirefoxSnap dalam Ubuntu Linux, anda boleh mengikuti langkah berikut: Buka terminal dan log masuk ke sistem Ubuntu anda sebagai pentadbir. Jalankan arahan berikut untuk menyahpasang FirefoxSnap: sudosnapremovefirefox Anda akan digesa untuk kata laluan pentadbir anda. Masukkan kata laluan anda dan tekan Enter untuk mengesahkan. Tunggu pelaksanaan arahan selesai. Setelah selesai, FirefoxSnap akan dialih keluar sepenuhnya. Ambil perhatian bahawa ini akan mengalih keluar versi Firefox yang dipasang melalui pengurus pakej Snap. Jika anda memasang versi Firefox yang lain melalui cara lain (seperti pengurus pakej APT), anda tidak akan terjejas. Pergi melalui langkah-langkah di atas

Android TV Box mendapat peningkatan Ubuntu 24.04 tidak rasmi Android TV Box mendapat peningkatan Ubuntu 24.04 tidak rasmi Sep 05, 2024 am 06:33 AM

Bagi kebanyakan pengguna, menggodam kotak TV Android kedengaran menakutkan. Walau bagaimanapun, pemaju Murray R. Van Luyn menghadapi cabaran untuk mencari alternatif yang sesuai untuk Raspberry Pi semasa kekurangan cip Broadcom. Usaha kerjasama beliau dengan Armbia

Bagaimana untuk memasang Angular pada Ubuntu 24.04 Bagaimana untuk memasang Angular pada Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js ialah platform JavaScript yang boleh diakses secara bebas untuk mencipta aplikasi dinamik. Ia membolehkan anda menyatakan pelbagai aspek aplikasi anda dengan cepat dan jelas dengan memanjangkan sintaks HTML sebagai bahasa templat. Angular.js menyediakan pelbagai alatan untuk membantu anda menulis, mengemas kini dan menguji kod anda. Selain itu, ia menyediakan banyak ciri seperti penghalaan dan pengurusan borang. Panduan ini akan membincangkan cara memasang Angular pada Ubuntu24. Mula-mula, anda perlu memasang Node.js. Node.js ialah persekitaran berjalan JavaScript berdasarkan enjin ChromeV8 yang membolehkan anda menjalankan kod JavaScript pada bahagian pelayan. Untuk berada di Ub

Bagaimana untuk memasang Podman pada Ubuntu 24.04 Bagaimana untuk memasang Podman pada Ubuntu 24.04 Mar 22, 2024 am 11:26 AM

Jika anda telah menggunakan Docker, anda mesti memahami daemon, bekas dan fungsinya. Daemon ialah perkhidmatan yang berjalan di latar belakang apabila bekas sudah digunakan dalam mana-mana sistem. Podman ialah alat pengurusan percuma untuk mengurus dan mencipta bekas tanpa bergantung pada mana-mana daemon seperti Docker. Oleh itu, ia mempunyai kelebihan dalam menguruskan kontena tanpa memerlukan perkhidmatan backend jangka panjang. Selain itu, Podman tidak memerlukan kebenaran peringkat akar untuk digunakan. Panduan ini membincangkan secara terperinci cara memasang Podman pada Ubuntu24. Untuk mengemas kini sistem, kami perlu mengemas kini sistem terlebih dahulu dan membuka shell Terminal Ubuntu24. Semasa kedua-dua proses pemasangan dan peningkatan, kita perlu menggunakan baris arahan. yang mudah

See all articles