Win10安裝git for windowshtml
打開Git Bash
python
$ git config --global user.name "Alice-HomePC" $ git config --global user.email "alice@gmail.com"
打開Git Bash
,可以使用-C
選項指定公鑰的說明信息nginx
$ ssh-keygen -t rsa -C "Alice-HomePC"
一直回車確認便可,祕鑰對默認保存在C:\Users\你的Win10用戶名\.ssh
目錄下,其中id_rsa
是私鑰(Private Key),要當心保管;id_rsa.pub
是公鑰(Public Key),待會要上傳到VPS上,實現基於SSH無密碼登陸VPS。同理,若是你在Github或Coding上有代碼倉庫,也是先要將公鑰上傳過去,才能無密碼使用Git命令操做遠程倉庫。git
# hostnamectl set-hostname CentOS 或者: # vi /etc/hostname # hostnamectl
從新登陸.github
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # vi /etc/ssh/sshd_config 將默認22端口改成你指定的, 例如 Port 12345 # systemctl restart sshd
首先須要將步驟1中生成的公鑰上傳到服務器,可使用xmanager套件中的xftp上傳,假設上傳到/root目錄sql
1. 添加公鑰 # cd /root # mkdir ~/.ssh && chmod 700 ~/.ssh # touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys # cat id_rsa.pub >> ~/.ssh/authorized_keys 2. 修改SSH配置文件 # vi /etc/ssh/sshd_config 修改幾處地方,最終內容以下: # 禁用root登陸 PermitRootLogin no # 啓用密鑰驗證 RSAAuthentication yes PubkeyAuthentication yes # 指定公鑰數據庫文件 AuthorizedKeysFile .ssh/authorized_keys # 禁用密碼驗證 PasswordAuthentication no 3. SSH從新加載配置文件 # systemctl reload sshd
此時,Win10能夠經過xshell,無密碼登陸VPS了,且只能使用私鑰認證經過。mongodb
CentOS-7.3默認安裝的是Python-2.7, 個人Flask程序是基於Python3寫的,因此要再安裝Python3shell
1. 準備編譯環境 # yum -y install gcc make readline-devel sqlite-devel openssl openssl-devel zlib* 2. 編譯安裝 # wget -P /root http://python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz # tar xf Python-3.6.4.tar.xz # cd Python-3.6.4/ # ./configure --prefix=/usr/local/python-3.6 # make && make install # ln -s /usr/local/python-3.6/bin/python3.6 /usr/bin/python3 # ln -s /usr/local/python-3.6/bin/pip3.6 /usr/bin/pip3
更改
pip
安裝源爲國內的源,好比aliyun
數據庫
# mkdir ~/.pip # vi ~/.pip/pip.conf 添加內容以下: [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
(可選)安裝IPythonflask
1. pip方式安裝(推薦), 該方式會有語法高亮等特性 # pip3 --version # pip3 install --upgrade pip # pip3 install ipython # ln -s /usr/local/python-3.6/bin/ipython3 /usr/bin/ipython3 2. 編譯安裝 # tar xf ipython-0.13.1.tar.gz # cd ipython-0.13.1/ # python3 setup.py install # ln -s /usr/local/python-3.6/bin/ipython3 /usr/bin/ipython3
1. 配置repo源 # vi /etc/yum.repos.d/mongodb-org-3.6.repo 內容以下: [mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc 2. 安裝並啓動服務 # yum install -y mongodb-org # systemctl start mongod.service # systemctl enable mongod.service
1. 安裝 # yum install -y git 2. 建立裸倉庫 # mkdir /home/git && cd /home/git # git init --bare flask_project.git
我在Win10上已經開發好了Flask程序,待會上傳到此git倉庫中,應用程序代碼準備部署到/home/www/flask_project
,並經過git的hooks
當客戶端每次提交代碼後,自動同步倉庫中的代碼到應用部署的位置 Simple automated GIT Deployment using GIT Hooks
1. 建立代碼部署目錄 # mkdir -pv /home/www/flask_project 2. 建立hooks # vi /home/git/flask_project.git/hooks/post-receive 內容以下: #!/bin/bash TRAGET="/home/www/flask_project" GIT_DIR="/home/git/flask_project.git" BRANCH="master" while read oldrev newrev ref do # only checking out the master (or whatever branch you would like to deploy) if [[ $ref = refs/heads/$BRANCH ]]; then echo "Ref $ref received. Deploying ${BRANCH} branch to production…" git --work-tree=$TRAGET --git-dir=$GIT_DIR checkout -f else echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server." fi done 3. 賦權 # chmod +x /home/git/flask_project.git/hooks/post-receive
打開Git Bash
,準備把服務器上的flask_project.git倉庫(目前爲空)克隆下來。Git默認使用SSH協議且端口22,因爲咱們剛修改了服務器的SSH端口,因此克隆時要指定修改後的端口號
方法1:
$ git clone ssh://root@VPS的IP或域名:VPS的SSH端口號//home/git/flask_project.git
方法2: 在Win10保存SSH祕鑰對的目錄下建立配置文件 C:\Users\你的Win10用戶名\.ssh\config
host VPS的IP或域名 port VPS的SSH端口
而後執行克隆命令:
$ git clone root@VPS的IP或域名:/home/git/flask_project.git
克隆後會在當前目錄下生成 flask_project 目錄,把開發好的flask代碼拷貝到這裏面,並指定哪些文件不提交到git倉庫,在git bash中運行:
$ cd flask_project $ vi .gitignore 好比個人規則: .idea/ __pycache__/ uploads/ venv3/
提交代碼:
$ git add . $ git commit -m "initial" $ git push
你會發現/home/www/flask_project目錄下會自動拷貝git倉庫中master分支的最新代碼過來。
# pip3 install virtualenv # ln -s /usr/local/python-3.6/bin/virtualenv /usr/bin/virtualenv # cd /home/www/flask_project # virtualenv --no-site-packages --python=/usr/bin/python3 venv3
# source venv3/bin/active (venv3)# pip install flask 依次安裝完全部的依賴包後, (venv3)# pip freeze > requirements.txt
(venv3)# python manage.py runserver -h 0.0.0.0 -p 80
若是你能經過VPS的IP正常訪問Flask應用,那麼就能夠進行下一步,使用Gunicorn替代Flask自帶的開發服務器
(venv3)# pip install gunicorn
通常咱們開發時,都是使用manage.py
,裏面有flask-script方便調試,生產環境要再建立一個模塊,好比:
# vi wsgi.py 內容以下: import os from app import create_app ### # 調用工廠函數,初始化Flask程序實例,默認使用生產環境配置 ### app = create_app(os.getenv('FLASK_CONFIG') or 'production') if __name__ == "__main__": app.run(host='0.0.0.0')
那麼使用gunicorn命令行來啓動Flask很是簡單:
(venv3)# gunicorn -w 3 wsgi:app -b 0.0.0.0:80 說明: -w 3 是啓用3個進程,建議是CPU核數*2 + 1 wsgi:app 其中wsgi表明當前目錄下的wsgi.py模塊,後面的app表明wsgi.py模塊裏面的Flask應用app
若是你能經過VPS的IP正常訪問Flask應用,那麼經過指定gunicorn配置文件來啓動Flask,好比:
# mkdir deploy # vi deploy/gunicorn.conf.py 內容以下: import multiprocessing # bind = '127.0.0.1:8001' bind = 'unix:/run/gunicorn.sock' workers = multiprocessing.cpu_count() * 2 + 1 # daemon = True pidfile = '/run/gunicorn.pid' loglevel = 'info' errorlog = '/tmp/gunicorn-error.log' accesslog = '/tmp/gunicorn-access.log' access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
更詳細的配置能夠參考Gunicorn官方示例
那麼,此時啓動Flask變成:
(venv3)# gunicorn wsgi:app -c deploy/gunicorn.conf.py
想查看完整的內容,請訪問個人我的博客: http://www.madmalls.com/blog/post/deploy-flask-gunicorn-nginx-supervisor-on-centos7/?q=gunicorn