クロールしたデータなどをVPSに置いてアクセスしたい
VPSでクロールして自分なりに加工したデータをデータベースに入れて、ローカルのコンピュータからアクセスできたらいいなと思いやってみました。
- ConoHaのVPSにMariaDB(MySQL)を設置して
- セキュリティの設定
- Pythonでアクセスしてみる
ConoHa VPSにMariaDBを設置
MariaDBはMySQLとほぼほぼ同じです。ライセンスの関係でMySQLから派生したオープンソースプロジェクトです。
CentOS7で、最新版のMariaDBをインストールします。 普通にyum installをすると古いMariaDBがインストールされてしまうので、公式ページから最新版のリポジトリを登録するシェルスクリプトをダウンロードして実行します。
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
curlでシェルスクリプトをダウンロードします。 -sSオプションは進捗は表示しないけどエラーがでたら表示します。 それをパイプ( | )でつないで、bashで実行します。
$ yum install MariaDB-server MariaDB-client
yumでMariaDB-server MariaDB-clientをインストールします。 さきほどリポジトリを設定しているので最新版がインストールされます。
$ rpm -qa | grep Maria
rpm -qaオプションでインストールされているパッケージ一覧を表示し、それをパイプで渡します。 grep Maria でパッケージ一覧から"Maria"が含まれているパッケージのみを検索して表示します。
MariaDB-compat-10.3.10-1.el7.centos.x86_64 MariaDB-common-10.3.10-1.el7.centos.x86_64 MariaDB-server-10.3.10-1.el7.centos.x86_64 MariaDB-client-10.3.10-1.el7.centos.x86_64
10.3.10がインストールされています。
$ systemctl start mariadb
mariadbをスタートします。
$ systemctl enable mariadb
ログイン時にmariadbが自動的に起動されるようにします。
$ mysql_secure_installation
mysqlの設定を行います。 設定が終わったらmysqlに入ってみます。
$ mysql -u root -p
パスワードを聞かれますので、mysql_secure_installationで設定したパスワードを入力します。
$ vim /etc/my.cnf
/etc/my.cnfを変更します。
を追記します。
$ systemctl restart mariadb
mariadbを再起動します。
firewall-cmd --add-service=mysql --zone=public --permanent
firewall-cmdでmysqlが外部からアクセスできるようにします。
firewall-cmd --list-services --zone=public --permanent
のように、mysqlが結果に含まれていればfirewalldの設定はうまくいっています。 外部からmysqlに接続できるようになりました。
$ firewall-cmd --reload
設定を再読込し、反映します。
$ netstat -ant
$ mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to your@'%' identified by 'your_pass';
PythonでVPS上のMySQLにアクセスする
sqlalchemyというPython パッケージを使用します。 VPSのIPアドレスが140.64.124.44 (架空のIPアドレスですので自分のVPSのIPアドレスに変更してください)として接続してみます。
from urllib.parse import urlparse
from sqlalchemy import create_engine
import pandas as pd
db_path = "mysql://your:your_pass@140.64.124.44:3306/mydb"
url = urlparse(db_path)
conn = create_engine('mysql+pymysql://{user}:{password}@{host}:{port}/{database}'.format(host = url.hostname, port=url.port, user = url.username, password= url.password, database = url.path[1:]))
table = "mytable" #mytableというテーブルを読み込む
df = pd.read_sql("select * from {}".format(table), conn)
print(df)
ConoHa VPSは一番使いやすくてオススメなVPSです
↓ConoHa VPSはVPSの中で一番使いやすくてオススメです!
⇩⇩⇩各社VPSを徹底比較した記事を書きました。もしよかったらどうぞ!
https://applingo.tokyo/article/491
コメント