這里是更新的部分--------------------------------------
1. 部署uWSGI+Supervisor來代替manage.py runserver,只需要簡單的幾步
上面是我的文件信息
配置uWSGI(記得在虛擬環境下)
安裝uWSGI
pip install uwsgi
uwsgi --version # 查看版本
在manage.py目錄下,創建uwsgi.ini文件並編輯,即vim uwsgi.ini 即可,然后添加以下配置
[uwsgi] master = true # 啟動主進程 http=:5000 # flask是用htttp,:5000 等同於0.0.0.0:5000,但寫法不同 chdir = /home/flask_work # 項目目錄 wsgi-file=/home/flask_work/manage.py # 項目對應的啟動文件 callable=app # 啟動文件里面的實例化目標 processes=4 # 進程數,一般是4,看核數,我的雲服務是1核...(窮) threads=2 # 線程數,一般是2,氪金大佬隨意 buffer-size = 65536 # 包解析大小,這是配置的64K vacuum=true # 自動移除unix Socket 和 Pid 文件 當服務停止的時候 pidfile =uwsgi.pid # 記錄主進程pid號
此時uWSGI已配置完畢,是不是賊簡單,當然這是簡單版的,啟動
uwsgi --ini uwsgi.ini # 啟動uwsgi,一定要在uwsgi.ini所在目錄 nohup 和 & # 是指后台運行,此時你回車兩下,可以輸入命令后,就exit退出這個終端
# 可以在另外的新窗口ps -ef|grep uwsgi看到你已經開啟的python服務(記得先關掉原有的runserver)
此時還不夠安全,萬一uWSGI掛掉了呢?這時候就需要Supervisor來監控並啟動uWSGI
echo會自動幫你生成supervisor配置文件,你只需要在最下面加上這段話
[program:flask_work] command = /root/.virtualenvs/flask_work/bin/uwsgi /home/flask_work/uwsgi.ini autostart=true # 以下備注記得不要也復制上去,就復制上面3段就可以了 # [] 第一段表示文件的目錄 # 第二段 表示啟動命令,前半段是你的虛擬環境里面的uwsgi,不同服務器地址不同,記得看,后半段是uwsgi地址 # autostart 是啟動啟動
是不是很簡單~
# 然后你supervisorctl reload 重啟即可 ps -ef|grep uwsgi # 查看uwsgi信息 kill -9 17025 # 殺掉uwsgi,17025是id號 # 如果殺掉,然后還能看到,而且啟動時間成改,即成功!
這里是更新的部分--------------------------------------
1. 部署概括:服務器網絡、python包、centos環境、mysql/pymysql、npm、nginx、git、
https://github.com/ben1234560/flask_and_wx_samllapp GitHub
https://gitee.com/benjas/CRMXiTongandWoDeShangCheng gitee
+++++++++++++++++++++++++++++++++++
應大家需求:把小程序的后台管理數據/僅cengtos部署版本,超簡單(利用flask-admin開發出來[可增刪改],能夠顯示數據[如果要更加完善需要各位的可以自行修改])
快速學習並利用flask-admin[只動了兩個模塊]
# 終端安裝flask_admin 和 中文轉換的flask_babelex pip install flask_admin pip install flask_babelex
# application/apps/index/models.py # 導入模塊 from flask_admin.contrib.sqla import ModelView # 配置基本模型,主要是進程ModelsView,方便開發,你可以直接在manage.py用ModelView替換它,這樣你都不用過來models這里寫東西了 class BaseModelview(ModelView): def getinfo(self): return "this is another model"
# manage.py代碼部分 from application.apps.index.models import Department,Users,BaseModelview from flask_babelex import Babel from flask_admin import Admin # 給flask_admin添加視圖,name是網址名稱,template_mode是指定的模板,有2和3 # BaseModelview就是models里面定義的模型類Users和Department也是 admin = Admin(app, name='后台管理系統', template_mode='bootstrap3') admin.add_view(BaseModelview(Users, db.session,name='用戶管理')) admin.add_view(BaseModelview(Department, db.session, name='部門管理')) # 中文化方式 babel = Babel(app) app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'
配置完成,啟動(在manage所在的文件下,python manage.py runserver)訪問http://127.0.0.1:5000/admin 即可
以下是部署到centos7服務器上
# /etc/nginx/conf.d/default.conf,給nginx啟動文件配多一個server並重啟nginx即可 server{ listen 8000; server_name www.ben123123.club; # 監聽域名及端口 location /admin { proxy_pass http://127.0.0.1:5000/admin; } }
+++++++++++++++++++++++++++++++++++
以下是正文---------
2. 快速部署[centos7/window10,最快的學習就是實踐]
centos6配置
需要用到
- 雲服務器【我用的是最低配置90天的騰訊雲服務器,因為只有90天以上的服務器才可以備案】
- 一個已備案的域名【沒備案的一定要先備案,我的審核了3個星期才通過,我是1塊錢買的一年club尾綴的】https://cloud.tencent.com/
- xshell連接服務器【你可以用電腦自帶的cmd】
開始:
1.1 域名全開端口+前綴
1.2 python3環境配置
ssh root@IP # root用戶遠程登陸雲服務器
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz # 找到Python-3.6.8.tgz(一般在當前目錄),並解壓Python-3.6.8.tgz 到當前文件夾 tar -zxvf Python-3.6.8.tgz # 進入解壓出來的文件夾中 ls # 查看當前目錄情況 cd Python-3.6.8/ # 編譯安裝 ./configure --prefix=/usr # 注釋:--prefix是設置安裝位置 make && make install # 安裝完成后 輸入以下命令即可查看是否安裝成功 which python3
# 下載相關庫
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
1.3
pip3 install -i https://pypi.doubanio.com/simple virtualenv #虛擬環境 pip3 install virtualenvwrapper -i https://pypi.doubanio.com/simple # 虛擬環境管理器 # 設置虛擬環境的儲存路徑 mkdir $HOME/.virtualenvs 配置虛擬環境的系統環境變量[其中調用python3的路徑,不同的服務器路徑不同]: vim ~/.bashrc # 然后在最下面添加下面四句命令: export WORKON_HOME=$HOME/.virtualenvs # 設置虛擬環境目錄 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #純凈初識化,也可以不寫[這段注釋要刪掉,因為前面的引號問題] export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 默認python版本為python3 source /usr/bin/virtualenvwrapper.sh # shell登錄時直接執行該文件 # 配置完成后重新運行一下.bashrc文件: source ~/.bashrc
# 測試一個創建一個虛擬環境:
mkvirtualenv test # 創建一個虛擬環境叫test
workon # 查詢有什么虛擬環境
workon test # 使用test虛擬環境
pip list # 查看當前下載中的庫
deactivate # 退出當前虛擬環境
rmvirtualenv test # 刪除test虛擬環境
1.4 官方自帶的yum源有一些軟件版本會比較舊,所以我一般用的yum源用的阿里雲。
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all 清除所有緩存 yum makecache 重新生成緩存
1.5 git工具的安裝
yum install git # 安裝git工具 # 進入項目存儲的環境(一般放在自己家目錄,由於我是root用戶,我就放在home目錄下) cd /home git clone https://gitee.com/個人網址/lufei_pc.git # 自己的github項目地址 ls # 查看當前文件下的文件
2.1 將我的后端代碼flask_centos從網上clone下來[可能你是從GitHub過來,也可能是gitee,不過用法大同小異,以下是gitee]
cd /home # 去到home目錄下,我一般都是把代碼放home目錄,看個人 git init # 創建本地倉庫 git clone https://gitee.com/benjas/CRMXiTongandWoDeShangCheng.git cd xxx # 進入下載的工程目錄,沒登錄的記得登錄,上面有 git checkout -b 遠程倉庫分支名字 origin/遠程倉庫分支名字 git pull #進行更新
2.2 同步python環境(記得先啟動虛擬環境)
mkvirtualenv xxx # 環境虛擬環境,創建的時候不用-python3,因為我們之前已經配置好bashrc文件了,deactivate退出虛擬環境 workon xxx 進入虛擬環境
cd 項目目錄的dock #下面有一個requirement.txt就是生成的后端運行包
pip install -r requirement # -r讀,安裝這個文件的全部包,你也可以先打開看看
安裝過程你可能會發生以下報錯,而且網上很多解決方法都是混亂的或者沒有的
關於安裝MySQL-python找不到ConfigParser模塊
原因:pip是基於python3+版本的,在 Python 3.x 版本后,ConfigParser.py 已經更名為 configparser.py 所以出錯
find / -name configparser.py # 找到它,並復制一份報錯所需的模塊即可
重新安裝發現新的問題,找不到mysql_config模塊
原因:MySQL的bin目錄沒有配置到root用戶的.bash_profile文件中,也沒有配置到/etc/profile中,所以才會導致找不到mysql_config命令
yum install mysql-devel # 安裝相關模塊
以下報錯你可能不會發生,因為我修改了一下requirement包,也可能會,即安裝pygoject無法安裝
即使換版本也報錯,就試下這個(刪掉requirement里面的gobject獨立安裝它)
yum install python-gobject gtk3
此時python包已安裝完成,記得修改setting里面的文件配置即可
3.1 安裝mariaDB(Linux/CentOS7.0發行版已將默認的數據庫從 MySQL 切換到 MariaDB兩人除了名字簡直就是一個東西,而且mysql在該環境下極其難裝)
yum install mariadb-server mariadb -y # 安裝
systemctl start mariadb # 啟動
# 確保mariadb服務器啟動后,執行命令初始化
mysql_secure_installation
mysql -uroot -p123 # 進入數據庫,你可以做跟mysql一模一樣的操作了 # 此時你可以設置一個對應的用戶權限給對應的庫,我沒有 create database company_info charset=utf8mb4; #company_info是對應的數據庫名字,后面拉數據需要用到的 show databases; # 看下是否創建成功,成功就退出遷移數據 exit; # 退出數據庫
3.2 刪除原有數據版本及遷移測試數據
rm -rf migrations # -rf即強勢刪除目錄[最高級]
# 數據模型遷移,遷移成自己的migrations
python manage.py db init # 項目剛創建時進行初始化
python manage.py db migrate -m '創建基本數據庫'
python manage.py db upgrade
mysql -uroot -p123 company_info < company_info.sql # 前面的company是數據庫內的剛剛創建的庫,company_info.sql 是可遷移的測試數據
# 遷移完成后可以進去庫內看一下
mysql -uroot -p123
use company_info;
show tables;
select * from tb_use; # tb_use是表名字
# 此時可以啟動python后端,在manage所在的文件下,python manage.py runserver
4.1 nginx安裝配置及啟動[非虛擬環境下安裝]
yum install -y nginx
需要報錯,先執行以下操作,再繼續安裝
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install -y nginx whereis nginx # 查看位置在哪里
如果發生以下報錯 解決 /var/run/nginx.pid failed
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) sudo nginx -c /etc/nginx/nginx.conf nginx -s reload # 重啟nginx
4.2 配置nginx【此步驟前必須已先處理好小程序的域名備案及證書,未處理可看下面小程序篇,而且小程序請求的網址也需要改改,那是我的服務器網址,會開一段時間但別搞事情,因為我很多東西都沒配...】
https://cloud.tencent.com/document/product/400/35244 這是證書指南,不過路徑需要改一下,證書還要生成,下面的小程序篇有網址
server { listen 8080; server_name www.ben123123.club; # 監聽域名及端口 ssl on; ssl_certificate 1_www.ben123123.club_bundle.crt;#證書文件名稱 ssl_certificate_key 2_www.ben123123.club.key;#私鑰文件名稱 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #請按照這個協議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#請按照這個套件配置 ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:端口號/; # 當請求過來時,跳轉到這個網址,也可以跳轉到html等 } location /static/ { } }
nginx -s reload # 重啟即可
ps aux|grep nginx # 查看當前nginx進程
微信小程序配置
1.1 申請證書及解析壓縮證書
https://cloud.tencent.com/document/product/400/8422官方鏈接
2.1 window下微信小程序配置【只有window跟OS版】,最全的window下安裝npm實現小程序構建npm
選擇C盤以外的盤,然后在cmd 里輸入命令 node -v,如果有版本則成功,沒有則配路徑,以下是我的node路徑
https://youzan.github.io/vant-weapp/#/quickstart 這是vant組件庫的網址
關於../wxs/utils.wxs not found from .報錯
點擊工具/重新構建npm即可
2.2 此時小程序也已經配完,你只需要修改一下請求的網址即可
window 版,拉下window版的flask后端[刪掉migrations遷移自己的migrations(上面有方法)並遷移測試數據即可],小程序按上面配置[然后修改下網址的訪問為本地],備案沒通過的就用window版
3. 關於微信小程序前端的一些知識
1. setData的異步進行,獲取數據后打印是沒有的,但是wxml已經收到了
2. setStorageSync 同步緩存的利用【數據更安全】
3. 第三方組件vant-Weapp的使用
4. 生命周期onLoad和onShow的合理利用(如果想要每次切換頁面都刷新,就用onShow,而onLoad則是讓頁面數據顯示看起來更流暢)
5. 跳轉到tarbar 頁面需要不能用negativeTo等【swi...】
6. 數據的安全需要前后端都進行檢測限制
4. 關於該項目有什么問題都可以找我【或者以外的】QQ909336740,回復速度不定,祝各位能快速掌握flask+小程序