# RaiAiChatBot 安裝至EC2 Ubuntu ## Table of Contents [TOC] ## docker 安裝 ``` sudo apt update && sudo apt -y upgrade sudo apt-get install docker.io sudo groupadd docker sudo usermod -aG docker $USER ``` ### 建立橋接網路 ``` sudo docker network create -d bridge bridge-network ``` ### 安裝反向代理 (Reverse Proxy) ``` docker run \ --name reverse-proxy \ -v $HOME/nginx/certs:/etc/nginx/certs:ro \ -v $HOME/nginx/vhost.d:/etc/nginx/vhost.d \ -v $HOME/nginx/html:/usr/share/nginx/html \ -v $HOME/nginx/conf.d:/etc/nginx/conf.d \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true \ -p 80:80 \ -p 443:443 \ -d \ --restart unless-stopped \ --network bridge-network \ jwilder/nginx-proxy ``` ### Let’s Encrypt ``` docker run \ --name letsencrypt \ --volumes-from reverse-proxy \ -v $HOME/nginx/certs:/etc/nginx/certs:rw \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -d \ --restart unless-stopped \ --network bridge-network \ jrcs/letsencrypt-nginx-proxy-companion ``` ### chatBot 下載 ``` git clone https://github.com/ddasdkimo/RaiAiChatBot.git ``` 安裝docker ``` docker run --name chatBotAPPEN \ -e 'LETSENCRYPT_EMAIL=rai.mobile.studio@gmail.com' \ -e 'LETSENCRYPT_HOST=chatbot.intemotech.com' \ -e 'VIRTUAL_HOST=chatbot.intemotech.com' \ -e 'LC_ALL=C.UTF-8' \ -e 'LANG=C.UTF-8' \ -e 'FLASK_APP=app.py' \ -e 'FLASK_ENV=development' \ -it \ -v /home/ai1999su/RaiAiChatBot:/storage \ -d \ -p 7000:5000 \ --restart unless-stopped \ --network bridge-network \ raidavid/linebootapp:v3.0 \ bash -c "cd /storage/; python3 -m flask run --host=0.0.0.0" ``` 安裝gpu版本 (測試中) ``` nvidia-docker run --name chatBotAPPGPU \ -e 'LETSENCRYPT_EMAIL=rai.mobile.studio@gmail.com' \ -e 'LETSENCRYPT_HOST=chatbot.intemotech.com' \ -e 'VIRTUAL_HOST=chatbot.intemotech.com' \ -e 'LC_ALL=C.UTF-8' \ -e 'LANG=C.UTF-8' \ -e 'FLASK_APP=app.py' \ -e 'FLASK_ENV=development' \ -it -v /home/david/RaiAiChatBot:/storage \ -d \ -p 6001:5000 \ --restart unless-stopped \ --network bridge-network \ gw000/keras:2.1.4-py3-tf-gpu \ bash -c "cd /storage/; python3 -m flask run --host=0.0.0.0" ``` ## docker 內部設定 進入docker ``` docker exec -it chatBotAPP /bin/bash ``` ### apt 更新與pip安裝(棄用) ``` apt update && apt -y upgrade apt install -y python3-pip pip3 install --upgrade pip sudo pip3 install virtualenv ``` ``` 若得到如下錯誤 Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main sudo nano /usr/bin/pip3 修改為 from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main()) ``` ``` mkdir keras_for_fun && cd keras_for_fun virtualenv .env source .env/bin/activate 若要跳出的話可以用 $ deactivate ``` 安裝flask ``` pip3 install -U jieba numpy gensim fuzzywuzzy pip3 install -U --pre pip setuptools wheel pip install -U --pre numpy scipy matplotlib scikit-learn scikit-image pip install -U --pre tensorflow==1.13.1 pip install -U --pre keras ``` ## ec2 防火牆 ``` 80 0.0.0.0/0, ::/0 5000 0.0.0.0/0, ::/0 8000 0.0.0.0/0, ::/0 7772 0.0.0.0/0, ::/0 11111 0.0.0.0/0, ::/0 443 0.0.0.0/0, ::/0 ``` ## vs code(尚未設定) ``` ``` -e SES_TO_ADDRESS= \ -e SES_FROM_ADDRESS= \ -e UPDATE_FREQUENCY= \ ## 部署 安裝套件 ``` sudo apt-get install python3-pip python3-dev nginx pip install uwsgi ``` 開放5000 ``` sudo ufw allow 5000 ``` ``` nano myproject.ini [uwsgi] module = wsgi:app master = true processes = 5 socket = myproject.sock chmod-socket = 660 vacuum = true die-on-term = true ``` /usr/local/bin/gunicorn -w 2 -b :5000 manage:app ```