requirements.txt2、創建虛擬環境python-mvenvvenv(這個是虛擬環境名稱)3、激活虛擬環境#進入venv虛擬環境下的bin目錄,執行sourceactivate4、上傳項目到服務器(復制,gitpull" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python項目部署

系統 1721 0

目錄

一、方法一:通過正常方法(low)

二、通過腳本的方式進行項目部署

三、通過docker部署(完美的辦法)


一、方法一:通過正常方法(low)

1、生成requirements文件,即項目依賴的包

            
              # cd 到項目目錄下
pip freeze >requirements.txt
            
          

2、創建虛擬環境

            
              python -m  venv  venv(這個是虛擬環境名稱)
            
          

3、激活虛擬環境

            
              # 進入venv虛擬環境下的bin目錄,執行
source activate
            
          

4、上傳項目到服務器(復制,git pull/clone都可以)

5、導入項目所需依賴包

            
              # 進入項目目錄,執行
pip install -r requirements.txt
            
          

6、添加本地項目到環境變量

            
              export PYTHONPATH=$PYTHONPATH:{project_dir}

# 也可在程序代碼中使用sys.path.append()進行追加
            
          

7、進入項目下執行main.py等主程序

二、通過腳本的方式進行項目部署

#### 首先創建虛擬環境

pip install virtualenv

virtualenv venv

source venv/bin/activate

pip install -r requirements

后續寫的腳本文件中的python路徑為:

venv/bin/python的絕對路徑

?

1、編寫腳本文件

示例:

            
              vim?entity_extract.sh
            
          
            
              #!/usr/bin/env bash
# 第一行是說明使用的什么腳本語言,這里是 bash, 固定用法
# workdir 是一個路徑,即先切換到這個目錄下,然后啟動服務 (啟動命令: python app.py)。其實不切換應該也可以
workdir=/Users/llm/PycharmProjects/solar-clover-backend

# 啟動函數,切換路徑=》其實就是 python app.py 。 前面一段指明是哪個路徑下的python, 后面是 app.py 的路徑, & 表示以后臺方式啟動(這里還不是很了解)
daemon_start() {
    cd $workdir
    /Users/llm/env_workspaces/flask/bin/python /Users/llm/PycharmProjects/solar-clover-backend/app.py &
    echo "Server started."
}

# 停止函數,思路就是我們要找到這個進程號,然后把它 kill 掉
# 進程號尋找: 即 ps -ef|grep 命令, grep 用來過濾,awk 用來將過濾結果進行整理。 像這個命令,過濾出來有很多列,但我們只要進程號那一列,所以就是 {print $2}, 表示進程號那一列
# BEGIN{ ORS="," } 表示以逗號分隔每個進程號, 不寫默認換行符分隔。
# 輸出其實是一個字符串, 把它變為數組,因為我要取出第一個將進程殺死。 arr=... 這句話就是將 pid 變量里的內容轉換為數組,存入arr。
# 接下來就是取到 arr 第一個進程號, 使用 kill 命令殺死

daemon_stop() {
    pid=`ps -ef | grep 'python /Users/llm/PycharmProjects/solar-clover-backend/app.py' | awk 'BEGIN{ ORS="," }{ print $2 }'`
    arr=(`echo ${pid} | tr ',' ' '`)
    echo ${arr[1]}
    kill ${arr[1]}
    sleep 3
    echo "Server killed."
}

# $1 表示命令行交互輸入的第一個參數。 我們使用 ./dev.sh start 來運行腳本啟動服務(因為此腳本文件名稱為 dev.sh), start 位置上的變量就是傳入的第一個位置上的參數,也可以變為 stop, restart
case "$1" in
  start)
    daemon_start
    ;;
  stop)
    daemon_stop
    ;;
  restart)
    daemon_stop
    daemon_start
    ;;
  *)
    echo "Usage: ./dev.sh {start|stop|restart}"
    exit 1
esac
exit 0
            
          

2、接下來的流程:

測試啟動,停止,重啟

            
              ./entity_extract.sh start 開啟服務
./entity_extract.sh stop  停止服務
./entity_extract.sh restart 重啟服務
            
          

?放到系統服務器清單內

            
              cp entity_extract.sh /etc/init.d    # 將腳本復制到init.d,這個目錄里面放系統服務腳本文件
chkconfig --add entity_extract.sh    # 將davids.sh添加到系統服務清單內

chkconfig --list                 #查看davids.sh是否在系統服務清單內
            
          

重啟服務器,查看Python腳本是否隨系統啟動而啟動

重點:

            
              *****上述辦法不能用
參考:https://blog.csdn.net/qq_42393859/article/details/88170761
參考2:https://zhidao.baidu.com/question/1958799616349768340.html
            
          

或者直接這樣操作:

            
              # 服務器開機啟動設置
sudo cp fw_service.sh /etc/init.d/      # 拷貝腳本到啟動目錄下
cd /etc/init.d/                         # 進入啟動目錄
sudo update-rc.d fw_service.sh defaults 90  # 設置啟動等級


# 注:
1、其中的90表示啟動順序,取值范圍是0-99。序號越大的越晚執行。

            
          

3、報錯解決

            
              1、執行過程中出現/bin/bash^M: 壞的解釋器:沒有那個文件或目錄錯誤,無法正常運行。這是因為windows和linux中的換行不一樣

sed -i 's/\r$//' startup.sh

2、如果沒有權限
chmod +x davids.sh


            
          

三、通過docker部署(完美的辦法)

1、編寫Dockerfile文件

在與項目目錄同級的目錄下,新建Dockerfile文件

            
              vi Dockerfile
            
          

2、編輯Dockerfile,最好手打,最后保存退出

            
              #基于的基礎鏡像
FROM python:3.6
#代碼添加到code文件夾
ADD ./test /code
# 設置code文件夾是工作目錄
WORKDIR /code
# 安裝支持
RUN pip install flask -i https://pypi.douban.com/simple/
CMD ["python", "/code/main.py"]

            
          

3、在Dockerfile同級目錄, build該Dockerfile

            
              # 鏡像名為:flask_entity_extract 
docker build -t flask_entity_extract .

            
          

出現
Successfully built a69e5b09b454 #鏡像id
Successfully tagged flask_entity_extract?:latest #鏡像名字
即為成功

查看:

            
              docker images
            
          

4、通過創建的鏡像創建容器,同時開啟端口映射

            
              docker run -it -p 9000:9000 --name flask_entity_extract_server flask_entity_extract
#  it:創建并進入; -p 端口映射; --name 容器名;  最后面的是鏡像名
            
          

5、此時flask服務已經啟動,其他的docker操作如下:

            
              一、安裝
地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/
卸載:$ sudo apt-get remove docker docker-engine docker.io containerd runc
更新apt:
	$ sudo apt-get update	# 公司服務器一般別搞
	
	$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
	
	$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
	
	$ sudo apt-key fingerprint 0EBFCD88
	
	$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
   
   # 安裝docker ce
   $ sudo apt-get install docker-ce docker-ce-cli containerd.io
   
   # 查看版本
	docker version
	
	# 卸載當前版本
	sudo yum remove docker-ce
	sudo rm -rf /var/lib/docker
	

	systemctl start docker		# 啟動docker
	systemctl stop docker		# 停止docker
	systemctl restart docker	# 重啟docker
	systemctl status docker		# 裝態docker
	systemctl enable docker		# 開機啟動docker
	
	docker info	# 查看docker信息
	docker --help  # docker命令
	
	
	docker images  # 列出所有的鏡像
	docker search centos	# 查詢鏡像
	
	docker pull hello-world		# 默認從docker hub下載鏡像
	
	
	docker rmi 鏡像id/鏡像名:標簽名
	docker rmi 'docker images -q'	# 刪除所有的docker鏡像
	docker rmi 'docker images -qa'	# 刪除所有的docker鏡像
	
	docker ps  # 查看啟動的容器
	docker ps -a # 查看所有容器
	docker ps -f status=exited	# 查看停止的容器
	
	# 通過鏡像開啟容器
					容器名			鏡像名	  進入容器
	docker run -it --name=mycentos centos:7 /bin/bash	# 交互式容器的創建
		
	
	docker run -id --name=mycentos1 centos:7 
	docker exec -it mycentos1 /bin/bash
	
	exit	# 關閉容器并退出
	ctr+p+q 	# 退出容器,不關閉
	
	docker start 容器名/容器id  # 啟動容器
	docker stop 容器名/容器id  # 停止容器
	docker restart 容器名/容器id  # 重啟容器
	
	docker attach 容器名/容器id    # 進入容器
	
	docker rm  容器名/容器id		# 刪除容器,前提是該容器處于關閉狀態
	docker rm -f $(docker ps -q)	# 強制(-f)刪除所有
	
	# 目錄掛載 -v
	docker run -it --name=a3 -v home/docker_data/gaofei_data:/tmp tfgpu1.13.1-ubuntu16.04-cuda10.0-v1.0:latest /bin/bash		# 如果報錯,執行下面命令
	docker run -it --name=a3 -v home/docker_data/gaofei_data:/tmp tfgpu1.13.1-ubuntu16.04-cuda10.0-v1.0:latest /bin/bash --privileged=true
	
	docker cp 宿主機文件路徑  容器名:容器路徑
	docker cp 容器名:容器路徑  宿主機文件路徑
	注意:容器之間不可以拷貝
	
	
	# 查看容器詳細信息
	docker inspect 容器名/容器id
	查看掛載:docker inspect 容器名/容器id | grep Mounts -A 100
	
	# 備份和遷移
	docker commit 容器名  保存的鏡像名
	# 將鏡像轉換為壓縮文件導出
	docker save -o 輸出的壓縮文件名(.tar) 鏡像名
	# 通過壓縮文件恢復鏡像
	docker rmi 鏡像名
	docker load -i 壓縮文件名
	docker images 查看鏡像名
	
	# 繼承容器
	docker run -it --name 容器2名稱 --volumes-from 容器1名稱 鏡像名
						  新建容器     繼承自       被繼承容  鏡像的名稱
						  
						  
						  
	
	
	
            
          

?

?

?

參考:

web項目部署:http://www.jiaochengku.net/ITjiaocheng/ruanjianbiancheng/12805.html

python項目部署(全):https://www.lanshiqin.com/d8d0505b/

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 隆昌县| 平阳县| 阜新市| 四子王旗| 新田县| 正定县| 沙洋县| 田林县| 扶沟县| 大竹县| 即墨市| 宜兴市| 波密县| 成都市| 抚顺市| 晴隆县| 全椒县| 崇州市| 青神县| 米易县| 织金县| 舟曲县| 漠河县| 平乐县| 德令哈市| 齐齐哈尔市| 双牌县| 兴宁市| 福贡县| 图片| 宁武县| 偏关县| 广南县| 榆中县| 保亭| 遵义县| 驻马店市| 万全县| 师宗县| 建德市| 乌鲁木齐县|