質問するログイン新規登録

質問編集履歴

7

情報を追記しました。

2020/02/18 10:54

投稿

chibi_kuma
chibi_kuma

スコア85

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

誤記を修正

2020/02/18 10:54

投稿

chibi_kuma
chibi_kuma

スコア85

title CHANGED
File without changes
body CHANGED
@@ -203,12 +203,12 @@
203
203
  ![イメージ説明](242226109b44e1c1d5d06c05621f4068.jpeg)
204
204
 
205
205
  また、「teraterm」のVSCodeでデバッグする前と、
206
- 「VSCode」 のターミナル上で、VSCodeでデバッグする後も比較してみました。
206
+ 「VSCode」 のターミナル上で、VSCodeでデバッグした後も比較してみました。
207
207
  ![イメージ説明](70b310c5eb178c974ebecbd05405df55.jpeg)
208
208
 
209
209
  VIRTUAL_ENVが増えていたり、PWDが変わっています…
210
210
  仮想環境がCGIの邪魔をしていますでしょうか?
211
211
 
212
- dodox86さんから頂いた質問への回答1でも書かせていただいたのですが、
212
+ 回答1でも書かせていただいたのですが、
213
213
  仮想環境がアクティベートされているのが原因ではないかと考え、
214
214
  「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。

5

情報を追記しました。

2020/02/07 10:10

投稿

chibi_kuma
chibi_kuma

スコア85

title CHANGED
File without changes
body CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  ---
84
84
 
85
- ### dodox86さんから頂いた質問への回答です。
85
+ ### dodox86さんから頂いた質問への回答
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
+ ![イメージ説明](242226109b44e1c1d5d06c05621f4068.jpeg)
204
+
205
+ また、「teraterm」のVSCodeでデバッグする前と、
206
+ 「VSCode」 のターミナル上で、VSCodeでデバッグする後も比較してみました。
207
+ ![イメージ説明](70b310c5eb178c974ebecbd05405df55.jpeg)
208
+
209
+ VIRTUAL_ENVが増えていたり、PWDが変わっています…
210
+ 仮想環境がCGIの邪魔をしていますでしょうか?
211
+
212
+ dodox86さんから頂いた質問への回答1でも書かせていただいたのですが、
213
+ 仮想環境がアクティベートされているのが原因ではないかと考え、
214
+ 「deactivate」コマンドを試してみたのですが、状況は変わりませんでした。

4

情報を追記しました。

2020/02/07 09:59

投稿

chibi_kuma
chibi_kuma

スコア85

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
- ![イメージ説明](4dba8359355fad30ef69018d65f8c080.jpeg)
139
+ ![イメージ説明](4dba8359355fad30ef69018d65f8c080.jpeg)
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

情報を追記しました。

2020/02/07 06:43

投稿

chibi_kuma
chibi_kuma

スコア85

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
- ごくごく簡単なPythonプログラム(後述)を、サーバー上に置き、
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プログラム。hello.py(UTF-8 BOM無し/LF)
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/hello.py
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
+ ![イメージ説明](f035720149c9d513333eef233da3e05f.jpeg)
128
+
129
+ ### mountコマンド
130
+ ![イメージ説明](bae088e3cdb50a27bc3f0bb026faf4f0.jpeg)
131
+
132
+
133
+ ### VSCodeにした設定
134
+ VSCode起動後、サーバーにSSH接続した直後の画面で、「settings.json」を開いています。
135
+ ![イメージ説明](19f6ad24022286adeb7ef56bd581302a.jpeg)
136
+
137
+ プログラムを一度実行させた後の画面で、「launch.json」を開いています。
138
+ 赤枠の部分が、「2.Python」に変わっていますが、これもよく分からないです。
139
+ ![イメージ説明](4dba8359355fad30ef69018d65f8c080.jpeg)

2

質問への回答を記載

2020/02/07 02:14

投稿

chibi_kuma
chibi_kuma

スコア85

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

タイトル修正

2020/02/06 08:26

投稿

chibi_kuma
chibi_kuma

スコア85

title CHANGED
@@ -1,1 +1,1 @@
1
- Visual Studio Codeからリモート接続中だけ、ブラウザからCGI(Python)「500 Internal Server Error」
1
+ Visual Studio Codeからリモート接続中だけ、ブラウザからCGI(Python)にアクセスすると「500 Internal Server Error」
body CHANGED
File without changes