ã¯ããã«
å€ãã®åå¿è ã®Webéçºè ã¯ãèªåã®äœåãã©ãã«æçš¿ããããèããŠããŸãã éåžžããããã®ç®çã«ã¯ãNIXã®ãããªã·ã¹ãã ãå®è¡ããŠãããã·ã³ã䜿çšãããŸãã ç§ã®éžæã¯Raspberry PIã§ããã
- ãã«Linuxã®å®è¡
- é·ãéããŒãã«ã®äžã«æšªããããã»ãããéããŸãã
åçãªå€éšIPã¢ãã¬ã¹ã䜿çšããŠããããã¯ãŒã¯äžã§å®è¡ãããŠãããµãŒããŒãæ§æããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ã倧èŠæš¡ãªãããžã§ã¯ãã®ç«ã¡äžãã«ã¯é©ããŠããŸããããããŒããã©ãªãªãšå人çšã¢ããªã±ãŒã·ã§ã³ã®ãã¢ã«ã¯éåžžã«é©ããŠããŸãã
å¿ èŠã«ãªããŸã
- Raspberry PIã¢ãã«BãB +ããŸãã¯Raspberry PI 2ïŒãããã®ã¢ãã«ã®ããŒãã«ã¯ã€ãŒãµããããããããïŒãšRaspbianãã€ã³ã¹ããŒã«ãããSSHãµãŒããŒãã¢ã¯ãã£ãã«ãªã£ãŠããã èšå®ã«ã€ããŠã¯ã ãã¡ã ã ãã¡ãããŸãã¯ãã¡ããã芧ãã ãã ã ã©ãºããªãŒã®ã©ã¹ãã¢ã³ã«å ããŠãå€æ°ã®ä»£æ¿ ãã£ã¹ããªãã¥ãŒã·ã§ã³ããããŸãã ããã§ã¯ã圌ããèšãããã«ããããããå³ãšè²ã®ããã«ãã
- åäœäžã®Djangoã¢ããªã±ãŒã·ã§ã³ã
- DDNS察å¿ã«ãŒã¿ãŒã DDNSã¯malinkèªäœã§èšå®ã§ããããããã®é ç®ã¯ãªãã·ã§ã³ã§ãã
ã¢ãã«B +ã®ã©ãºããªãŒã䜿çšããŸãã
æºåãã
Raspbian 7.8ã¯raspberryã«ã€ã³ã¹ããŒã«ãããŸãã
ãŸããsshçµç±ã§æ¥ç¶ããããã«ãããã¯ãŒã¯äžã®ã©ãºããªãŒãèŠã€ããå¿ èŠããããŸãã
nmap -sP 192.168.1.1/24 | grep raspberry
ç§ã®å Žåããããã¯ãŒã¯ã«ã¯2ã€ã®ã©ãºããªãŒãããããã®ãã¡ã®1ã€ã¯IPã¢ãã¬ã¹192.168.1.100ã®ã©ãºããªãŒã§ãã äžéšã®ãããã¯ãŒã¯ã§ã¯ãnmapã¯ãããã¯ãŒã¯ããã€ã¹åã衚瀺ããŸããã
ãã®å Žåããã¬ãã£ãã¯ã¹B8ïŒ27ïŒEBãæã€MACã¢ãã¬ã¹ã§raspberry piãèŠã€ããããšãã§ããŸãã
sudo nmap -sP -n 192.168.1.1/24 | grep -B 2 B8:27:EB
grepã®-Bãªãã·ã§ã³ã¯ãå°å·ããåã®è¡æ°ã決å®ããŸãã
sshäžã®ã©ãºããªãŒã«æ¥ç¶ããŠããŸãã
ssh pi@192.168.1.100
å§ããããã«ã raspi-configã䜿çšããŠã©ãºããªãŒã1 GHzã«å éããŸãã
Pythonããã±ãŒãžãããŒãžã£ãŒãã€ã³ã¹ããŒã«ãã
sudo apt-get install python-pip
å¿ èŠãªããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«é²ã¿ãŸãã ç§ã®Webã¢ããªã±ãŒã·ã§ã³ã¯MySQL DBMSã䜿çšããŠããŸãã FrontginãšBackendã¯ãããããnginxãšgunicornã§ãã
sudo apt-get install nginx gunicorn mysql-client mysql-server python-mysqldb
mysqlã®ã€ã³ã¹ããŒã«äžã«ãã«ãŒãDBMSãŠãŒã¶ãŒã®ããŒã¿ãå ¥åããå¿ èŠããããŸãã python-mysqldbã¯ãDjangoã§ã¢ãã«ãæäœãããšãã«å¿ èŠãªãã©ã€ããŒã§ãã PythonãªããžããªããDjangoãã€ã³ã¹ããŒã«ããŸãã
sudo pip install django
å·çæç¹ã§ãã©ãºããªãŒ1.2.1ããã³0.14.5ã®ãªããžããªã«ããnginxããã³gunicornã®çŸåšã®ããŒãžã§ã³ã ã©ãºããªãŒ5.5ã®MySQLããŒãžã§ã³ã Djangoã䜿çšããã«ã¯ã SciPyãã€ã³ã¹ããŒã«ããå¿ èŠããããŸã ã
sudo apt-get install python-scipy
nginx 1.2.1ã¯éæšå¥šã§ãã æ°ãããã®ã¯sourceããã³ã³ãã€ã«ã§ããŸãã æ°é®®ãªgunicornã¯ãPythonãªããžããªããã€ã³ã¹ããŒã«ã§ããŸãã
ãµãŒããŒã®ã»ããã¢ãã
Webã¢ããªã±ãŒã·ã§ã³ãã©ãºããªãŒã«é 眮ããŸãïŒããšãã°ã/ home / piã«ïŒã
åäœããèšå®ãããå Žåã¯ãé©åãªãã£ã¬ã¯ããªã«ã³ããŒããã ãã§ãïŒ
- nginx / etc / nginx /ãµã€ã察å¿/
- gunicorn /etc/gunicorn.d/ã®å Žå
nginxã§è€éãªããšã¯ãããŸããã gunicornã®èšå®ã«æ³šæãæãããã§ãã
CONFIG = { 'mode': 'wsgi', 'working_dir': '/home/pi/project', #'working_dir': '/home/pi/project/project', 'user': 'www-data', 'group': 'www-data', 'python': '/usr/bin/python', 'args': ( '--bind=127.0.0.1:8081', '--workers=5', # 5 '--graceful-timeout=60', '--timeout=60', #'--debug', #'wsgi:application', 'project.wsgi', ), }
working_dirïŒwsgy.pyãã¡ã€ã«ãžã®ãã¹ïŒã
'/home/pi/project/project'
ãšããŠæå®ãããargsã§
'wsgi:application'
ãšããŠæå®ãããŠããå ŽåãMalinkaã§ã¯ãŒã«ãŒãæåã«èµ·åããçç±ã瀺ãããšãªãæ»äº¡ããŸãïŒããšãã°ãUbuntuã®å Žåã gunicornã¯äž¡æ¹ã®ãªãã·ã§ã³ã§åäœããŸãïŒã
MySQLã®ç§»è¡
mysqldumpãŠãŒãã£ãªãã£ã䜿çšããŠãæ¢åã®ããŒã¿ããŒã¹ããã³ãã§ããŸãã
mysqldump -u root -p dbname > dbname.sql
çµæã®ãã¡ã€ã«ã¯ãæ§é ãšããŒã¿ããŒã¹ã«ä¿åãããæ å ±ã埩å ããäžé£ã®SQLã¹ããŒãã¡ã³ãã§æ§æãããŸãã
ã©ãºããªãŒã«ããŒã¿ããŒã¹ãäœæããŸãã mysqlã·ã§ã«ãèµ·åããŸãã
mysql -u root -p
æ°ããããŒã¿ããŒã¹ãè¿œå ããŸãã
mysql> create database dbname character set utf8 collate utf8_general_ci; mysql> grant all privileges on dbname.* to someusr@localhost identified by 'somepassword';
ãã³ãããããŒã¿ã埩å ããŸãã ãã³ããµã€ãºã162 MBã®å Žåãå埩æéã¯çŽ10åã§ããã
mysql -u root -p dbname < dbname.sql
ããŒã¿ããŒã¹ãå€éšãã©ã€ãã«ä¿åããããšããå§ãããŸããããããªããšãé »ç¹ãªæžã蟌ã¿æäœã®ããã«micro SDã«ãŒããããã«äœ¿çšã§ããªããªãå¯èœæ§ããããŸãã ãããè¡ãæ¹æ³ã¯ããã§èªãããšãã§ããŸã ã mysqlæ§æã¯ããã¹/etc/mysql/my.cnfã«ãããŸã
確èªãã
nginxãšgunicornãåèµ·åããŸãã ãã¹ãŠãæ£ããæ§æãããŠããã°ãã¡ã€ã³ããŒãžãéãããšãã§ããŸãã
ã¹ãã¬ã¹ãã¹ãã«åæ ŒããŸãã Apacheãã³ãããŒã¯ãã€ã³ã¹ããŒã«ããŸãã
sudo apt-get install apache2-utils
1000åã®Raspberry PIã¢ãã«B +ã¯ãšãªã䜿çšããŠ4ã€ã®ã¹ã¬ããã§ãã¹ãããŸãã
ab -c 4 -n 1000 http://192.168.1.100/
vladislav@vladislav-N53SV:~$ ab -c 4 -n 1000 http://192.168.1.100/ This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.100 (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: nginx/1.8.0 Server Hostname: 192.168.1.100 Server Port: 80 Document Path: / Document Length: 24839 bytes Concurrency Level: 4 Time taken for tests: 1309.607 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 25018000 bytes HTML transferred: 24839000 bytes Requests per second: 0.76 [#/sec] (mean) Time per request: 5238.429 [ms] (mean) Time per request: 1309.607 [ms] (mean, across all concurrent requests) Transfer rate: 18.66 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.1 1 1 Processing: 4924 5237 91.4 5227 6419 Waiting: 4919 5227 91.3 5217 6403 Total: 4925 5238 91.4 5228 6420 Percentage of the requests served within a certain time (ms) 50% 5228 66% 5245 75% 5255 80% 5265 90% 5296 95% 5335 98% 5382 99% 5667 100% 6420 (longest request)
ã»ãšãã©ã®å Žåãã¯ãšãªã¯ããŒã¿ããŒã¹ãæäœãããããã¯ãšãªã¯é ããªããŸãã Raspberry PI 2ã¢ãã«Bãæè¿ç»å ŽããŸããããåãèšå®ãšããŒã¿ã§äœãã§ããã®ãèŠãŠã¿ãŸãããã
vladislav@vladislav-N53SV:~$ ab -c 4 -n 1000 http://192.168.1.14/ This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.1.14 (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: nginx/1.8.0 Server Hostname: 192.168.1.14 Server Port: 80 Document Path: / Document Length: 24838 bytes Concurrency Level: 4 Time taken for tests: 170.083 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 25017000 bytes HTML transferred: 24838000 bytes Requests per second: 5.88 [#/sec] (mean) Time per request: 680.330 [ms] (mean) Time per request: 170.083 [ms] (mean, across all concurrent requests) Transfer rate: 143.64 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.1 1 1 Processing: 569 678 104.6 650 1338 Waiting: 567 676 104.1 647 1334 Total: 569 679 104.6 651 1338 Percentage of the requests served within a certain time (ms) 50% 651 66% 682 75% 708 80% 727 90% 796 95% 890 98% 1045 99% 1138 100% 1338 (longest request)
Raspberry PI 2ã¯ããªã¯ãšã¹ããå¹³å6.16åé«éã§åŠçããŸãã Raspberryéçºè ã¯ã ãŸãããŸããã
DDNSã»ããã¢ãã
ã«ãŒã¿ãŒãŸãã¯ã©ãºããªãŒèªäœã§DDNSãæ§æã§ããŸãã æ°å¹Žåãã䜿çšããŠããããã No IPãéžæããŸããã ç¡æã§äœ¿çšããããšãæ€èšããŠãã ããã
ãã¹ãç»é²
ã¢ã«ãŠã³ãããæã¡ã®å Žåã¯æ¿èªãè¡ãããã以å€ã®å Žåã¯ç»é²ããŸãã æ¿èªåŸã ããã«è¡ããŸã ã
[AddHost]ãã¯ãªãã¯ããŠããã©ãŒã ã«å ¥åããŸãã
以äžã§AddHostãã¿ã³ãã¯ãªãã¯ããŸã
ãã¹ããè¿œå ãããŸããã ãã¹ãåã®å³åŽã«ããããã¯ãŒã¯ã®å€éšIPã¢ãã¬ã¹ã衚瀺ãããŸãã
[AddHost]ãã¯ãªãã¯ããŠããã©ãŒã ã«å ¥åããŸãã
以äžã§AddHostãã¿ã³ãã¯ãªãã¯ããŸã
ãã¹ããè¿œå ãããŸããã ãã¹ãåã®å³åŽã«ããããã¯ãŒã¯ã®å€éšIPã¢ãã¬ã¹ã衚瀺ãããŸãã
ã«ãŒã¿ãŒã§DDNSãæ§æãã
ããšãã°ãpadavanããŒãžã§ã³3.4.3.9-091ã®ãã¡ãŒã ãŠã§ã¢ã䜿çšããŠãASUS RT-N56Uã§DDNSãæ§æããŸãã ã«ãŒã¿ãŒã®ã¡ãã¥ãŒããŒãžãéã
ïŒäŸïŒ192.168.1.1ïŒã WAN-> DDNSã
no-ip.comãµãŒãã¹ãéžæããç»é²ããŒã¿ãšè¿œå ãã¹ãïŒtechnopark-test.ddns.netïŒãæå®ããŸãã
æ®ãã®ãã©ã¡ãŒã¿ãŒã¯èªç±ã«èšå®ããŸãã
ããã§ãå€éšIPã¢ãã¬ã¹ãå€æŽããŠããã¢ããªã±ãŒã·ã§ã³ã¯ãããã¯ãŒã¯äžã§äœ¿çšå¯èœã®ãŸãŸã«ãªããŸãã
ããŒã転éèšå®
ãã¹ãã«ã¢ã¯ã»ã¹ãããšããMalinkaã¯Webã¢ããªã±ãŒã·ã§ã³ãæäŸããå¿ èŠããããŸãã ã«ãŒã¿ãŒã¯ãããŒãXããå éšããŒãYãžã®å€éšããã®çä¿¡ãã±ããã®è»¢éãè¡ã£ãŠããŸããã«ãŒã¿ãŒã¡ãã¥ãŒã§ã[WAN]> [ããŒã転é]ã«ç§»åããŸãã å€éš80ããŒããraspberry 80ããŒãã«ãªãã€ã¬ã¯ãããå¿ èŠããããŸãã æ°ããã«ãŒã«ãè¿œå ããŠãå€æŽãé©çšããŸãã
ããã§ãMalinkaã¯ãã¹ãŠã®çä¿¡ãã±ãããããŒã80ã§åŠçããŸãã ãã©ãŠã¶ã®ã¢ãã¬ã¹ããŒã«IPãªãã§åä¿¡ãããã¹ããå ¥åããŠç¢ºèªããŸãã
ããã§ãã€ã³ã¿ãŒããããŠãŒã¶ãŒãWebã¢ããªã±ãŒã·ã§ã³ã䜿çšã§ããããã«ãªããŸããã
ã©ãºããªãŒã§DDNSãæ§æããŸã
raspberryã«ãã©ã€ããŒãIPãããå Žåããã®ãªãã·ã§ã³ã¯é©åã§ã¯ãããŸãããããã¯ãããŒã«ã«IPã¢ãã¬ã¹ãNo IPãµãŒãã¹ã«è»¢éããããã§ãã
sudo apt-get install ddclient
ã€ã³ã¹ããŒã«äžã«ããµãŒãã¹ãéžæããå¿ èŠããããŸãã ãã®ä»ãéžæããdynupdate.no-ip.comããããã³ã«dyndns2ããŠãŒã¶ãŒåããã¹ã¯ãŒããã€ã³ã¿ãŒãã§ãŒã¹-eth0ããã¹ãåãå ¥åããŸãã
æ€èšŒã®ããã«ãIPæŽæ°ééã60ç§ã«èšå®ããŸããã ãã¡ã€ã«/ etc / default / ddclientã§ãå€daemon_interval = "60"ãèšå®ããå¿ èŠããããŸãã
ãã¶ãŒã
ç§ã®ã©ãºããªãŒã¯é·ãéããŒãã«ã®äžã«æšªããã ãtm1638ãšDHT11ãšãšãã«ã»ãããéããŠãéšå±ã®æž©åºŠãšæ¹¿åºŠã®è¡šç€ºããã®ä»ã®æ å ±ã衚瀺ããŠããŸããã
ããã§ããç§ã¯ãžã£ã³ãŽããGPIO Raspberry PIãå¶åŸ¡ããããšããããšã«èå³ããããŸããã åæã®ä»äºãçµã¿åãããã·ã³ãã«ãªWebã¢ããªã±ãŒã·ã§ã³ãéçºããŸããã DHT11ã§æž¬å®ãã枩床ãšæ¹¿åºŠãããã€ãã®æçšãªæ å ±ã確èªãã8ãªã¬ãŒã¢ãžã¥ãŒã«ïŒé»å補åã®å¶åŸ¡ã«äœ¿çšå¯èœïŒãå¶åŸ¡ããããã¹ããtm1638ã«éä¿¡ã§ããŸãã
GPIOã管çããã«ã¯ãã«ãŒãæš©éã§ãµãŒããŒãå®è¡ããå¿ èŠããããŸãã ããã¯æœåšçãªè匱æ§ã§ãã
Webã¢ããªã±ãŒã·ã§ã³ãå®å šã«äœ¿çšããã«ã¯ããµãŒããŒãã¹ãŒããŒãŠãŒã¶ãŒæš©éãªãã§åäœããhttpsãæ§æããã¢ã«ãŠã³ãã管çããæ©èœãè¿œå ãããã°ãç¶æãã管ç察象ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãå ±æããé»å補åã®ã¹ã±ãžã¥ãŒã«ãããæäœãªã©ãè¡ããŸãã
ãã ããããã¯ãŸã£ããå¥ã®èšäºã§ãã
ãããã«
Raspberry PIã¢ãã«BãB +ãŸãã¯Raspberry PI 2ã ãã¯ãŒãã³ã¯ ãããã³ããªãŒãã³ãã€ãŒãµããããžã£ãã¯ã䜿çšãããšããã¹ããã©ã¯ãã£ã¹ãå®èšŒããããã«äœ¿çšã§ããã³ã³ãã¯ããªãµãŒããŒãåŸãããŸãã Raspbianãå®è¡ããŠããRaspberry PIã§Djangoã¢ããªã±ãŒã·ã§ã³çšã®ãµãŒããŒãã»ããã¢ããããããšã¯ãä»ã®Linuxãã«ããšå€§å·®ãããŸããã ãªããžããªå ã®ããã±ãŒãžã¯å»æ¢ãããå¯èœæ§ããããŸãã æ°ããããŒãžã§ã³ã䜿çšããã«ã¯ããœãŒã¹ããããã°ã©ã ãæåã§ã³ã³ãã€ã«ã§ããŸãã
ãã¢ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒã ã
PSãã¯ãããŒã¯ã®ååãè³æã®æºåã«ååããŠãããããšã«æè¬ããŸãã
PSSè¯ãã¢ããã€ã¹ãã³ã¡ã³ããèããŠãè³æãä¿®æ£ããæºåãã§ããŠããŸãã
ãã®èšäºã¯ãTechnopark Mail.Ruèšäºã³ã³ãã¹ãïŒpark.mail.ruïŒã®äžç°ãšããŠäœæãããŸããã