# Installing Apache Airflow on Windows 10(WSL 2.0) ###### tags: `教學` `Airflow` :::info :boy: **作者:** neverleave0916 :mailbox_closed: **聯絡資訊:<neverleave0916@gmail.com>** :point_right: **<font color="#B24B42">修改日期:** 2021/07/15 01:25</font> ::: > - 軟體版本: | Software | Version | |:--------------|:--------| | Windows | 21H1 | | WLS | 2.0 | | Ubunut WLS | 20.04 | ## windows安裝WSL - 安裝方式(我選擇Ubuntu 20.04) https://docs.microsoft.com/zh-tw/windows/wsl/install-win10 1. 注意!安裝後,如果直接點ubuntu icon啟動,它會自動將您的工作目錄從目前目錄變更為散發套件的主目錄。 >簡單來說,就是開啟時會在預設家目錄(e.g. /home/neverleave0916) 2. 想在開啟時切換成本機某個目錄的話 - 用cmd(建議改用windows terminal)移動到該目錄(e.g. D:\project\airflow) [安裝windows terminal](https://docs.microsoft.com/zh-tw/windows/terminal/get-started) - 輸入wsl - WSL開啟時就會是當前目錄(/mnt/d/project/airflow)了 3. 啟動後,輸入'code .'可以開啟VS CODE 4. 附錄(可以不看,目前用不到) - [使用指令](https://docs.microsoft.com/zh-tw/windows/wsl/wsl-config) - [額外教學](https://blog.miniasp.com/post/2019/02/01/Useful-tool-WSL-Windows-Subsystem-for-Linux) ## 啟動Ubuntu 20.04 WSL windows終端機(建議移動至專案目錄) ``` wsl ``` :::warning **以下開始皆在WSL中操作** ::: ## 安裝Anaconda reference:[Ubuntu Linux 安裝 Anaconda 資料分析與計算環境](https://officeguide.cc/ubuntu-linux-install-anaconda-data-science-platform-tutorial/) ```bash+= # 下載 Anaconda 安裝檔案 curl -O https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh #注意!我在使用curl的時候會變成亂碼,且電腦不斷發出"登"音效 #所以我是直接上官方網站下載檔案,放到我WSL要開啟的目錄後(任意目錄也行,反正WSL都找得到),就可以在WSL上看到檔案了 # 執行 Anaconda 安裝檔(記得先切換到檔案所在目錄) bash Anaconda3-2021.05-Linux-x86_64.sh #接下來都填yes yes ``` ## 安裝Airflow 看起來很多,只有八個指令! ```bash+= conda create -n airflow python=3.6 -y conda activate airflow #做這件事情!記得重啟WSL #沒做的話所有檔案都會變成root 下面就會一堆問題 https://askubuntu.com/questions/911804/ubuntu-for-windows-10-all-files-are-own-by-root-and-i-cannot-change-it #https://blog.csdn.net/qq_40806289/article/details/82924722 #沒加這行 sudo pip會是command not found #sudo apt-get install python3-pip ##https://stackoverflow.com/questions/257616/why-does-sudo-change-the-path #上面或許可以解決sudo command not found 還沒試過 #沒用sudo 開啟webserver會出現權限錯誤 #Operation not permitted: 'airflow-webserver.pid' pip install "apache-airflow[crypto, slack]" #pwd是當前目錄,也可以改成自己指定的目錄 export AIRFLOW_HOME="$(pwd)" echo $AIRFLOW_HOME #檢查環境變數是否設定完成 airflow db init #錯誤就再執行一次看看 #重要!要先新增使用者 #輸入後,按照指示便可成功新增使用者 #除了密碼以外,其它格子都可以直接按Enter使用預設值 FLASK_APP=airflow.www.app flask fab create-admin #用剛剛新增的使用者登入 airflow webserver -p 8080 ``` 最後,另外開啟一個終端機,進入anaconda環境後,啟動scheduler ```bash+= cd /mnt/d/project/airflow conda activate airflow export AIRFLOW_HOME="$(pwd)" echo $AIRFLOW_HOME airflow scheduler ``` ## 偵錯 #### 1. 安裝套件 ```bash+= pip install pymongo ``` #### 2. WSL2不能連線windows mongodb > [解法](https://github.com/microsoft/WSL/issues/5486) 不確定哪個有效,三個都做了 1. 更改mongodb bind ip 1. had to change the binding ip in C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg to 0.0.0.0 (做完後去服務重新啟動mongodb) ```bash # network interfaces net: port: 27017 bindIp: 0.0.0.0 ``` 2. 新增防火牆規則 1. Go to Firewall and Network protection in Windows settings (Start -> type "Firewall" -> Enter) 1. Click "Allow an app through firewall" link in bottom part of the window 1. Click "Change settings", then button "Allow another app" will be enabled. Click it. Browse for "mongod.exe" executable (in %Program Files%\MongoDB\Server\X.Y\bin. Then click "Network types" and select both types. Then click "Add". 1. It will add a set of rules to Defender Firewall that didn't work for some reason when added manually. 1. In WSL find host IP. On my machine cat /etc/resolv.conf works, after "nameserver" part. Or google for "wsl find host ip" there are plenty of solutions there. 3. WSL 使用windows IP連線mongodb ```python+= myclient = pymongo.MongoClient("mongodb://192.168.212.10:27017/") ``` #### 3. docker [Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running? ](https://stackoverflow.com/questions/44678725/cannot-connect-to-the-docker-daemon-at-unix-var-run-docker-sock-is-the-docker) 用下面這個在WSL2中啟動docker [System has not been booted with systemd as init system (PID 1). ](https://stackoverflow.com/questions/52197246/system-has-not-been-booted-with-systemd-as-init-system-pid-1-cant-operate) ``` sudo service docker start ``` #### 4. 解除安裝shrew VPN Access Manager 後無法啟動WSL 80041002 1. 去開啟或關閉windows功能[80041002](https://forums.docker.com/t/latest-failed-docker-update-makes-hyper-v-unable-to-create-virtual-ethernet-switch-0x80041002/44109/2) 2. 關閉 windows hypervisor平台 3. 關閉 windows子系統linux虛擬版 4. 關閉 虛擬機器平台 5. 去官方網站重新安裝 一步一步來 6. 最後安裝ubuntu會出現錯誤 [0xe000020b](https://github.com/microsoft/WSL/issues/6089) 7. 用這個指令重設所有網路 ```bash= netsh winsock reset netcfg -d ``` 8. 再安裝一次ubuntu 9. 成功 ## WSL中conda環境包成docker(可以成功跑) [reference](https://www.huaweicloud.com/articles/9294cfdde23bf68bbc46f79bf867cdd9.html) ```bash+= docker run --ipc=host -it -v $(pwd):/workspace -p 8080:8080 -p 8888:8888 -p 5000:5000 --name=nl_airflow continuumio/anaconda3 #通过docker cp指令,将系统中的环境全部复制到docker的anaconda3环境路径下 docker cp /home/neverleave0916/anaconda3/envs/airflow nl_airflow:/opt/conda/envs 容器內測試:conda activate airflow #运用 docker commit 指令将运行的容器保存为镜像 docker commit -p airflow neverleave0916/airflow_api:latest #将镜像保存下来成一个压缩包。 docker save neverleave0916/airflow_api:latest -o airflow_bk_img ``` 但是執行pip會出錯,可以用下面的方法修 [conda command will prompt error: “Bad Interpreter: No such file or directory” ](https://stackoverflow.com/questions/39884499/conda-command-will-prompt-error-bad-interpreter-no-such-file-or-directory) --- <br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br> ## 其他事項 若安裝過程有問題,可以執行 sudo airflow db reset ##### Expose the configuration file in the web server expose_config = True ## 前置作業 [reference](https://towardsdatascience.com/run-apache-airflow-on-windows-10-without-docker-3c5754bb98b4) [reference](https://www.astronomer.io/guides/airflow-wsl) ##### 1. 更改掛載位置 Run sudo nano /etc/wsl.conf, insert the block below, save and exit with ctrl+s ctrl+x ```bash= sudo nano /etc/wsl.conf ``` ```bash [automount] root = / options = "metadata" ``` 關閉所有終端並重新開啟WSL(wsl --shutdown) ##### 2. 新增環境變數 ```bash= nano ~/.bashrc ``` ``` export AIRFLOW_HOME=/d/project/airflow ``` ### 其它(與本篇無關) 在windows下,如果用新版windows terminal啟動anaconda環境,會沒反應,原因未知,但與本篇無關
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up