ロリポップサーバーではDB(MySQL)を利用できます。
そのDBにアクセスする方法が公式サイトの情報では分かりにくかったので、整理します。
- ロリポップサーバーのDBにアクセスする方法
- ロリポップサーバーで、できないこと
- エラー対応
ロリポップサーバーのDBにアクセスする方法
前提
ロリポップサーバーのDBは、レンタルサーバー内からしかアクセスできないです。
そのため、ロリポップサーバーで利用可能なCGIを経由してアクセスする必要があります。
ローカルでTypeScriptコードを実行→PythonのCGIをロリポップサーバーで実行→MySQLのデータベースに接続
という流れで接続します。
ローカルで実行するコードは任意の言語で大丈夫です。CGIもPHPやPerlなど他にも対応言語がありますのでお好みの言語をご利用ください。
アクセス手順
DB作成
ロリポップのページにアクセスし、「データベース」の「作成」からDBを作ってください。


作成したDBの、上記の情報は後で利用します。

phpMyAdminからDBに接続して、適当な名前でテーブルを作成し、行を足しておいてください。
CGI配置
まず、CGIの使い方を把握しておいてください。
以下の記事でHelloworld!までの手順を紹介しています。
同様の手順で、以下のPythonで書かれたCGIのコードをFTPでレンタルサーバー上にアップロードしてください。
#!/usr/local/bin/python3
# -*- coding: utf-8 -*-
import cgi
import mysql.connector
print("Content-Type: text/html; charset=utf-8\n")
try:
conn = mysql.connector.connect(
host='mysqlxxx.phy.lolipop.lan',
user='LAAxxx',
password='xxxxx',
database='LAAxxx-xxx',
charset='utf8mb4'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM your_table")
rows = cursor.fetchall()
for row in rows:
print(f"{row}<br>")
except mysql.connector.Error as err:
print(f"エラー: {err}")
finally:
if conn.is_connected():
cursor.close()
conn.close()

ロリポップのデータベース情報を参考に、以下のようにコードを書き換えてください。
hostはサーバー、userはユーザー名、passwordはユーザー名の行にある「パスワード確認」の中身、databaseはデータベース名を入力して下さい。
your_tableは、DBに作成したテーブル名に変更してください。適宜SQLもいじって遊んでみてください。
CGIをFTPを用いてサーバーに配置できたら、ファイルのURLをメモしておいてください。
ローカル実行用のTypeScriptコード
このCGIにローカルからアクセスする、TypeScriptで書かれたコードが以下になります。
// fetch-cgi.ts
const fetchCgi_demo = async () => {
try {
const response = await fetch('http://xxx/xxxx/xx.py');
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const text = await response.text();
console.log('CGIスクリプトの出力:');
console.log(text);
} catch (error) {
console.error('エラーが発生しました:', error);
}
};
fetchCgi_demo();
このコードを実行すると、DBの中身が参照できます。
http://xxx/xxxx/xx.pyは、CGIファイルのURLを指定してください。
実行は、以下のコマンドなどで可能です。
npx ts-node xxx.ts
ロリポップサーバーで、できないこと
SSHポートフォワーディングを利用してDBアクセスすること
禁止されているみたいです。ローカルからCGIを経由せずにDB接続できると嬉しかったのですが。。。
かなりいけてないですね。
pipやnpmの利用
これらが利用できないため、自由度が非常に低いです。
エラー対応
CGI実行で500エラーが出た場合
以下を参考にしてください。改行コードをLF(ラインフィード)に統一することで解消できます。

コメント