1. 程式人生 > 實用技巧 >定時任務(Mysql和Postgresql 綜合版)

定時任務(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 進入編輯模式

  1. 將繫結的地址註釋

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密碼

  1. 檢視user表
select user, plugin from mysql.user;

  1. 修改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表單.

將填入的新值傳給後端, 後端更新資料