質問編集履歴
7
情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -211,4 +211,74 @@
|
|
211
211
|
|
212
212
|
回答1でも書かせていただいたのですが、
|
213
213
|
仮想環境がアクティベートされているのが原因ではないかと考え、
|
214
|
-
「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。
|
214
|
+
「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。
|
215
|
+
|
216
|
+
---
|
217
|
+
|
218
|
+
### dodox86さんから頂いた回答に対する返信
|
219
|
+
|
220
|
+
>Shebangとしてシステムがあらかじめ用意しているインタープリターを指定
|
221
|
+
>(例えば#!/usr/bin/python)した場合に問題がなければ、つまりは仮想環境のせいだと問題の切り分けができます。
|
222
|
+
|
223
|
+
test_hello.pyで、以下のShebangを試してみました。
|
224
|
+
```Python
|
225
|
+
#!/home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7
|
226
|
+
#!/home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python
|
227
|
+
#!/usr/bin/python3.6(←XSERVER指定のもの)
|
228
|
+
```
|
229
|
+
いずれもVSCode上でも、CGIでも動きました。
|
230
|
+
但し、VSCodeでデバッグ後は、どれもCGIからは動きませんでした。
|
231
|
+
|
232
|
+
> cgiスクリプト中でwhoamiコマンドを実行することで、cgiプログラム実行時のアカウントを確認することができます。
|
233
|
+
|
234
|
+
whoamiコマンドを実行してみました。
|
235
|
+
VSCode上で走らせても、CGIで走らせても、XSERVERのユーザー名が表示されました。
|
236
|
+
Shebangのhomeの次に書いてある(ユーザー名)と同じです。
|
237
|
+
|
238
|
+
> 赤枠の部分が、「2.Python」に変わっていますが、これもよく分からないです。
|
239
|
+
> リモートデバッグでPythonインタープリターがデバッガーにアタッチしたままだから、だと思います。
|
240
|
+
|
241
|
+
ご指摘の通りです。
|
242
|
+
ここにヒントがありました。
|
243
|
+
|
244
|
+
(参考)Pythonで仮想環境virtualenvを作成し、Visual Studio Codeで自動適用する開発環境を構築する
|
245
|
+
https://qiita.com/psychoroid/items/6646d45d6a019f5cf16f
|
246
|
+
|
247
|
+
VSCodeが自動的に仮想環境をactivateしているようです。
|
248
|
+
この時、シェルもbashからPythonシェルに自動的に切り替わるようで、
|
249
|
+
その為、赤枠の部分が、「2.Python」という表示に変わっているようです。
|
250
|
+
|
251
|
+
> 仮想環境のactivate.batが実行されることで仮想環境に入り、
|
252
|
+
> 仮想環境に入ったことを示す(env)がターミナルの頭に付きます。
|
253
|
+
|
254
|
+
ということなので、activateが走る前後で、ターミナルの表示が変わるのは、
|
255
|
+
そういう事なのかと理解しました。
|
256
|
+
|
257
|
+
activateが走る前 ----- [(ユーザー名)@(サーバー番号) ]
|
258
|
+
activateが走った後 --- (libexec) [(ユーザー名)@(サーバー番号) ]
|
259
|
+
|
260
|
+
以前、「deactivate」を叩いてもダメだったと書きましたが、
|
261
|
+
試しに、「deactivate libexec」と叩いてみたら、上記の表示が、「activateが走る前」の状態に戻りました。
|
262
|
+
|
263
|
+
更に、exitを叩くと、Pythonシェルから抜け、
|
264
|
+
赤枠の部分が、「1.bash」に戻りました。
|
265
|
+
もう一度、exitと叩くと、ターミナルウインドウ自体が終了し、
|
266
|
+
CGIから、プログラムが走るようになりました。
|
267
|
+
|
268
|
+
> deactivateをしたとしてもVisual Studio Codeを終了させるまでは
|
269
|
+
> 仮想環境のファイルやディレクトリが有効なままかもしれません。
|
270
|
+
|
271
|
+
これが当りだと思われます。
|
272
|
+
ターミナルウインドウの終了=仮想環境の適用終了になっているようです。
|
273
|
+
|
274
|
+
VSCodeを終了させなくても、仮想環境の適用を解くことは出来るようになりましたが、
|
275
|
+
これではVSCodeを終了させているのと、(手間的に)あまり違いがないので、もう少し粘ってみたいと思います。
|
276
|
+
(ちょっと長くなりすぎたので、一度こちらはクローズするかも知れません)
|
277
|
+
|
278
|
+
大変申し訳ないですが時間切れの為、今回、お答えできなかった部分についてはまたの機会とさせていただきます。
|
279
|
+
|
280
|
+
尚、Visual Studio Codeに導入したエクステンションは、
|
281
|
+
沢山入れてしまっているので、どれがどう影響しているのか不明なのですが、
|
282
|
+
リモートデバッグ絡みだと以下の2つだと思われます。
|
283
|
+
- Remote - SSH(Misrosoft)
|
284
|
+
- Remote Development(Microsoft)
|
6
誤記を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -203,12 +203,12 @@
|
|
203
203
|

|
204
204
|
|
205
205
|
また、「teraterm」のVSCodeでデバッグする前と、
|
206
|
-
「VSCode」 のターミナル上で、VSCodeでデバッグ
|
206
|
+
「VSCode」 のターミナル上で、VSCodeでデバッグした後も比較してみました。
|
207
207
|

|
208
208
|
|
209
209
|
VIRTUAL_ENVが増えていたり、PWDが変わっています…
|
210
210
|
仮想環境がCGIの邪魔をしていますでしょうか?
|
211
211
|
|
212
|
-
|
212
|
+
回答1でも書かせていただいたのですが、
|
213
213
|
仮想環境がアクティベートされているのが原因ではないかと考え、
|
214
214
|
「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。
|
5
情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
---
|
84
84
|
|
85
|
-
### dodox86さんから頂いた質問への回答
|
85
|
+
### dodox86さんから頂いた質問への回答1
|
86
86
|
環境としては先の質問と同じものですが、
|
87
87
|
VSCode側でリモートデバッグをしているまっ最中に、ブラウザから実行したいわけではありません。
|
88
88
|
(出来れば理想的ですが…)
|
@@ -181,4 +181,34 @@
|
|
181
181
|
|
182
182
|
```ErrorLog
|
183
183
|
[Fri Feb 07 13:11:48.013552 2020] [cgid:error] [pid 152796:tid 140141704247040] [client (うちのIPアドレス):55354] End of script output before headers: test_hello.py
|
184
|
-
```
|
184
|
+
```
|
185
|
+
|
186
|
+
---
|
187
|
+
|
188
|
+
### dodox86さんから頂いた質問への回答4
|
189
|
+
|
190
|
+
> cgiでの実行時とVSCodeのターミナルでの実行時にPATHや環境変数、ホームディレクトリ下のファイル状況が違っているのだろうと思い、
|
191
|
+
> それらを確認するために、teratermなりでログインして、VSCodeでのターミナルログイン時と違うことを確認すればいいかと思いました、
|
192
|
+
> 面倒であればとりあえず結構です。
|
193
|
+
|
194
|
+
申し訳ありません、面倒だった訳ではなく、
|
195
|
+
単純にLinuxについて詳しくない為、何を確認して良いのかさっぱり分からず、あのような質問となりました。
|
196
|
+
お気に障りましたらお詫びいたします。
|
197
|
+
|
198
|
+
「teraterm」でSSHログインし、echo $PATH、printenvコマンドの結果を、
|
199
|
+
VSCodeでデバッグする前と後で比較してみましたが、こちらは変化がありませんでした。
|
200
|
+
|
201
|
+
「VSCode」でSSHログインし、「VSCode」のターミナル上で、
|
202
|
+
echo $PATH、printenvの内容を、VSCodeでデバッグする前と後で比較してみました。こちらは変化がありました。
|
203
|
+

|
204
|
+
|
205
|
+
また、「teraterm」のVSCodeでデバッグする前と、
|
206
|
+
「VSCode」 のターミナル上で、VSCodeでデバッグする後も比較してみました。
|
207
|
+

|
208
|
+
|
209
|
+
VIRTUAL_ENVが増えていたり、PWDが変わっています…
|
210
|
+
仮想環境がCGIの邪魔をしていますでしょうか?
|
211
|
+
|
212
|
+
dodox86さんから頂いた質問への回答1でも書かせていただいたのですが、
|
213
|
+
仮想環境がアクティベートされているのが原因ではないかと考え、
|
214
|
+
「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。
|
4
情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
|
41
41
|
↓ターミナル上でプログラムを起動した時の、ターミナルの表示
|
42
|
-
```
|
42
|
+
```terminal
|
43
43
|
[(ユーザー名)@(サーバー番号) ]$ source /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/activate
|
44
44
|
(libexec) [(ユーザー名)@(サーバー番号) ]$ /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 /home/(ユーザー名)/(ユーザー名).jp/public_html/XXXXX/test_hello.py
|
45
45
|
Content-type: text/html
|
@@ -100,8 +100,8 @@
|
|
100
100
|
Pythonのバージョン表示はVSCode起動直後の状態に戻っていますが、
|
101
101
|
やはりブラウザからは、アクセス出来ませんでした。
|
102
102
|
|
103
|
-
↓ターミナル上でデバッグ実行後、「deactivate」を叩いてみた
|
103
|
+
↓VSCode上のターミナル上でデバッグ実行後、「deactivate」を叩いてみた
|
104
|
-
```
|
104
|
+
```terminal
|
105
105
|
[(ユーザー名)@(サーバー番号) ]$ source /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/activate
|
106
106
|
(libexec) [(ユーザー名)@(サーバー番号) ]$ /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 /home/(ユーザー名)/(ユーザー名).jp/public_html/XXXXX/hello.py
|
107
107
|
Content-type: text/html
|
@@ -136,4 +136,49 @@
|
|
136
136
|
|
137
137
|
プログラムを一度実行させた後の画面で、「launch.json」を開いています。
|
138
138
|
赤枠の部分が、「2.Python」に変わっていますが、これもよく分からないです。
|
139
|
-

|
139
|
+

|
140
|
+
|
141
|
+
---
|
142
|
+
|
143
|
+
### dodox86さんから頂いた質問への回答3
|
144
|
+
|
145
|
+
> launch.json のpathMappings:で
|
146
|
+
> localRoot: "$`{workspaceFolder"}",
|
147
|
+
> remoteRoot: "/home/..../.....jp/public_html/..../"
|
148
|
+
> となっていて、デバッグ実行時にローカルPC上のワークスペースのディレクトリを
|
149
|
+
> リモートの「/home/..../.....jp/public_html/..../」に再マップしているように思います。
|
150
|
+
|
151
|
+
VSCodeのエディタは、サーバーに置いてあるファイルを直接編集しているようです。
|
152
|
+
(ローカル側のファイルタイムスタンプはいつも古いままなので)
|
153
|
+
|
154
|
+
で、デバッグ実行時を走らせると、エディタのファイルパス表記が、
|
155
|
+
サーバー上のパスから、Windows上のパス表記に変わっている事に、今更ながら気がつきました。
|
156
|
+
|
157
|
+
また、localRootの方のフォルダ名を試しにリネームしてからデバッグ実行時をしてみたら、
|
158
|
+
(フォルダが存在しない状態にして実行してみたら)以下のエラーになりました。
|
159
|
+
|
160
|
+
```ErrorMessage
|
161
|
+
'test_hello.py' を開くことができません: ファイル 'c:\Users\xxxx\Desktop\xxxx\xxxx\test_hello.py' を読み取れません
|
162
|
+
(Error: 存在しないファイル 'c:\Users\xxxx\Desktop\xxxx\xxxx\test_hello.py' を解決できません)。
|
163
|
+
```
|
164
|
+
|
165
|
+
ぬぬ?サーバー上ファイルをローカルに持ってきて
|
166
|
+
サーバー上でステップ実行しているように見せかけているの…?
|
167
|
+
|
168
|
+
> ブラウザーでCGIのエラーが起きる状態で、
|
169
|
+
> (VSCodeのターミナルではなく)別でsshでログインして
|
170
|
+
> ユーザー環境を確認してみることはできますか。
|
171
|
+
|
172
|
+
「teraterm」でログインできます。
|
173
|
+
「ユーザー環境を確認」…すみません、何をどのように確認したら良いでしょうか?
|
174
|
+
|
175
|
+
> また、Internal Server Error 500は、恐らくスクリプトの起動すらできていません。
|
176
|
+
> CGIのエラーなどはhttpd(nginx)のエラーログ(/var/log/httpd/error.logとか)に保存されることが多いですが、
|
177
|
+
> XSERVERだとhttpdのエラーを確認できるかどうか分かりません。可能であれば見てみてください。
|
178
|
+
|
179
|
+
XSERVERのサーバーパネルからエラーログがダウンロードできるのですが、これが「httpdのエラーログ」に相当するものでしょうか?
|
180
|
+
「Internal Server Error 500」が発生する時は、以下が記録されています。(質問本文にも記載しています)
|
181
|
+
|
182
|
+
```ErrorLog
|
183
|
+
[Fri Feb 07 13:11:48.013552 2020] [cgid:error] [pid 152796:tid 140141704247040] [client (うちのIPアドレス):55354] End of script output before headers: test_hello.py
|
184
|
+
```
|
3
情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
(linuxbrew/pipenvを利用)
|
3
3
|
|
4
4
|
サーバーの環境構築はド素人の為、色々なサイトの情報を参考にさせていただきながら、
|
5
|
-
手探りでなんとか構築しましたが、
|
5
|
+
手探りでなんとか構築しましたが、色々と分かっていないまま使っております。
|
6
6
|
|
7
7
|
現在、壁にぶつかっている問題は、表題の通りなのですが、
|
8
|
-
ごく
|
8
|
+
ごく簡単なPythonプログラム(後述)を、サーバー上に置き、
|
9
9
|
パーミッションを705に設定し、ブラウザからアクセスすると、動きます。
|
10
10
|
|
11
11
|
しかし、「Visual Studio Code」を起動し、リモート接続をしている間、
|
@@ -14,7 +14,7 @@
|
|
14
14
|
「Visual Studio Code」を終了させ、
|
15
15
|
再度ブラウザからアクセスすると、何事もなく動くようになります。
|
16
16
|
|
17
|
-
↓ごくごく簡単なPythonプログラム。
|
17
|
+
↓ごくごく簡単なPythonプログラム。test_hello.py(UTF-8 BOM無し/LF)
|
18
18
|
```Python
|
19
19
|
#!/home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7
|
20
20
|
# -*- coding: utf-8 -*-
|
@@ -41,7 +41,7 @@
|
|
41
41
|
↓ターミナル上でプログラムを起動した時の、ターミナルの表示
|
42
42
|
```
|
43
43
|
[(ユーザー名)@(サーバー番号) ]$ source /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/activate
|
44
|
-
(libexec) [(ユーザー名)@(サーバー番号) ]$ /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 /home/(ユーザー名)/(ユーザー名).jp/public_html/XXXXX/
|
44
|
+
(libexec) [(ユーザー名)@(サーバー番号) ]$ /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 /home/(ユーザー名)/(ユーザー名).jp/public_html/XXXXX/test_hello.py
|
45
45
|
Content-type: text/html
|
46
46
|
|
47
47
|
|
@@ -52,7 +52,6 @@
|
|
52
52
|
1行目の source ~ activate は、自分で打ち込んでいる訳ではなく、
|
53
53
|
「Visual Studio Code」の実行ボタン(Run Python File in Terminal)をクリックした時に
|
54
54
|
勝手に表示されて実行されている感じです。
|
55
|
-
(自分でどっか設定したんでしょうが、よく分かってなくて…)
|
56
55
|
|
57
56
|
「Visual Studio Code」のターミナル上で実行した時に、
|
58
57
|
サーバー内で何が起きているでしょうか?
|
@@ -65,11 +64,9 @@
|
|
65
64
|
「print('Content-type: text/html\n\n')」は、ちゃんと入ってるのに…
|
66
65
|
また、パーミッション、文字コード、改行コードも問題ないはずです。
|
67
66
|
|
68
|
-
|
69
67
|
まとまりのない質問で申し訳ありません。
|
70
68
|
また、必要な情報も足りていないのではないかと思いますが、
|
71
69
|
どの情報が必要なのかも分かっておりません。
|
72
|
-
|
73
70
|
よろしくお願い申し上げます。
|
74
71
|
|
75
72
|
|
@@ -83,7 +80,6 @@
|
|
83
80
|
Python3.4.x --- /usr/bin/python3.4
|
84
81
|
Python3.6.x --- /usr/bin/python3.6
|
85
82
|
|
86
|
-
|
87
83
|
---
|
88
84
|
|
89
85
|
### dodox86さんから頂いた質問への回答です。
|
@@ -116,6 +112,28 @@
|
|
116
112
|
[(ユーザー名)@(サーバー番号) ]$ python -V
|
117
113
|
Python 2.7.5
|
118
114
|
[(ユーザー名)@(サーバー番号) ]$
|
115
|
+
```
|
119
116
|
|
120
117
|
|
121
|
-
|
118
|
+
---
|
119
|
+
|
120
|
+
### dodox86さんから頂いた質問への回答2
|
121
|
+
|
122
|
+
VSCode上でのターミナルで df コマンド(可能ならmountコマンド)を実行したときの結果はこちらになります。
|
123
|
+
コマンドの内容を全部載せたらteratailの本文の文字数制限に引っかかってしまったので、
|
124
|
+
VSCodeでプログラムを走らせる前と後を差分プログラムで比較した画像のみ掲載させていただきました。
|
125
|
+
|
126
|
+
### dfコマンド
|
127
|
+

|
128
|
+
|
129
|
+
### mountコマンド
|
130
|
+

|
131
|
+
|
132
|
+
|
133
|
+
### VSCodeにした設定
|
134
|
+
VSCode起動後、サーバーにSSH接続した直後の画面で、「settings.json」を開いています。
|
135
|
+

|
136
|
+
|
137
|
+
プログラムを一度実行させた後の画面で、「launch.json」を開いています。
|
138
|
+
赤枠の部分が、「2.Python」に変わっていますが、これもよく分からないです。
|
139
|
+

|
2
質問への回答を記載
title
CHANGED
File without changes
|
body
CHANGED
@@ -81,4 +81,41 @@
|
|
81
81
|
- XSERVERにデフォルトで用意されているPythonのバージョンとパス
|
82
82
|
Python2.7.x --- /usr/bin/python
|
83
83
|
Python3.4.x --- /usr/bin/python3.4
|
84
|
-
Python3.6.x --- /usr/bin/python3.6
|
84
|
+
Python3.6.x --- /usr/bin/python3.6
|
85
|
+
|
86
|
+
|
87
|
+
---
|
88
|
+
|
89
|
+
### dodox86さんから頂いた質問への回答です。
|
90
|
+
環境としては先の質問と同じものですが、
|
91
|
+
VSCode側でリモートデバッグをしているまっ最中に、ブラウザから実行したいわけではありません。
|
92
|
+
(出来れば理想的ですが…)
|
93
|
+
|
94
|
+
VSCode側のリモートデバッグは完全に終わっているのに、
|
95
|
+
ブラウザから実行できないのです。
|
96
|
+
|
97
|
+
リモートデバッグは完全に終わっていると私は思っているのですが、
|
98
|
+
リモートデバッグをしたことで、多分、何らかの設定が変化してしまっていて、
|
99
|
+
VSCode起動直後の状態に戻っていない、というのが正しいかも知れません。
|
100
|
+
|
101
|
+
VSCodeでデバッグ実行直後、
|
102
|
+
source ~ activate が走っていることから、これを解除できれば良いのかもと思って
|
103
|
+
「deactivate」を試してみたのですが、
|
104
|
+
Pythonのバージョン表示はVSCode起動直後の状態に戻っていますが、
|
105
|
+
やはりブラウザからは、アクセス出来ませんでした。
|
106
|
+
|
107
|
+
↓ターミナル上でデバッグ実行後、「deactivate」を叩いてみた
|
108
|
+
```
|
109
|
+
[(ユーザー名)@(サーバー番号) ]$ source /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/activate
|
110
|
+
(libexec) [(ユーザー名)@(サーバー番号) ]$ /home/(ユーザー名)/.linuxbrew/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 /home/(ユーザー名)/(ユーザー名).jp/public_html/XXXXX/hello.py
|
111
|
+
Content-type: text/html
|
112
|
+
|
113
|
+
|
114
|
+
Hello World
|
115
|
+
(libexec) [(ユーザー名)@(サーバー番号) ]$ deactivate
|
116
|
+
[(ユーザー名)@(サーバー番号) ]$ python -V
|
117
|
+
Python 2.7.5
|
118
|
+
[(ユーザー名)@(サーバー番号) ]$
|
119
|
+
|
120
|
+
|
121
|
+
```
|
1
タイトル修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Visual Studio Codeからリモート接続中だけ、ブラウザからCGI(Python)
|
1
|
+
Visual Studio Codeからリモート接続中だけ、ブラウザからCGI(Python)にアクセスすると「500 Internal Server Error」
|
body
CHANGED
File without changes
|