1. 程式人生 > >樹莓派4B踩坑指南 - (15)搭建線上python IDE

樹莓派4B踩坑指南 - (15)搭建線上python IDE

> 今天想在樹莓派上自己搭一個線上的python IDE,於是找到了一篇教程--Fred913大神的[從頭開始製作OJ-線上IDE的搭建](https://www.cnblogs.com/sheng-fan/p/11357074.html) > 自己嘗試動手做了一下, 還是發現不少細節需要注意, 記錄在此 > 如果不知道怎麼用樹莓派搭建網站的可以參考我之前的文章: [樹莓派4B踩坑指南 - (11)免費搭建網站(寶塔,花生殼)](https://www.cnblogs.com/bowen404/p/11979429.html) > demo地址: [http://bowen.51mypc.cn/editor/](http://bowen.51mypc.cn/editor/) # 主要環境 - PHP - Nginx/Apache - Python3 # 主要步驟 ## 1) /api/python.php 1. 網站根目錄下新建資料夾`api`, 注意這裡需要sudo或者su許可權(下同), 然後使用`mkdir api`來建立 2. `touch python.php` # 在`api`中新建檔案`python.php`, 3. `nano python.php` # 在檔案中貼上以下內容 ```php ",passthru("python3 /tmp/usrcode".$randint.".py 2>&1")); //把換行轉為html格式 unlink("/tmp/usrcode".$randint.".py"); //刪除使用者程式碼,以免造成tmp目錄擁擠 ``` 4. 儲存退出 ## 2) /editor/src 1. 回到網站根目錄, `mkdir editor` 2. 去這裡(https://github.com/ajaxorg/ace-builds)點`download zip`, 然後把`ace-builds-master.zip`隨便解壓到哪個地方, 然後把`ace-builds-master`裡邊所有的東西複製到`editor`資料夾, 如`cp -r /home/pi/Desktop/n/ace-builds-master/* /www/wwwroot/bowen.51mypc.cn/editor/`, 命令中的 `-r` 和 `/*` 不要漏了. 複製完確認一下應該有這樣的一個目錄:`/editor/src` 3. 新建`index.php`, `touch index.php`(這裡跟原文有出入, 下載的包裡沒有index.html) 4. 在`index.php`中放入如下程式碼(這裡跟原文有出入, 原文寫的是作者自己的網址, 這裡刪掉了php和html的選項並將python.php的地址改成了相對路徑): ```php
FredTools IDE

      
      
        

執行結果:

自由模式

在此模式下,你可以自由的使用FredTools IDE。

任務:無




``` ## 3) 除錯執行 1. 滿心歡喜的開啟`bowen.51mypc.cn/editor`, 然後就悲劇了:![無法使用](https://img2020.cnblogs.com/blog/1044828/202005/1044828-20200507234157540-1861225697.jpg) 2. 仔細讀程式碼發現裡邊有一行`
` 哦, 原來沒有這個檔案所以卡這了, 那就回去新建一個吧 3. 回到網站根目錄, `nano skin.html`, 寫入一行``, 儲存退出. (這裡跟原文有出入, 因為實際上並沒有面板可以換, 就把其他的刪掉了...) 4. 重新整理頁面, 誒, 果然可以了...嗎? ![](https://img2020.cnblogs.com/blog/1044828/202005/1044828-20200507234741702-1090515190.png) 5. 百度了一下, 這個問題應該是`php.ini`中的`passthru函式`被禁用了, 本想去找這個ini檔案, 後來想想這種東西估計寶塔面板裡就有,就去找了一下, 還真找到了: ![](https://img2020.cnblogs.com/blog/1044828/202005/1044828-20200507234930925-1421788028.jpg) 6. 大功告成! `print("hello world")` ![](https://img2020.cnblogs.com/blog/1044828/202005/1044828-20200507235017870-2002055605.jpg) ## 待解決問題 1. 試了下, 這裡用不了input()函式(`EOFError: EOF when reading a line`), 估計是互動性沒法滿足, 希望後續能補上這個不足吧! 2. 不知道效能佔用怎麼樣, 如果多人同時呼叫的話, 有可能會有新問題, 以後再