怎麼在雲伺服器商運行軟體
Ⅰ 如何在阿里ECS雲端運行Jupyter Notebook進行機器/深度學習
1.首先你得有一台雲伺服器,這里我選用的是阿里雲ECS基礎版。別的伺服器都是大同小異,按步驟應該都可以。
2.下載遠程連接軟體putty,點擊下載,輸入阿里雲ECS公網IP,埠填22,SSH連接,按open按鈕就可以連接到遠程主機了。輸入賬號密碼就可以登陸遠程主機。(linux輸入密碼不會有任何顯示,不要懷疑自己鍵盤出問題了)
2.安裝Anaconda.Anaconda集成了大量的第三方pyhton庫,使用簡單,這里我們就選它了。
mkdir是新建一個目錄,用於放置我們的Anaconda.(這里並未分區,因為我也不會啊!委屈)
cd是進入目錄
wget 是從某個網址下載某個文件,後面是下載地址。你可以選擇你需要的版本,anaconda下載地址:https://www.continuum.io/downloads#linux
bash就是安裝anaconda
3.設置Jupyter登陸密碼
4.修改jupyper配置文件
5.啟動jupyter。在命令行輸入jupyter notebook &將jupyter加入任務。
6.遠程訪問。最重要的一步,退出所有連接!ecs不允許多終端在線的打開瀏覽器,輸入訪問地址http://ip:8888,輸入第3步設置的Jupyter密碼即可登錄
Ⅱ 怎樣使用雲服務
盡管雲伺服器具有種種好處,但是要想玩轉這種高科技的玩藝,還是需要有一定的知識背景。而雲伺服器在各行各業的應用非常廣泛,主要包括了辦公類應用(企業管理系統OA、ERP、CRM、企業郵箱等)、網站類應用(網站、論壇、博客等)以及其他類型的應用(資料庫、虛擬主機等)。
下面以華雲為例,以流程形式,一步步為大家介紹如何實現雲伺服器上的這些應用。
網站應用伺服器
網站是伺服器上最常見的應用,按規模可以根據網站的日均PV區分,按類型可以區分為門戶類網站、企業類網站、個人網站、交易型網站、論壇、博客等。
網站應用伺服器的部署流程如下:在雲伺服器上部署網站前,首先必須確保您有雲伺服器的管理許可權,或者是雲伺服器的空間和介面程序。
擁有雲伺服器的管理許可權後,在雲伺服器上實現網站應用的步驟如下:
1、需要在系統上安裝安裝web服務如IIS(默認有裝),apache;
2、需要安裝網站的相應環境,如asp.net1.0/2.0/3.0/3.5/4.0,php;
3、需要網站所使用的資料庫,如mysql,mssql。
擁有雲伺服器的空間和介面程序,在雲伺服器上實現網站應用的步驟如下:
1、 需要在web服務上配置好網站所需的相應環境;
2、 需要添加網站所使用的許可權;
3、 開啟網站使用的埠。
部署網站需要注意以下幾點:
1、 防火牆是否有做一些限制,如網站的80埠是否有開啟;
2、 伺服器是否有做一些會阻止外部訪問網站的安全策略;
3、 域名解析式否正確,是否對網站綁定了相應的域名;
4、 相關的網站環境是否配置正確,網站文件的許可權是否設置正確,可以使用探針進行測試。
常規辦公應用伺服器
隨著電腦在辦公中的需求越來越重要,辦公軟體也成為了企業必須具備的基本軟體應用。辦公軟體的種類非常多,應用最多的主要是OA、ERP、CRM、企業郵箱等,這些辦公軟體在雲伺服器上的部署是大致相同的。
在雲伺服器上實現辦公應用的步驟如下:
1、 安裝所需要的辦公軟體;
2、 安裝辦公軟體相應的資料庫;
3、 檢查辦公軟體所需要的埠是否有開啟;
4、 檢查防火牆開啟情況,是否有對埠進行限制。
雖然各種常規軟體應用在雲伺服器上部署大致相同,但也存在一定的差異,具體如下:
常規軟體分為CS架構和BS架構的軟體,CS架構的軟體直接安裝即可,安裝BS架構的軟體需要安裝該軟體所需要的環境,如asp.net,php。
部署辦公類應用需要注意以下幾點:
1、 如果是BS架構的的應用,需要安裝相應的環境如asp.net,php;
2、 軟體所使用的埠是否有限制,如郵局使用的埠一般為25和110;
3、 軟體的服務是否有設置成開機啟動,避免伺服器重啟後,應用沒有啟動。
資料庫應用伺服器
隨著IT行業應用部署規模的日益增大,越來越多的企業使用雲伺服器作為單獨的資料庫應用伺服器,用雲伺服器安裝資料庫服務。
在雲伺服器上實現資料庫應用的步驟如下:
1、 安裝相應的資料庫軟體如mysql;
2、 配置mysql資料庫,設置資料庫文件的存放路徑,對配置文件進行相應的編譯;
3、 管理資料庫的用戶名與密碼,避免使用弱密碼,防止被入侵;
4、 確認是否已將資料庫服務設置成開機自動啟動。
部署資料庫應用需要注意以下幾點:
1、 對數據進行備份,以免數據丟失。
2、 保證資料庫應用伺服器的安全,以免黑客盜取數據或破壞數據。
虛擬主機應用伺服器
虛擬主機極大的促進了網路技術的應用和普及,虛擬主機的租用服務也成了網路時代新的經濟形勢。之前都是使用物理伺服器來實現虛擬主機應用,隨著雲計算技術的發展與普及,越來越多的網路用戶選擇了使用雲伺服器來實現虛擬主機應用。
在雲伺服器上實現虛擬主機應用的步驟如下:
1、 搭建.NET環境和php環境等;
2、搭建好IIS來存放主機站點,搭建好FTP服務,方便數據的上傳於下載;
3、 確認是否設置虛擬主機服務開機自動啟動。
部署虛擬主機應用需要注意以下幾點:
1、 需要確保網路的暢通,保證主機網站能夠正常的運行;
2、 需要安裝相應的殺毒軟體,配置相應的安全策略,確保伺服器的安全與穩定,主機才能運行流暢;
3、 可以安裝虛擬主機管理系統軟體,方便購買與管理虛擬主機;
4、 如果安裝了虛擬主機管理系統軟體,則需要保障它的正常運行,防止管理主機與購買主機時出錯。
Ⅲ solidworks能在雲伺服器上運行嗎
可以。藉助達索系統3DEXPERIENCEWORKS、華為雲等第三方軟體平台,隨時隨地只要有設備能上網,就能通過瀏覽器進行產品的設計、驗證、製造及數據管理等各個環節的相關工作。
Ⅳ 如何在雲端伺服器運行Jupyter Notebook
以下是主要步驟,前提是,擁有一個虛擬機,並且有ssh賬號登陸。沒有的同學可以自己在阿里雲之類的服務商處申請,個人推薦」1元免費試用「1個月的微軟雲。一般這些主機服務商都會提供一個基本的教程,因此從設置主機直到創建賬號,ssh登陸都應該不是什麼問題。
接下來,下載miniconda,一個科學計算環境管理軟體,Anaconda的最小發型版本(假設運行的是64位Linux虛擬機):
wget"https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh"
然後安裝:
sudobashMiniconda-latest-Linux-x86_64.sh
然後通過miniconda的環境管理軟體,conda安裝必要被ipython和ipython-notebook.
condainstallipython
condainstallipython-notebook
接下來,我們需要創建一個名為nbserver的配置。
ipythonprofilecreatenbserver
這將創建一個文件夾,其中包含一些原始的配置文件。我們跳轉到這個文件夾進行一些配置
cd~/.ipython/profile_nbserver/
由於ipythonNotebook要求https連接,因此我們需要創建一個ssl證書。
opensslreq-x509-nodes-days365-newkeyrsa:1024-keyoutmycert.pem-outmycert.pem
命令執行後根據提示輸入信息就好,當然,這個證書並未獲得認證,因此用chrome之類的瀏覽器訪問的時候會得到一些錯誤信息,這個問題我們一會兒說。接下來我們創建一個密文的密碼。
python-c"importIPython;printIPython.lib.passwd()"
運行之後進入一個創建密碼hash值的小程序,根據提示輸入你想用的安全口令:
Enterpassword:
Verifypassword:
sha1:b86e933199ad:a02e9592e59723da722..#這是我的密碼的hash值,後段被刪除,你的密碼得到的結果應該不同
然後開始編輯配置文件,通過vi編輯文件的命令如下:
viipython_notebook_config.py
這個文件可能不存在,那麼通過vi創建一個,配置文件的內容如下:
c=get_config()
#所有matplotlib的圖像都通過iline的方式顯示
c.IPKernelApp.pylab='inline'
#這一行指向我們剛剛創建的ssl證書
c.NotebookApp.certfile=u'/home/azureuser/.ipython/profile_nbserver/mycert.pem'
#給出剛剛創建的密碼的哈希值
c.NotebookApp.password=u'sha1:b86e933199ad:a02e9592e5etc...'
c.NotebookApp.ip='*'
#給出運行的埠,ipython默認為8888
c.NotebookApp.port=8888
#禁止在運行ipython的同時彈出瀏覽器
c.NotebookApp.open_browser=False
編輯完成以後按兩次shift+z保存退出
配置完畢以後就可以運行ipythonNotebook的服務端了:
jupyternotebook--config=/home/azureuser/.ipython/profile_nbserver/ipython_notebook_config.py#給出你剛才創建的nbserver路徑,這里為微軟azure雲默認的情況
當然,微軟雲還需要配置一下伺服器端的endpoint,將雲主機的https埠(443)指向內部的8888埠。
在你的瀏覽器地址欄輸入:
https://www.youappdomain.com
這時候會遇到https提示根證書並非認證證書,不用管這個提示繼續進入,voila,你的ipythonNotebookserver架好啦!
輸入你剛才創建的密碼,就可以開始像在本地一樣使用了。
Ⅳ 有沒有一個辦法讓一款PC的軟體在雲伺服器上運行,就是直接用exe軟體。然後有沒有可以申請免費體驗的
奇妙的想法,呵呵。即使你能用雲端的軟體,那這個軟體程序也應該要安裝在雲端的伺服器啊,到底exe還是安裝程序的。我想以後雲端可以替代台式電腦的主機,那樣家裡直接駕個顯示器就行,到時你的想法也就實現了。至於你說的想體驗,我還是勸你網路一下吧。多麼贊的領悟。
Ⅵ 如何在雲伺服器上部署持久運行scrapy
作為linux伺服器管理員,經常要使用ssh登陸到遠程linux機器上做一些耗時的操作。
也許你遇到過使用telnet或SSH遠程登錄linux,運行一些程序。如果這些程序需要運行很長時間(幾個小時),而程序運行過程中出現網路故障,或者客戶機故障,這時候客戶機與遠程伺服器的鏈接將終端,並且遠程伺服器沒有正常結束的命令將被迫終止。
又比如你SSH到主機上後,開始批量的scp命令,如果這個ssh線程斷線了,scp進程就中斷了。在遠程伺服器上正在運行某些耗時的作業,但是工作還沒做完快要下班了,退出的話就會中斷操作了,如何才好呢?
我們利用screen命令可以很好的解決這個問題。實現在斷開SSH的情況下,在伺服器上繼續執行程序。
那什麼是screen命令?
Screen被稱之為一個全屏窗口管理器,用他可以輕松在一個物理終端上獲得多個虛擬終端的效果。
Screen功能說明:
簡單來說,Screen是一個可以在多個進程之間多路復用一個物理終端的窗口管理器,這意味著你能夠使用一個單一的終端窗口運行多終端的應用。Screen中有會話的概念,用戶可以在一個screen會話中創建多個screen窗口,在每一個screen窗口中就像操作一個真實的telnet/SSH連接窗口那樣。
Screen命令語法:
screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
Screen命令參數:
-A -[rR] 將所有的視窗都調整為目前終端機的大小。
-c filename 用指定的filename文件替代screen的配置文件』.screenrc』.
-d [pid.tty.host] 斷開screen進程(使用該命令時,screen的狀態一定要是Attached,也就是說有用戶連在screen里)。一般進程的名字是以pid.tty.host這種形式表示(用screen -list命令可以看出狀態)。
-D [pid.tty.host] 與-d命令實現一樣的功能,區別就是如果執行成功,會踢掉原來在screen里的用戶並讓他logout。
-h <行數> 指定視窗的緩沖區行數。
-ls或–list 顯示目前所有的screen作業。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-p number or name 預先選擇一個窗口。
-r [pid.tty.host] 恢復離線的screen進程,如果有多個斷開的進程,需要指定[pid.tty.host]
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s shell 指定建立新視窗時,所要執行的shell。
-S <作業名稱> 指定screen作業的名稱。(用來替代[pid.tty.host]的命名方式,可以簡化操作).
-v 顯示版本信息。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
-x 恢復之前離線的screen作業。
Screen命令的常規用法:
screen -d -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶再連接。
screen -D -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶並讓他logout再連接
screen -ls或者-list:顯示存在的screen進程,常用命令
screen -m:如果在一個Screen進程里,用快捷鍵crtl+a c或者直接打screen可以創建一個新窗口,screen -m可以新建一個screen進程。
screen -dm:新建一個screen,並默認是detached模式,也就是建好之後不會連上去。
screen -p number or name:預先選擇一個窗口。
Screen實現後台運行程序的簡單步驟:
1> 要進行某項操作時,先使用命令創建一個Screen:
代碼如下:
[linux@user~]$ screen -S test1
2>接著就可以在裡面進行操作了,如果你的任務還沒完成就要走開的話,使用命令保留Screen:
代碼如下:
[linux@user~]$ Ctrl+a+d #按Ctrl+a,然後再按d即可保留Screen
[detached] #這時會顯示出這個提示,說明已經保留好Screen了
如果你工作完成的話,就直接輸入:
代碼如下:
[linux@user~]$ exit #這樣就表示成功退出了
[screen is terminating]
3> 如果你上一次保留了Screen,可以使用命令查看:
代碼如下:
[linux@user~]$ screen -ls
There is a screen on:
9649.test1 (Detached)
恢復Screen,使用命令:
代碼如下:
[linux@user~]$ screen -r test1 (or 9649)
Screen命令中用到的快捷鍵
Ctrl+a c :創建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一個窗口
Ctrl+a p :上一個窗口
Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換
Ctrl+a K(大寫) :關閉當前窗口,並且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,並且退回到原始shell狀態)
exit :關閉當前窗口,並且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,並且退回到原始shell狀態)
Ctrl+a d :退出當前終端,返回載入screen前的shell命令狀態
多窗口
screen,像許多的窗口管理器一樣,能支持多窗口。這個功能在處理多個任務且同時沒有打開新的會話時 很有用。作為一個系統管理員,我常常要同時開四五個SSH會話。在每個shell下,我可能要處理兩三個任務。不使用screen的話,需要15個SSH 會話,15次登錄,15個窗口等等。使用screen,每個系統都分配到一個單獨的會話中,我通過screen來管理系統上不同的作業。
要打開新的窗口,只需要使用「Ctrl-A」「c」。創建的新的窗口會顯示一個默認的命令提示符。例如,我可以運行top命令後再打開一個新的窗口來做其它的工作。Top繼續留在那運行!可以親身實驗一下,啟動screen並運行top。(註:為了節省空間我截斷了多個屏幕。)
啟動top
代碼如下:
Mem: 506028K av, 500596K used, 5432K free,
0K shrd, 11752K buff
Swap: 1020116K av, 53320K used, 966796K free
393660K cached
< p> PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2
現在可以通過「Ctrl-A」「c」來打開一個新窗口
代碼如下:
[admin@ensim admin]$
To get back to top, use "Ctrl-A "n"
Mem: 506028K av, 500588K used, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K used, 966796K free
392220K cached
< p> PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3
你可以創建多個窗口然後通過「Ctrl-A」「n」切換到下一個窗口,或者使用「Ctrl-A」「p」返回上一個窗口。當你在其它窗口工作時,其它窗口的每個程序都會保持運行。
退出screen
有兩種方式退出screen。第一種和登出一個shell一樣,你可以通過「Ctrl-A」「K」或者「exit」來終止一個窗口。這樣當前的窗口會被關閉,如果你打開了多個窗口,你就會直接轉到其餘中的一個,而如果是僅有的一個窗口時,你就退出了screen。
另外一種退出screen的方式是分離窗口。這種方式只是簡單地關閉了窗口但進程仍運行著。如果你有確定要長時間執行的進程,還需要關閉SSH程序時,你便可以使用「Ctrl-A」「d」分離窗口。這會使你回到shell中。所有的screen窗口都待在那裡,你可以稍後重新接管它們。(譯者註:這很像我們實際中的最小化窗口和程序後台運行)
接管會話
假設你正用著screen花了很長時間編譯著一個程序,突然間你的連接斷開了。請不用擔心,screen會保存你的編譯進度。重新登錄你的操作系統後使用screen列表工具查看有哪些會話正在運行:
代碼如下:
[root@gigan root]# screen -ls
There are screens on:
31619.ttyp2.gigan (Detached)
4731.ttyp2.gigan (Detached)
2 Sockets in /tmp/screens/S-root.
在這里,我有兩個不同的screen會話。要需要重新接管其中一個,使用恢復窗口的命令:
代碼如下:
[root@gigan root]#screen -r 31619.ttyp2.gigan
只需要使用 -r 選項再接會話的名,現在你便可以重新回到剛才的屏幕。令人欣喜的是,你還可以在任何地方重新接管。不論在辦公室還是其它客戶端上,你都可以使用screen來啟動一項工作然後退出。
多窗口
screen,像許多的窗口管理器一樣,能支持多窗口。這個功能在處理多個任務且同時沒有打開新的會話時 很有用。作為一個系統管理員,我常常要同時開四五個SSH會話。在每個shell下,我可能要處理兩三個任務。不使用screen的話,需要15個SSH 會話,15次登錄,15個窗口等等。使用screen,每個系統都分配到一個單獨的會話中,我通過screen來管理系統上不同的作業。
要打開新的窗口,只需要使用「Ctrl-A」「c」。創建的新的窗口會顯示一個默認的命令提示符。例如,我可以運行top命令後再打開一個新的窗口來做其它的工作。Top繼續留在那運行!可以親身實驗一下,啟動screen並運行top。(註:為了節省空間我截斷了多個屏幕。)
啟動top
代碼如下:
Mem: 506028K av, 500596K used, 5432K free,
0K shrd, 11752K buff
Swap: 1020116K av, 53320K used, 966796K free
393660K cached
< p> PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 49.1 0.3
6614 root 16 0 1544 1544 668 S 28.3 0.3
7198 admin 15 0 1108 1104 828 R 5.6 0.2
現在可以通過「Ctrl-A」「c」來打開一個新窗口
代碼如下:
[admin@ensim admin]$
To get back to top, use "Ctrl-A "n"
Mem: 506028K av, 500588K used, 5440K free,
0K shrd, 11960K buff
Swap: 1020116K av, 53320K used, 966796K free
392220K cached
< p> PID USER PRI NI SIZE RSS SHARE STAT %CPU %ME
6538 root 25 0 1892 1892 596 R 48.3 0.3
6614 root 15 0 1544 1544 668 S 30.7 0.3
你可以創建多個窗口然後通過「Ctrl-A」「n」切換到下一個窗口,或者使用「Ctrl-A」「p」返回上一個窗口。當你在其它窗口工作時,其它窗口的每個程序都會保持運行。
退出screen
有兩種方式退出screen。第一種和登出一個shell一樣,你可以通過「Ctrl-A」「K」或者「exit」來終止一個窗口。這樣當前的窗口會被關閉,如果你打開了多個窗口,你就會直接轉到其餘中的一個,而如果是僅有的一個窗口時,你就退出了screen。
另外一種退出screen的方式是分離窗口。這種方式只是簡單地關閉了窗口但進程仍運行著。如果你有確定要長時間執行的進程,還需要關閉SSH程序時,你便可以使用「Ctrl-A」「d」分離窗口。這會使你回到shell中。所有的screen窗口都待在那裡,你可以稍後重新接管它們。(譯者註:這很像我們實際中的最小化窗口和程序後台運行)
接管會話
假設你正用著screen花了很長時間編譯著一個程序,突然間你的連接斷開了。請不用擔心,screen會保存你的編譯進度。重新登錄你的操作系統後使用screen列表工具查看有哪些會話正在運行:
代碼如下:
[root@gigan root]# screen -ls
There are screens on:
31619.ttyp2.gigan (Detached)
4731.ttyp2.gigan (Detached)
2 Sockets in /tmp/screens/S-root.
在這里,我有兩個不同的screen會話。要需要重新接管其中一個,使用恢復窗口的命令:
代碼如下:
[root@gigan root]#screen -r 31619.ttyp2.gigan
只需要使用 -r 選項再接會話的名,現在你便可以重新回到剛才的屏幕。令人欣喜的是,你還可以在任何地方重新接管。不論在辦公室還是其它客戶端上,你都可以使用screen來啟動一項工作然後退出。
Ⅶ 雲伺服器怎麼安裝軟體
使用遠程桌面,鏈接到伺服器就可以像操作本地電腦那樣安裝軟體了。
Ⅷ 如何在雲端伺服器運行Jupyter Notebook
以下是主要步驟,前提是,擁有一個虛擬機,並且有ssh賬號登陸。沒有的同學可以自己在阿里雲之類的服務商處申請,個人推薦」1元免費試用「1個月的微軟雲。一般這些主機服務商都會提供一個基本的教程,因此從設置主機直到創建賬號,ssh登陸都應該不是什麼問題。
接下來,下載miniconda,一個科學計算環境管理軟體,Anaconda的最小發型版本(假設運行的是64位Linux 虛擬機):
Ⅸ 腳本如何在雲伺服器運行
1、先用護衛神主機大師安裝web環境
2、用主機大師開設網站
3、FTP上傳網站腳本到伺服器,輸入域名即可訪問了
Ⅹ 如何在雲端伺服器運行Jupyter Notebook
墊場演出:如何在ipython Notebook里運行R?(一行命令搞定版)
從去年開始,我拋棄了mathmatica,eviews,matlab之類的商業統計和數學軟體,開始擁抱開源數據分析。這一方面是因為工作需要,想掌握一門更通用的編程語言,一方面也因為和所有中國的分析師一樣,我用的是盜版的eviews和matlab,因此是完全沒有客戶支持。為了解決日常問題而花的研究文檔和stackoverflow上的工作量,並不比用開源軟體更少。而開源的好處是,實在查不到解決方案了,至少我還可以去看源代碼,雖然看不看得懂可以再討論,但 I『d like to have the option。
大家都知道開源數據分析的兩大利器,IPython 和 R。一般來說,IPython從Python發展而來,更傾向於科學計算。互聯網數據分析更喜歡用。而R是統計學家發展出的一門語言,在金融、經濟和社會科學領域應用更廣泛。我更喜歡R的數據解構和與數學相關的syntax,在讀完R的入門教程之後,很多時候我都不需要去查文檔,猜都能猜到我想用的一些函數名稱(lag(),diff())。另一方面,我也喜歡Ipython Notebook的交互方式,在富文本的展示效果和使用體驗上,R markdown簡直就是個不成熟的玩具,更何況Python還是個更成熟的通用編程語言,除了數據以外,幾乎可以和這個世界的一切協議進行通信。之前,我一直是在用Rstudio調試R代碼,用Anaconda的IPython Notebook或者spyder調試Python代碼,有必要的話再通過Rpy2之類的介面綜合起來。
但是8月底,收到了Anaconda的一封郵件:Ipython Notebook升級到4.0,改名Jupyter。而且,可以開始用conda管理R的程序包了,Anaconda正式支持R!下載安裝Anaconda,然後一條命令:
conda create -n my-r-env -c r r-essentials
就可以創建R的虛擬環境,安裝由Anaconda維護的R發行版本r-essentials 然後在ipython Notebook裡面用R的語法調試、運行R程序!Windows,Linux,OS X全都可用!how cool is that!再見啦,rpy2。
正場:如何在雲端運行Jupyter Notebook?
成功在ipython裡面創建了R的環境之後,我又想嘗試之前的一個想法了,部署一個雲端的計算伺服器。傳統行業還沒有進入大數據時代,數據量相對較小,絕大部分運算任務都是在我的筆記本上解決。但因為開始用Python了,也開始自己寫爬蟲、甚至想做自己的雲端數據可視化方案(否則怎麼向非碼農的領導展示花了這么多時間的研究成果?代碼?)。當然,rstudio擁有rstudio server版本,也可以在雲端運行。但我覺得ipython的界面是一個更漂亮的前端頁面,支持markdown功能,可以寫入很多注釋文檔,以便非碼農使用。另一方面,ipython支持bokeh,一個html5的數據可視化方案。
google了一陣之後發現,目前網上所有在雲端安裝ipython notebook的方案都是基於ipython 2.x的。而在ipython3.0之後,原有的配置方法已經不可用,只好自己去研究文檔。經過幾個小時的試錯,終於在雲端開始跑起了。
以下是主要步驟,前提是,擁有一個虛擬機,並且有ssh賬號登陸。沒有的同學可以自己在阿里雲之類的服務商處申請,個人推薦」1元免費試用「1個月的微軟雲。一般這些主機服務商都會提供一個基本的教程,因此從設置主機直到創建賬號,ssh登陸都應該不是什麼問題。
接下來,下載miniconda,一個科學計算環境管理軟體,Anaconda的最小發型版本(假設運行的是64位Linux 虛擬機):
wget "https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh"
然後安裝:
sudo bash Miniconda-latest-Linux-x86_64.sh
然後通過miniconda的環境管理軟體,conda安裝必要被ipython和ipython-notebook.
conda install ipython
conda install ipython-notebook
接下來,我們需要創建一個名為nbserver的配置。
ipython profile create nbserver
這將創建一個文件夾,其中包含一些原始的配置文件。我們跳轉到這個文件夾進行一些配置
cd ~/.ipython/profile_nbserver/
由於ipython Notebook要求https連接,因此我們需要創建一個ssl證書。
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
命令執行後根據提示輸入信息就好,當然,這個證書並未獲得認證,因此用chrome之類的瀏覽器訪問的時候會得到一些錯誤信息,這個問題我們一會兒說。接下來我們創建一個密文的密碼。
python -c "import IPython;print IPython.lib.passwd()"
運行之後進入一個創建密碼hash值的小程序,根據提示輸入你想用的安全口令:
Enter password:
Verify password:
sha1:b86e933199ad:a02e9592e59723da722.. #這是我的密碼的hash值,後段被刪除,你的密碼得到的結果應該不同
然後開始編輯配置文件,通過vi編輯文件的命令如下:
vi ipython_notebook_config.py
這個文件可能不存在,那麼通過vi創建一個,配置文件的內容如下:
c = get_config()
# 所有matplotlib的圖像都通過iline的方式顯示
c.IPKernelApp.pylab = 'inline'
# 這一行指向我們剛剛創建的ssl證書
c.NotebookApp.certfile = u'/home/azureuser/.ipython/profile_nbserver/mycert.pem'
# 給出剛剛創建的密碼的哈希值
c.NotebookApp.password = u'sha1:b86e933199ad:a02e9592e5 etc... '
c.NotebookApp.ip = '*'
# 給出運行的埠,ipython默認為8888
c.NotebookApp.port = 8888
# 禁止在運行ipython的同時彈出瀏覽器
c.NotebookApp.open_browser = False
編輯完成以後按兩次shift+z 保存退出
配置完畢以後就可以運行ipython Notebook的服務端了:
jupyter notebook --config=/home/azureuser/.ipython/profile_nbserver/ipython_notebook_config.py #給出你剛才創建的nbserver路徑,這里為微軟azure雲默認的情況
當然,微軟雲還需要配置一下伺服器端的endpoint,將雲主機的https埠(443)指向內部的8888埠。
在你的瀏覽器地址欄輸入:
https://www.youappdomain.com
這時候會遇到https提示根證書並非認證證書,不用管這個提示繼續進入,voila,你的ipython Notebook server架好啦!
輸入你剛才創建的密碼,就可以開始像在本地一樣使用了。
附註:這是我的第一篇技術博客,之前遇到各種技術問題就在網上搜,stackoverflow、quora和知乎的熱心人們分享的技術經驗都給了我很大的幫助。因為幾乎從來沒遇到過別人沒有解決過的問題,一直沒想到要寫技術分享的博客,直到這次配置Jupyter Notebook。這好像是中英文世界裡第一個在雲端配置Jupyter Notebook 4.0的教程,同時也是第一個在中文世界裡傳播r-essential這個好消息的博客文章。 let me know what you think.