定時任務(Mysql和Postgresql 綜合版)
1. 傳輸檔案
1.1 安裝VMWare tools
左上角虛擬機器 -- 安裝VMWare tools ,下載完成後
移動到任意資料夾中,解壓到當前資料夾
右鍵開啟終端,cd到vmware-tools-distrib目錄,輸入命令:
sudo ./vmware-install.pl
出現第一個畫面時,選擇“y”回車, 然後一路回車,安裝完成.
重啟電腦,重新進入,安裝vmware tools即生效。滑鼠和複製貼上就生效了。
關閉虛擬機器
虛擬機器 -- 設定
選項--共享資料夾 -- 總是啟用 -- 新增
設定windows中共享檔案的路徑
點選完成
點選確定
在/mnt/hgfs目錄下可以找到共享檔案,將其拖動到左側
將專案檔案拷貝到共享檔案中
複製檔案到opt下的mywork目錄中
sudo cp -r /mnt/hgfs/timetask_share/JobCenter /opt/mywork
2. 環境
2.1 安裝pycharm
準備好壓縮包和破解檔案,放入共享目錄
在虛擬機器中,將檔案拷貝到自定義目錄
解壓到當前檔案
sudo tar -xzvf pycharm-professional-2020.1.2.tar.gz
開啟終端,進入pycharm-2020.1.2/bin
sh ./pycharm.sh
下一步,直到出現驗證啟用碼,選擇免費試用30天
建立一個新專案
將之前共享資料夾中的 jetbrains-agent.jar 放到pycharm的bin目錄下
sudo cp /home/yang/Downloads/jetbrains-agent.jar /home/yang/programfiles/pycharm-2020.1.2/bin
回到Pycharm -- 右上角Help -- Edit Custom VM Options
輸入對應路徑的jebrains-agent.jar
-javaagent:/home/yang/programfiles/pycharm-2020.1.2/bin/jetbrains-agent.jar
拖動到當前檔案
重啟,成功
2.2 python3.7
2.2.1 準備
安裝依賴包
sudo apt-get install build-essential checkinstall sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev
2.2.2 下載安裝檔案
# 下載到指定位置
cd /home/yang/Downloads
sudo wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
# 解壓
sudo tar xzf Python-3.7.0.tgz
2.2.3 安裝路徑
sudo mkdir -p /usr/local/python3
2.2.4 編譯安裝
執行這步是後面最好加上 --enable-optimizations 會自動安裝pip3及優化配置
cd Python-3.7.0
sudo ./configure --prefix=/usr/local/python3 --enable-optimizations
sudo make
sudo make install
2.2.5 檢查軟連結
python3 -V
pip3 -V
# 若存在舊python3版本,備份舊版軟連結
mv /usr/bin/python3 /usr/bin/python3.5
mv /usr/bin/pip3 /usr/bin/pip3.5
#新增python3的軟連結
sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3.7
#新增 pip3 的軟連結
sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3.7
2.3 安裝mysql
2.3.1 準備
sudo apt-get update
sudo apt-get install net-tools
sudo apt-get install vim
2.3.2 安裝
sudo apt-get install mysql-server mysql-client
輸入如下命令進行檢驗是否安裝mysql成功。
sudo netstat -tap | grep mysql
2.3.3 設定
mysql預設只允許本地主機訪問127.0.0.1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
進入後按insert 進入編輯模式
- 將繫結的地址註釋
2 ) 由於安裝的mysql沒有跳出設定初始密碼 以root進入的時候會被密碼攔住
這裡設定跳過密碼驗證
註釋後按Esc退出編輯模式
輸入 :wq! 退出
預設關閉了遠端連線,因此要去開啟遠端連線,並修改配置允許其他ip訪問.
如果後續仍然有報錯,可以將127.0.0.1 改為 0.0.0.0 允許任何人連線(之後會設定賬號密碼),問題解決
2.3.4 重啟
`/etc/init.d/mysql restart` 或者 service mysql restart
此時進入資料庫無需密碼
mysql -uroot
2.3.5 設定root密碼
- 檢視user表
select user, plugin from mysql.user;
- 修改root的plugin
use mysql;
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
重新整理許可權,再次檢視
flush privileges;
select user, plugin from mysql.user;
修改一下root的密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';
# 比如我的 '你的密碼' 替換為 '123456'
flush privileges;
之後記得別忘了將原先配置檔案中的跳過密碼驗證給取消註釋~
到這裡你就可以在虛擬機器裡使用root賬號和密碼連線資料庫了.
如果想在主機或區域網其他主機連線資料庫還需要更進一步的配置:
檢視host
select host , user from user;
發現root對應是在localhost下的, 也就是說,mysql預設root是用來給本地連線使用的
那麼我們再建立一個超級管理員使用者,專門來進行遠端訪問
建立使用者 boss
CREATE USER 'boss'@'%' IDENTIFIED BY '123456';
賦予許可權
grant all privileges on *.* to 'boss'@'%';
重新整理資料庫賬戶許可權
flush privileges;
重新整理許可權之後,重新查詢。
select user,host from user;
退出
\q
mysql -u boss -p
輸入密碼
建立資料庫
create database timetask character set utf8 collate utf8_general_ci;
註釋掉/etc/mysql/mysql.conf.d/mysqld.cnf中新增的跳過密碼的語句
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Esc推出編輯模式
:wq! 儲存並退出
重啟mysql資料庫伺服器
service mysql start
之後就可以建立資料庫並順利連線到專案了~
2.4 安裝chorme ubuntu版
sudo apt-get install chromium-browser
2.5 Postgresql
安裝依賴
sudo apt-get install libpq-dev python-dev
安裝驅動
sudo apt-get install python-psycopg2
postgres
sudo apt-get install postgresql
切換到Linux的postgres使用者下
sudo su postgres
登陸postgresql
psql postgres
設定管理員密碼
ALTER USER postgres with PASSWORD 'postgres'
建立資料庫
CREATE DATABASE timetask;
修改專案中的config.py
POSTGRESQL_URL='postgresql+psycopg2://postgres:[email protected]:5432/timetask'
替換定時器的設定
\q 退出
目前專案可以訪問本地資料庫了
如果我們需以主機的ip訪問本地資料庫的話 還需要進一步設定:
修改 postgresql.conf檔案
修改/etc/postgresql/對應你的版本/main目錄下的 postgresql.conf檔案
# 如果使用者為postgresql 記得先exit退出 回到本機使用者
exit
cd /etc/postgresql/10/main
sudo vim postgresql.conf
找到listen_addresses = 'localhost'
改為:
ESC退出編輯模式
-- wq!儲存
修改pg_hba.conf檔案
設定新增允許的訪問主機
重啟服務生效
sudo service postgresql restart
配置完成
3. 執行
給專案增加檔案許可權
sudo chmd -R 777 JobCenter
安裝pipenv
sudo pip install pipenv -i https://mirrors.aliyun.com/pypi/simple/
實在不行就
pip install pipenv
pipenv install --dev
$ pipenv shell
flask init # 建立資料庫
flask run
4. 部署
4、uwsgi安裝與配置**
pip換源
在Windows下:
C:\Users\Administrator\下新建pip資料夾,在建立pip.ini檔案,拷貝下面程式碼進去,儲存。
在linux下:
sudo vim ~/.pip/pip.conf
替換為:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
進入專案虛擬環境目錄下的bin檔案,即:專案根目錄/venv/bin
pipenv install uwsgi -i https://mirrors.aliyun.com/pypi/simple/
如果報錯:
File "/tmp/pip-install-q21no8ws/uwsgi/uwsgiconfig.py", line 755, in __init__
raise Exception("you need a C compiler to build uWSGI")
Exception: you need a C compiler to build uWSGI
# 輸入
sudo apt-get install gcc
#實在不行就安裝build-essential
02、鍵入以下命令安裝build-essential軟體包:
linuxidc@linuxidc:~/www.linuxidc.com$ sudo apt install build-essential
該命令將安裝一堆新包,包括gcc,g ++和make。
03、要驗證GCC編譯器是否已成功安裝,請使用gcc --version命令列印GCC版本:
linuxidc@linuxidc:~/www.linuxidc.com$ gcc --version
Ubuntu 18.04儲存庫中可用的預設GCC版本是7.4.0:
#ubuntu
sudo apt-get install python3.7-dev
修改啟動檔案webhook.py rename為 manage.py
from flask_script import Manager
from app import create_app
app =create_app()
manager = Manager(app)
if __name__ == '__main__':
manager.run()
# 即可測試
python manage.py runserver
進入專案根目錄,新建目錄
# 新建 uwsgi.ini
[uwsgi]
# 當載入的時候, Uwsgi的IP和埠
http=192.168.136.130:5001
# 對應web專案的主目錄
chdir=/home/yang/mywork/JobCenter/
# 虛擬環境位置
virtualenv=/home/yang/.local/share/virtualenvs/JobCenter-6lJXnf_S
# 啟動檔案
wsgi-file=manage.py
# The application variable of Python Flask Core Oject
callable=app
# The maximum numbers of Processes
processes=3
# The maximum numbers of Threads
threads=2
執行測試~
`uwsgi --ini uwsgi.ini`
Ctrl+C 結束執行。
如何實現 編輯彈出修改定時任務的功能
將定時任務的div 複製到想加入到的地方
將原本由後端渲染的wtf_qick_form替換為前端生成的form表單.
將填入的新值傳給後端, 後端更新資料