1001 lines
33 KiB
Plaintext
1001 lines
33 KiB
Plaintext
42 curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
43 sudo apt-get update
|
|
44 curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
45 sudo nano /etc/apt/sources.list.d/timescaledb.list
|
|
46 sudo apt update
|
|
47 sudo rm /etc/apt/sources.list.d/timescaledb.list
|
|
48 sudo nano /etc/apt/sources.list.d/timescaledb.list
|
|
49 curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
50 sudo apt-get update
|
|
51 sudo apt-get install timescaledb-postgresql-16
|
|
52 sudo rm /etc/apt/sources.list.d/timescaledb.list
|
|
53 curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
54 sudo nano /etc/apt/sources.list.d/timescaledb.list
|
|
55 sudo apt-get update
|
|
56 sudo apt-get install timescaledb-postgresql-16
|
|
57 curl -s https://packagecloud.io/install/repositories/timescale/timescaledb/script.deb.sh | sudo bash
|
|
58 sudo pkill -f "script.deb.sh"
|
|
59 sudo rm -f /etc/apt/sources.list.d/timescaledb.list
|
|
60 sudo rm -f /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
61 sudo apt-get install timescaledb-2-postgresql-16
|
|
62 sudo pkill -f "script.deb.sh"
|
|
63 sudo rm -f /etc/apt/sources.list.d/timescaledb.list
|
|
64 sudo rm -f /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
65 curl -fsSL https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescaledb-archive-keyring.gpg
|
|
66 echo "deb [signed-by=/usr/share/keyrings/timescaledb-archive-keyring.gpg] https://packagecloud.io/timescale/timescaledb/ubuntu/ noble main" | sudo tee /etc/apt/sources.list.d/timescaledb.list
|
|
67 sudo apt-get update
|
|
68 sudo apt-get install timescaledb-2-postgresql-16
|
|
69 sudo nano /etc/postgresql/16/main/postgresql.conf
|
|
70 sudo systemctl restart postgresql
|
|
71 SHOW shared_preload_libraries;
|
|
72 sudo shutdown now
|
|
73 sudo add-apt-repository ppa:dotnet/backports
|
|
74 sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-10.0
|
|
75 resolvectl status
|
|
76 sudo resolvectl dns ens33 8.8.8.8 1.1.1.1
|
|
77 sudo resolvectl domain ens33 "~."
|
|
78 resolvectl status
|
|
79 sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-10.0
|
|
80 sudo apt update
|
|
81 sudo nano /etc/netplan/00-installer-config.yaml
|
|
82 sudo netplan apply
|
|
83 sudo chmod 600 /etc/netplan/00-installer-config.yaml
|
|
84 ls -l /etc/netplan/00-installer-config.yaml
|
|
85 sudo netplan apply
|
|
86 resolvectl status
|
|
87 ping -c 3 google.com
|
|
88 apt install postgresql
|
|
89 sudo apt install postgresql
|
|
90 sudo -u postgres PASSWORD 'root'
|
|
91 sudo -u postgres psql
|
|
92 sudo nano /etc/postgresql/15/main/postgresql.conf
|
|
93 postgresql --version
|
|
94 psql -version
|
|
95 sudo -u postgres psql
|
|
96 sudo nano /etc/postgresql/15/main/postgresql.conf
|
|
97 sudo nano /etc/postgresql/16/main/postgresql.conf
|
|
98 sudo nano /etc/postgresql/16/main/pg_hba.conf
|
|
99 sudo systemctl restart postgresql
|
|
100 mkdir -p ~/projects
|
|
101 cd ~/projects
|
|
102 dotnet new console -n DbTest
|
|
103 cd DbTest
|
|
104 dotnet --info
|
|
105 ls /usr/share/dotnet/sdk
|
|
106 which dotnet
|
|
107 dotnet --list-sdks
|
|
108 sudo apt update
|
|
109 sudo apt install -y dotnet-sdk-8.0
|
|
110 dotnet --list-sdks
|
|
111 8.0.xxx
|
|
112 cd ~/projects
|
|
113 dotnet new console -n DbTest
|
|
114 cd DbTest
|
|
115 dotnet add package Npgsql
|
|
116 ssh-keygen -t rsa -b 4096
|
|
117 ssh-copy-id pacer@192.168.0.50
|
|
118 sudo nano /etc/postgresql/16/main/pg_hba.conf
|
|
119 sudo systemctl restrat postgresql
|
|
120 sudo systemctl restart postgresql
|
|
121 ps aux | grep bash
|
|
122 cd DBTest
|
|
123 ls
|
|
124 cd DbTest
|
|
125 ls
|
|
126 cd bin
|
|
127 ls
|
|
128 cd ../
|
|
129 ls
|
|
130 exit
|
|
131 sudo shutdown now
|
|
132 ls
|
|
133 sudo shutdown now
|
|
134 cd DbTest
|
|
135 dotnet add package OPCFoundation.NetStandard.Opc.Ua
|
|
136 dotnet list package
|
|
137 sudo shutdown now
|
|
138 dotnet run
|
|
139 cd DbTest
|
|
140 dotnet run
|
|
141 cd..
|
|
142 cd ../
|
|
143 ls
|
|
144 cd OPCTest
|
|
145 ls
|
|
146 dotnet new console -n OpcUaClient
|
|
147 cd OpcUaClient
|
|
148 dotnet add package OPCFoundation.NetStandard.Opc.Ua
|
|
149 cd ../
|
|
150 cd ~/projects
|
|
151 ls
|
|
152 dotnet new console -n OpcUaClient
|
|
153 cd OpcUaClient
|
|
154 dotnet add package OPCFoundation.NetStandard.Opc.Ua
|
|
155 dotnet run
|
|
156 using System;
|
|
157 using System.Threading.Tasks;
|
|
158 using Opc.Ua;
|
|
159 using Opc.Ua.Client;
|
|
160 using Opc.Ua.Configuration;
|
|
161 class Program
|
|
162 { static async Task Main()
|
|
163 }
|
|
164 dotnet run
|
|
165 dotnet list package
|
|
166 using System;
|
|
167 using System.Threading.Tasks;
|
|
168 using Opc.Ua;
|
|
169 using Opc.Ua.Client;
|
|
170 using Opc.Ua.Configuration;
|
|
171 class Program
|
|
172 { static async Task Main()
|
|
173 }
|
|
174 dotnet run
|
|
175 dotnet new console -n OpcUaMinimal
|
|
176 cd OpcUaMinimal
|
|
177 dotnet add package OPCFoundation.NetStandard.Opc.Ua --version 1.5.378.106
|
|
178 cd ../
|
|
179 cd ~/project
|
|
180 ls
|
|
181 cd ~/projects
|
|
182 ls
|
|
183 dotnet new console -n OpcUaMinimal
|
|
184 cd OpcUaMinimal
|
|
185 dotnet add package OPCFoundation.NetStandard.Opc.Ua --version 1.5.378.106
|
|
186 dotnet run
|
|
187 ls
|
|
188 cd OpcUaMinimal
|
|
189 dotnet run
|
|
190 dotnet --list-sdks
|
|
191 dotnet --list-runtimes
|
|
192 dotnet list package
|
|
193 lsb_release -a
|
|
194 uname -a
|
|
195 dotnet run
|
|
196 dotnet list package
|
|
197 dotnet add package OPCFoundation.NetStandard.Opc.Ua --version 1.5.427.112
|
|
198 dpkg -I
|
|
199 apt list --installed
|
|
200 sudo shutdown now
|
|
201 cd OpcUaMinimal
|
|
202 dotnet new globaljson --sdk-version 8.0.123
|
|
203 dotnet --version
|
|
204 cd ~/projects/OpcClientSystem # 또는 프로젝트 루트
|
|
205 # .NET 8.0 고정
|
|
206 dotnet new globaljson --sdk-version 8.0.123 --force
|
|
207 # 확인
|
|
208 cat global.json
|
|
209 dotnet --version
|
|
210 # 프로젝트 생성 시에도 8.0 사용됨
|
|
211 dotnet new worker -n TestService
|
|
212 cd ~/projects
|
|
213 mkdir OpcConnectionTest
|
|
214 cd OpcConnectionTest
|
|
215 # 콘솔 프로젝트 생성
|
|
216 dotnet new console
|
|
217 # .NET 8.0 고정
|
|
218 dotnet new globaljson --sdk-version 8.0.123 --force
|
|
219 # OPC UA 패키지 설치
|
|
220 dotnet add package OPCFoundation.NetStandard.Opc.Ua
|
|
221 dotnet add package OPCFoundation.NetStandard.Opc.Ua.Client
|
|
222 dotnet run
|
|
223 dotnet clean
|
|
224 dotnet build
|
|
225 dotnet run
|
|
226 dotnet clean
|
|
227 dotnet build
|
|
228 dotnet clean
|
|
229 dotnet build
|
|
230 dotnet clean
|
|
231 dotnet build
|
|
232 git init
|
|
233 git clone windpacer@192.168.0.250
|
|
234 ssl ubuntu@192.168.0.250
|
|
235 ssh ubuntu@192.168.0.250
|
|
236 git --version
|
|
237 git config --global user.name "windpacer"
|
|
238 git config --global user.email "windpacer@hanmocnn.co.kr"
|
|
239 git remote add origin http://192.168.0.250:3000/windpacer/windpacer.git
|
|
240 git add .
|
|
241 git commit -m "OPC DB server Project First Commit"
|
|
242 git push -u origin main
|
|
243 git remote add origin https://192.168.0.250:3000/windpacer/windpacer.git
|
|
244 git push -u origin main
|
|
245 git remote add origin http://192.168.0.250/windpacer/windpacer.git
|
|
246 git remote remove origin
|
|
247 git remote add origin https://192.168.0.250:3000/windpacer/windpacer.git
|
|
248 git add .
|
|
249 git commit -m "OPC DB server Project First Commit"
|
|
250 git push -u origin main
|
|
251 git branch
|
|
252 git branch -M main
|
|
253 git push -u origin main
|
|
254 git remote remove origin
|
|
255 git remote add origin http://192.168.0.250:3000/windpacer/windpacer.git
|
|
256 git branch
|
|
257 git push -u origin main
|
|
258 git remote remove origin
|
|
259 git remote add origin http://192.168.0.250:3000/windpacer/dbserver.git
|
|
260 git checkout -b main
|
|
261 git add .
|
|
262 git commit -m "OPC DB server Project First Commit"
|
|
263 git push -u origin main
|
|
264 ssh ubuntu@192.168.0.250
|
|
265 ls
|
|
266 cd OpcConnectionTest
|
|
267 ls
|
|
268 dotnet run
|
|
269 sudo shutdown now
|
|
270 dotnet run
|
|
271 ls
|
|
272 cd OpcConnectionTest
|
|
273 ls
|
|
274 dotnet run
|
|
275 dotnet clean
|
|
276 dotnet build
|
|
277 dotnet clean
|
|
278 dotnet build
|
|
279 dotnet clean
|
|
280 dotnet build
|
|
281 dotnet clean
|
|
282 dotnet build
|
|
283 dotnet clean
|
|
284 dotnet build
|
|
285 dotnet run
|
|
286 dotnet clean
|
|
287 dotnet build
|
|
288 dotnet clean
|
|
289 dotnet build
|
|
290 dotnet run
|
|
291 cd ../
|
|
292 ls
|
|
293 cd opcCerti
|
|
294 ls
|
|
295 dotnet clean
|
|
296 dotnet build
|
|
297 cd ../
|
|
298 ls
|
|
299 cd ~/project/OpcConnectionTest
|
|
300 ls
|
|
301 cd ~/Projects
|
|
302 ls
|
|
303 cd ../
|
|
304 ls
|
|
305 cd ~/Projects
|
|
306 cd ~/projects/OpcConnectionTest
|
|
307 ls
|
|
308 dotnet clean
|
|
309 dotnet build
|
|
310 dotnet clean
|
|
311 dotnet build
|
|
312 dotnet clean
|
|
313 dotnet build
|
|
314 dotnet run
|
|
315 ls
|
|
316 dotnet clean
|
|
317 dotnet build
|
|
318 dotnet clean
|
|
319 dotnet build
|
|
320 dotnet clean
|
|
321 dotnet build
|
|
322 # 1. 폴더 생성
|
|
323 mkdir -p pki/own/certs pki/own/private pki/trusted/certs pki/rejected/certs
|
|
324 # 2. 개인키와 인증서 생성 (Honeywell 호환을 위해 2048비트 RSA 사용)
|
|
325 openssl req -x509 -newkey rsa:2048 -keyout pki/own/private/OpcTestClient.key -out pki/own/certs/OpcTestClient.der -days 3650 -nodes -outform DER -subj "/CN=OpcTestClient/DC=dbsvr"
|
|
326 ls
|
|
327 cd pki
|
|
328 ls
|
|
329 cd own
|
|
330 ls
|
|
331 cd certs
|
|
332 ls
|
|
333 cd ../
|
|
334 dotnet clean
|
|
335 dotnet build
|
|
336 dotnet run
|
|
337 # dbsvr 터미널에서 실행
|
|
338 openssl req -x509 -newkey rsa:2048 -keyout pki/own/private/OpcTestClient.key -out pki/own/certs/OpcTestClient.der -days 3650 -nodes -outform DER -subj "/CN=OpcTestClient" -addext "subjectAltName = URI:urn:OpcTestClient, IP:192.168.0.20"
|
|
339 # (IP 주소는 현재 dbsvr의 실제 IP로 바꿔주세요)
|
|
340 dotnet clear
|
|
341 dotnet clean
|
|
342 dotnet build
|
|
343 dotnet run
|
|
344 cp pki/own/private/OpcTestClient.key pki/own/OpcTestClient.key
|
|
345 openssl pkcs12 -export -out pki/own/private/OpcTestClient.pfx -inkey pki/own/private/OpcTestClient.key -in pki/own/certs/OpcTestClient.der -passout pass:
|
|
346 ls
|
|
347 cd pki
|
|
348 ls
|
|
349 cd own
|
|
350 ls
|
|
351 cd private
|
|
352 ls
|
|
353 cd ../
|
|
354 dotnet clean
|
|
355 dotnet build
|
|
356 dotnet run
|
|
357 ls
|
|
358 # 1. 파일 경로로 이동
|
|
359 cd ~/projects/OpcConnectionTest/pki/own/certs/
|
|
360 # 2. 라이브러리가 찾기 쉽게 파일명을 SubjectName과 동일하게 복사 (대소문자 주의)
|
|
361 # 만약 SubjectName이 "OpcTestClient"라면:
|
|
362 cp OpcTestClient.der OpcTestClient.der
|
|
363 # 혹시 모르니 소문자로도 하나 복사
|
|
364 cp OpcTestClient.der opctestclient.der
|
|
365 # 3. 개인키도 마찬가지 (private 폴더)
|
|
366 cd ../private/
|
|
367 cp OpcTestClient.key OpcTestClient.key
|
|
368 cp OpcTestClient.key opctestclient.key
|
|
369 # 4. 전체 권한 개방 (읽기 권한 문제 방지)
|
|
370 chmod -R 777 ~/projects/OpcConnectionTest/pki/
|
|
371 cd ../
|
|
372 # dbsvr 터미널에서 실행 (비밀번호 없음)
|
|
373 openssl pkcs12 -export -out ~/projects/OpcConnectionTest/pki/own/certs/OpcTestClient.pfx -inkey ~/projects/OpcConnectionTest/pki/own/private/OpcTestClient.key -in ~/projects/OpcConnectionTest/pki/own/certs/OpcTestClient.der -passout pass:
|
|
374 # 생성된 pfx를 private 폴더에도 복사
|
|
375 cp ~/projects/OpcConnectionTest/pki/own/certs/OpcTestClient.pfx ~/projects/OpcConnectionTest/pki/own/private/
|
|
376 ls -R pki/own
|
|
377 cd pki
|
|
378 ls
|
|
379 cd trusted
|
|
380 ls
|
|
381 cd certs
|
|
382 ls
|
|
383 cd ../
|
|
384 dotnet clean
|
|
385 dotnet build
|
|
386 dotnet clean
|
|
387 dotnet build
|
|
388 dotnet clean
|
|
389 dotnet build
|
|
390 dotnet clean
|
|
391 dotnet build
|
|
392 dotnet clean
|
|
393 dotnet build
|
|
394 dotnet clean
|
|
395 dotnet build
|
|
396 dotnet run
|
|
397 dotnet clean
|
|
398 dotnet build
|
|
399 dotnet run
|
|
400 sudo sh -c 'echo "192.168.0.20 DESKTOP-8VS6SD2" >> /etc/hosts'
|
|
401 dotnet run
|
|
402 sudo shutdown now
|
|
403 ls
|
|
404 cd projects
|
|
405 ls
|
|
406 cd ..
|
|
407 ls
|
|
408 setfont
|
|
409 sudo dpkg-reconfigure console-setup
|
|
410 xrandr
|
|
411 sudo shutdown now
|
|
412 nuget help
|
|
413 dotnet list package
|
|
414 ls
|
|
415 dotnet clean
|
|
416 dotnet build
|
|
417 dotnet run
|
|
418 dotnet clean
|
|
419 dotnet build
|
|
420 dotnet run
|
|
421 # PFX에서 DER 인증서 추출 (OpenSSL)
|
|
422 openssl pkcs12 -in OpcTestClient.pfx -clcerts -nokeys -out cert.pem -passin pass:
|
|
423 openssl x509 -in cert.pem -outform DER -out OpcTestClient.der
|
|
424 # 배치
|
|
425 cp OpcTestClient.der pki/own/certs/
|
|
426 dotnet clean
|
|
427 dotnet build
|
|
428 dotnet run
|
|
429 dotnet clean
|
|
430 dotnet build
|
|
431 dotnet run
|
|
432 dotnet clean
|
|
433 dotnet build
|
|
434 dotnet run
|
|
435 dotnet build
|
|
436 dotnet run
|
|
437 dotnet clean
|
|
438 dotnet build
|
|
439 dotnet clean
|
|
440 dotnet build
|
|
441 dotnet run
|
|
442 sudo dpkg-reconfigure console-setup
|
|
443 ls
|
|
444 cd projects
|
|
445 ls
|
|
446 cls
|
|
447 sudo shutdown now
|
|
448 sudo dpkg-reconfigure console-setup
|
|
449 ls
|
|
450 sudo shutdown now
|
|
451 dotnet run
|
|
452 dotnet clean
|
|
453 dotnet build
|
|
454 dotnet run
|
|
455 dotnet build
|
|
456 dotnet run
|
|
457 dotnet build
|
|
458 dotnet run
|
|
459 dotnet --list-runtimes
|
|
460 dotnet clean
|
|
461 dotnet build
|
|
462 dotnet run
|
|
463 dotnet build
|
|
464 dotnet run
|
|
465 dotnet --list-runtimes
|
|
466 dotnet build
|
|
467 dotnet clean
|
|
468 dontnet build
|
|
469 dotnet build
|
|
470 dotnet clean
|
|
471 dotnet build
|
|
472 dotnet run
|
|
473 dotnet build
|
|
474 dotnet run
|
|
475 dotnet build
|
|
476 dotnet run
|
|
477 dotnet build
|
|
478 dotnet run
|
|
479 dotnet build
|
|
480 dotnet run
|
|
481 dotnet build
|
|
482 dotnet clean
|
|
483 dotnet build
|
|
484 dotnet run
|
|
485 dotnet build
|
|
486 dotnet run
|
|
487 sudo sh -c 'echo "192.168.0.20 DESKTOP-8VS6SD2" >> /etc/hosts'
|
|
488 dotnet run
|
|
489 dotnet build
|
|
490 dotnet run
|
|
491 dotnet build
|
|
492 dotnet run
|
|
493 sudo sh -c 'echo "192.168.0.20 DESKTOP-8VS6SD2" >> /etc/hosts'
|
|
494 dotnet build
|
|
495 dotnet run
|
|
496 dotnet build
|
|
497 dotnet run
|
|
498 dotnet build
|
|
499 dotnet run
|
|
500 date
|
|
501 sudo timedatectl set-timezone Asia/Seoul
|
|
502 date
|
|
503 dotnet run
|
|
504 rm -rf pki/own/certs/OpcTestClient.pfx
|
|
505 rm -rf pki/own/private/OpcTestClient.pfx
|
|
506 dotnet run
|
|
507 ls -l pki/own/certs/OpcTestClient.pfx
|
|
508 dotnet run
|
|
509 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -nodes -subj "/CN=OpcTestClient/DC=dbsvr"
|
|
510 openssl pkcs12 -export -out pki/own/certs/OpcTestClient.pfx -inkey key.pem -in cert.pem -passout pass:
|
|
511 rm key.pem cert.pem
|
|
512 ls -l pki/own/certs/OpcTestClient.pfx
|
|
513 dotnet run
|
|
514 dotnet build
|
|
515 dotnet run
|
|
516 ls
|
|
517 pacer
|
|
518 sudo shutdwon now
|
|
519 sudo shutdown now
|
|
520 dotnet run
|
|
521 dotnet clean
|
|
522 dotnet build
|
|
523 dotnet run
|
|
524 dotnet clean
|
|
525 dotnet build
|
|
526 dotnet run
|
|
527 dotnet build
|
|
528 dotnet run
|
|
529 dotnet build
|
|
530 dotnet run
|
|
531 dotnet build
|
|
532 dotnet run
|
|
533 dotnet clean
|
|
534 dotnet build
|
|
535 dotnet run
|
|
536 dotnet build
|
|
537 dotnet run
|
|
538 dotnet build
|
|
539 dotnet run
|
|
540 hostname
|
|
541 dbsvr
|
|
542 rm -rf pki/own/certs/OpcTestClient.pfx
|
|
543 dotnet run
|
|
544 hostname -I
|
|
545 date
|
|
546 dotnet build
|
|
547 dotnet run
|
|
548 rm -rf pki/own/certs/OpcTestClient.pfx
|
|
549 dotnet build
|
|
550 dotnet run
|
|
551 dotnet build
|
|
552 dotnet run
|
|
553 sudo shutdown now
|
|
554 dotnet run
|
|
555 dotnet build
|
|
556 dotnet run
|
|
557 ping 192.168.0.182
|
|
558 dotnet run
|
|
559 dotnet build
|
|
560 dotnet run
|
|
561 dotnet build
|
|
562 dotnet run
|
|
563 dotnet build
|
|
564 dotnet run
|
|
565 dotnet build
|
|
566 dotnet run
|
|
567 cd ..
|
|
568 git add .
|
|
569 git commit -m "TAG 1 개 읽기 성공!"
|
|
570 git push -u orgin main
|
|
571 git remote -v
|
|
572 git config --list
|
|
573 git push -u orgin main
|
|
574 git branch
|
|
575 git push -u origin main
|
|
576 cd OpcConnectionTest
|
|
577 ls
|
|
578 dotnet run
|
|
579 sudo systemctl status postgresql
|
|
580 psql --version
|
|
581 sudo -u postgres psql
|
|
582 ls
|
|
583 dotnet add package Npgsql
|
|
584 dotnet build
|
|
585 dotnet run
|
|
586 dotnet build
|
|
587 dotnet run
|
|
588 # DB 접속
|
|
589 sudo -u postgres psql -d opcdb
|
|
590 # 테이블 구조 확인
|
|
591 \d opc_history
|
|
592 dotnet run
|
|
593 sudo -u postgres psql -d opcdb -c "SELECT * FROM opc_history ORDER BY id DESC;"
|
|
594 dotnet run
|
|
595 sudo -u postgres psql -d opcdb -c "SELECT * FROM opc_history ORDER BY id DESC;"
|
|
596 dotnet run
|
|
597 sudo -u postgres psql -d opcdb -c "SELECT * FROM opc_history ORDER BY id DESC;"
|
|
598 ls
|
|
599 cd ..
|
|
600 git add .
|
|
601 git commit -m "태그1개읽어서 DB INSERT 5회 성공!"
|
|
602 git push -u origin main
|
|
603 dotnet clean
|
|
604 dotnet build
|
|
605 cd OpcConnectionTest
|
|
606 ls
|
|
607 dotnet clean
|
|
608 dotnet build
|
|
609 dotnet list package --outdated
|
|
610 # 1. 기존에 꼬인 패키지들 최신 안정 버전으로 강제 업데이트
|
|
611 dotnet add package Opc.Ua.Client
|
|
612 dotnet add package Opc.Ua.Core
|
|
613 dotnet add package Opc.Ua.Configuration
|
|
614 # 2. 캐시 정리 및 다시 로드
|
|
615 dotnet restore
|
|
616 dotnet build
|
|
617 dotnet run
|
|
618 dotnet build
|
|
619 dotnet run
|
|
620 dotnet build
|
|
621 dotnet run
|
|
622 cd ..
|
|
623 mkdir OpcPksPlatform
|
|
624 cd OpcPksPlatform
|
|
625 cd ..
|
|
626 # 1. 솔루션 폴더 생성 및 이동
|
|
627 New-Item -ItemType Directory -Name OpcPksPlatform
|
|
628 cd OpcPksPlatform
|
|
629 # 2. 솔루션 파일 생성
|
|
630 dotnet new sln -n OpcPksPlatform
|
|
631 # 3. 프로젝트 생성 (Core, Collector, Web)
|
|
632 dotnet new classlib -n OpcPks.Core # 공통 라이브러리
|
|
633 dotnet new console -n OpcPks.Collector # 수집기 (Ubuntu용)
|
|
634 dotnet new mvc -n OpcPks.Web # 웹 서버 (엔지니어링 화면)
|
|
635 # 4. 솔루션에 프로젝트 등록
|
|
636 dotnet sln add OpcPks.Core/OpcPks.Core.csproj
|
|
637 dotnet sln add OpcPks.Collector/OpcPks.Collector.csproj
|
|
638 dotnet sln add OpcPks.Web/OpcPks.Web.csproj
|
|
639 # 5. 프로젝트 간 참조(Dependency) 설정
|
|
640 # Collector와 Web이 Core를 참조하게 함
|
|
641 dotnet add OpcPks.Collector/OpcPks.Collector.csproj reference OpcPks.Core/OpcPks.Core.csproj
|
|
642 dotnet add OpcPks.Web/OpcPks.Web.csproj reference OpcPks.Core/OpcPks.Core.csproj
|
|
643 # 6. 필수 NuGet 패키지 추가 (기존 csproj 기반)
|
|
644 # Core: DB 및 공통 모델용
|
|
645 dotnet add OpcPks.Core/OpcPks.Core.csproj package Npgsql
|
|
646 dotnet add OpcPks.Core/OpcPks.Core.csproj package OPCFoundation.NetStandard.Opc.Ua
|
|
647 # Collector: OPC UA 클라이언트용
|
|
648 dotnet add OpcPks.Collector/OpcPks.Collector.csproj package OPCFoundation.NetStandard.Opc.Ua.Client
|
|
649 # 7. 데이터 및 로그 폴더 생성
|
|
650 New-Item -ItemType Directory -Path "data"
|
|
651 New-Item -ItemType Directory -Path "logs"
|
|
652 Write-Host "✅ OpcPksPlatform 솔루션 빌드 완료!" -ForegroundColor Green
|
|
653 dotnet build
|
|
654 ls
|
|
655 cd OpcPks.Core.Data
|
|
656 cd OpcPks.Core
|
|
657 ls
|
|
658 cd OpcPks.Collector
|
|
659 ls
|
|
660 cd OpcPksPlatform
|
|
661 ls
|
|
662 dotnet build
|
|
663 dotnet clean
|
|
664 cd OpcPks.Collector
|
|
665 ls
|
|
666 psql -U pacer -d opcdb
|
|
667 psql -U postgres -d opcdb
|
|
668 sudo -u postgres psql
|
|
669 psql -U pacer -d opcdb
|
|
670 dotnet run
|
|
671 sudo -u postgres psql
|
|
672 dotnet run
|
|
673 sudo -U pacer psql
|
|
674 psql -U pacer -d opcdb
|
|
675 # 1. 웹 프로젝트 폴더로 이동
|
|
676 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
677 # 2. 프로젝트 빌드 및 실행
|
|
678 dotnet run
|
|
679 psql -U pacer -d opcdb
|
|
680 cd ..
|
|
681 ls
|
|
682 cd OpcPks.Core
|
|
683 ls
|
|
684 cd Data
|
|
685 ls
|
|
686 cd..
|
|
687 cd ..
|
|
688 ls
|
|
689 cd OpcPks.Collector
|
|
690 ls
|
|
691 dotnet run
|
|
692 cd ..
|
|
693 psql -U pacer -d opcdb
|
|
694 ls
|
|
695 cd OpcPks.Web
|
|
696 dontnet run
|
|
697 dotnet run
|
|
698 cd ..
|
|
699 ls
|
|
700 psql -U pacer -d opcdb
|
|
701 dotnet add package OPCFoundation.NetStandard.Opc.Ua.Client
|
|
702 find . -name "*.csproj"
|
|
703 # 1. 수집기 프로젝트에 설치 (실제 통신 담당)
|
|
704 dotnet add OpcPks.Collector/OpcPks.Collector.csproj package OPCFoundation.NetStandard.Opc.Ua.Client
|
|
705 # 2. 웹 프로젝트에 설치 (UI에서 노드 정보 처리용)
|
|
706 dotnet add OpcPks.Web/OpcPks.Web.csproj package OPCFoundation.NetStandard.Opc.Ua.Client
|
|
707 dotnet build
|
|
708 # Core 프로젝트 폴더로 이동하거나 경로를 지정해서 설치
|
|
709 dotnet add OpcPks.Core/OpcPks.Core.csproj package Npgsql
|
|
710 dotnet build
|
|
711 # Core 프로젝트 버전 조정
|
|
712 dotnet add OpcPks.Core/OpcPks.Core.csproj package Npgsql --version 8.0.4
|
|
713 # Web 프로젝트 버전 조정
|
|
714 dotnet add OpcPks.Web/OpcPks.Web.csproj package Npgsql --version 8.0.4
|
|
715 # Collector 프로젝트 버전 조정
|
|
716 dotnet add OpcPks.Collector/OpcPks.Collector.csproj package Npgsql --version 8.0.4
|
|
717 dotnet build
|
|
718 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
719 dotnet run
|
|
720 # 1. 뷰 폴더 생성
|
|
721 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Web/Views/Home
|
|
722 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Web/Views/Engineering
|
|
723 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Web/Views/Shared
|
|
724 # 2. 파일 이동 (선생님의 Index.cshtml을 Engineering 폴더로)
|
|
725 # 만약 파일이 다른 곳에 있다면 Engineering 폴더로 옮깁니다.
|
|
726 mv ~/projects/OpcPksPlatform/OpcPks.Web/Views/Index.cshtml ~/projects/OpcPksPlatform/OpcPks.Web/Views/Engineering/Index.cshtml 2>/dev/null
|
|
727 cd ..
|
|
728 # tree가 설치되어 있지 않다면 설치 (Fedora 기준)
|
|
729 sudo dnf install -y tree
|
|
730 # 프로젝트 구조 출력 (bin, obj, .git 등 불필요한 폴더는 제외하고 출력)
|
|
731 tree -I "bin|obj|.git|.vs"
|
|
732 # tree 설치 후 출력
|
|
733 sudo apt update && sudo apt install -y tree
|
|
734 tree -I "bin|obj|.git|.vs"
|
|
735 # 컨트롤러 파일 이름의 공백 제거
|
|
736 mv "~/projects/OpcPksPlatform/OpcPks.Web/Controllers/Engineering Controller.cs" "~/projects/OpcPksPlatform/OpcPks.Web/Controllers/EngineeringController.cs"
|
|
737 # PostgreSQL 서비스 계정이 폴더를 읽을 수 있도록 권한 부여
|
|
738 sudo chmod 755 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data
|
|
739 sudo chmod 644 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/Honeywell_FullMap.csv
|
|
740 cd ~/projects/OpcPksPlatform
|
|
741 dotnet build
|
|
742 cd OpcPks.Web
|
|
743 dotnet run
|
|
744 # 기존 Index.cshtml을 TagExplorer.cshtml로 이름 변경
|
|
745 mv ~/projects/OpcPksPlatform/OpcPks.Web/Views/Engineering/Index.cshtml ~/projects/OpcPksPlatform/OpcPks.Web/Views/Engineering/TagExplorer.cshtml
|
|
746 cd ..
|
|
747 dotnet run
|
|
748 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
749 dotnet run
|
|
750 cd ~/projects/OpcPksPlatform
|
|
751 dotnet clean
|
|
752 dotnet build
|
|
753 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
754 cd ..
|
|
755 dotnet build
|
|
756 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
757 dotnet run
|
|
758 curl -X POST http://localhost:5000/Engineering/RunCrawler
|
|
759 ls
|
|
760 cd OpcPksPlatform
|
|
761 ls
|
|
762 cd OpcPks.Web
|
|
763 curl -X POST http://localhost:5000/Engineering/RunCrawler
|
|
764 fuser -k 5000/tcp
|
|
765 cd ..
|
|
766 dotnet build
|
|
767 cd ~/projects/OpcPksPlatform
|
|
768 find . -maxdepth 3 -not -path '*/.*'
|
|
769 # 1. Core 프로젝트 안에 Services 폴더 생성 (이미 있다면 무시)
|
|
770 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Core/Services
|
|
771 # 2. 최상위에 있던 파일들을 정위치로 이동
|
|
772 mv ~/projects/OpcPksPlatform/Services/HoneywellCrawler.cs ~/projects/OpcPksPlatform/OpcPks.Core/Services/
|
|
773 mv ~/projects/OpcPksPlatform/OpcPks.Core/OpcSessionManager.cs ~/projects/OpcPksPlatform/OpcPks.Core/Services/
|
|
774 # 3. 빈 폴더 삭제
|
|
775 rmdir ~/projects/OpcPksPlatform/Services
|
|
776 cd ~/projects/OpcPksPlatform
|
|
777 dotnet build
|
|
778 # 1. Models 폴더 생성
|
|
779 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Core/Models
|
|
780 # 2. 표준 데이터 모델 파일 생성
|
|
781 cat <<EOF > ~/projects/OpcPksPlatform/OpcPks.Core/Models/TagMaster.cs
|
|
782 namespace OpcPks.Core.Models;
|
|
783 public class TagMaster
|
|
784 {
|
|
785 public string TagName { get; set; } = string.Empty;
|
|
786 public string NodeId { get; set; } = string.Empty;
|
|
787 public string Description { get; set; } = string.Empty;
|
|
788 public string DataType { get; set; } = string.Empty;
|
|
789 public string Level { get; set; } = string.Empty;
|
|
790 }
|
|
791 EOF
|
|
792 cd ~/projects/OpcPksPlatform
|
|
793 tree -L 3 -I "obj|bin|.*"
|
|
794 cd ~/projects/OpcPksPlatform
|
|
795 dotnet build
|
|
796 cat <<EOF > ~/projects/OpcPksPlatform/OpcPks.Core/Models/TagMaster.cs
|
|
797 namespace OpcPks.Core.Models;
|
|
798 public class TagMaster
|
|
799 {
|
|
800 public string TagName { get; set; } = string.Empty;
|
|
801 public string FullNodeId { get; set; } = string.Empty; // NodeId 대신 크롤러가 찾는 이름
|
|
802 public string Description { get; set; } = string.Empty;
|
|
803 public string DataType { get; set; } = string.Empty;
|
|
804 public string NodeClass { get; set; } = string.Empty; // 추가
|
|
805 public int Level { get; set; } // string에서 int로 변경 (크롤러 연산용)
|
|
806 }
|
|
807 EOF
|
|
808 dotnet build
|
|
809 cd ~/projects/OpcPksPlatform
|
|
810 dotnet build
|
|
811 cd ~/projects/OpcPksPlatform
|
|
812 dotnet build
|
|
813 # Ubuntu Server 터미널에서 실행
|
|
814 ping 192.168.0.20 -c 4
|
|
815 cd ~/projects/OpcPksPlatform/OpcPks.Web
|
|
816 dotnet run --urls "http://0.0.0.0:5000"
|
|
817 hostname -I
|
|
818 dotnet run --urls "http://0.0.0.0:5000"
|
|
819 cd ..
|
|
820 dotnet build
|
|
821 ls
|
|
822 cd OpcPks.Web
|
|
823 ls
|
|
824 dotnet build
|
|
825 dotnet run --urls "http://0.0.0.0:5000
|
|
826 dotnet run --urls "http://0.0.0.0:5000"
|
|
827 tree -L 3 -I "obj|bin|.*"
|
|
828 dotnet run
|
|
829 ls
|
|
830 sudo shutdown now
|
|
831 tree -L 3 -I "obj|bin|.*"
|
|
832 cd OpcPks.Web
|
|
833 cd OpcPksPlatform
|
|
834 ls
|
|
835 cd OpcPks.Web
|
|
836 ls
|
|
837 dotnet run
|
|
838 cd ..
|
|
839 dotnet build
|
|
840 cd ..cd \
|
|
841 cd \
|
|
842 cd /
|
|
843 ls
|
|
844 ls -a
|
|
845 mkdir -p .config/OPC Foundation/CertificateStores/MachineDefault/certs/
|
|
846 sudo mkdir -p .config/OPC Foundation/CertificatesStores/MachineDefault/certs
|
|
847 sudo mkdir -p .config/OPC Foundation/CertificatesStores/MachineDefault/private
|
|
848 ls
|
|
849 ls -a
|
|
850 cd .config
|
|
851 ls
|
|
852 cd OPC
|
|
853 ls
|
|
854 cd ..
|
|
855 rmdir OPC
|
|
856 sudo rmdir OPC
|
|
857 ls
|
|
858 sudo mkdir -p "OPC Foundation"
|
|
859 ls
|
|
860 sudo mkdir -p /CertificateStores/MachineDefault/certs/
|
|
861 ls
|
|
862 sudo mkdir -p /CertificateStores/MachineDefault/privates/
|
|
863 ls
|
|
864 cd OPC Foundation
|
|
865 cd "OPC Foundation"
|
|
866 ls
|
|
867 sudo mkdir -p /CertificateStores
|
|
868 cd CertificateStores
|
|
869 ls
|
|
870 sudo mkdir -p CertificateStores/MachineDefault/certs
|
|
871 ls
|
|
872 cd CertificateStores
|
|
873 ls
|
|
874 cd MachineDefault
|
|
875 ls
|
|
876 sudo mkdir -p private
|
|
877 ls
|
|
878 # Data 폴더로 이동 (경로는 실제 환경에 맞춰 확인해 주세요)
|
|
879 mkdir -p ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki
|
|
880 # 이전 프로그램의 pki 폴더 내용을 통째로 복사 (예시 경로입니다)
|
|
881 cp -r ~/이전프로그램폴더/pki/* ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki/
|
|
882 # 권한 부여 (우분투에서 읽고 쓸 수 있게)
|
|
883 chmod -R 755 ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki
|
|
884 chmod -R 755 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki
|
|
885 cd /
|
|
886 ls
|
|
887 cd Foundation
|
|
888 ls
|
|
889 sudo rmdir -p Foundation
|
|
890 cd ..
|
|
891 sudo rmdir -p Foundation
|
|
892 ls
|
|
893 cd home
|
|
894 ls
|
|
895 cd pacer
|
|
896 ls
|
|
897 cd projects
|
|
898 ls
|
|
899 cd OpcPksPlatform
|
|
900 ls
|
|
901 dotnet build
|
|
902 ls
|
|
903 cd OpcPks.Web
|
|
904 ls
|
|
905 dotnet run
|
|
906 ls -R /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki
|
|
907 ls -ahlR /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki
|
|
908 mv /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/certs/OpcTestClient.pfx /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/private/
|
|
909 chmod -R 777 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own
|
|
910 dotnet run
|
|
911 sudo shutdown now
|
|
912 cd OpcPksPlatform
|
|
913 OpcPks.View
|
|
914 cd OpcPks.Web
|
|
915 ls
|
|
916 dotnet run
|
|
917 cd ..
|
|
918 ls
|
|
919 cd OpcPks.Core
|
|
920 ls
|
|
921 cd Data
|
|
922 ls
|
|
923 cd pki
|
|
924 ls
|
|
925 openssl req -x509 -new -nodes -keyout private.key -sha256 -days 365 -out certificate.crt -config openssl.cnf
|
|
926 cd /
|
|
927 ls
|
|
928 ls -a -r *.key
|
|
929 find . -name *key
|
|
930 sudo find . *.crt
|
|
931 openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout myopc.key -out myopc.crt
|
|
932 sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout 8845hs.key -out 8845hs.crt
|
|
933 ls
|
|
934 sudo cp 8845hs.* Projects\OpcPksPlatform\OpcPks.Core\Data
|
|
935 sudo cp 8845hs.* Projects\OpcPksPlatform\OpcPks.Core\Data\pki\own
|
|
936 cd ~/OpcPksPlatform/OpcPks.Core
|
|
937 cd ~/Projects/OpcPksPlatform/OpcPks.Core/Data/pki/own
|
|
938 ls
|
|
939 cd /
|
|
940 ls
|
|
941 cp 8845hs.* ~/projectOpcPksPlatform/OpcPks.Core/Data/pki/
|
|
942 cp 8845hs.* ~/projectOpcPksPlatform/OpcPks.Core/Data/pki
|
|
943 cp 8845hs.* ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki/
|
|
944 sudo chown -R pacer 8845hs.*
|
|
945 cp 8845hs.* ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki/
|
|
946 ls
|
|
947 cd ~/project/OpcPksPlatform/OpcPks.Core/Data/pki/
|
|
948 cd ~/projects/OpcPksPlatform/OpcPks.Core/Data/pki/
|
|
949 ls
|
|
950 cp 8845hs.crt /own
|
|
951 cd ..
|
|
952 cd OpcPks.Web
|
|
953 ls
|
|
954 dotnet run
|
|
955 sudo reboot now
|
|
956 cd OpcPks.Web
|
|
957 ls
|
|
958 dotnet run
|
|
959 tree -L 3 -I "obj|bin|.*"H
|
|
960 cd ..
|
|
961 dotnet build
|
|
962 cd OpcPks.Web
|
|
963 ls
|
|
964 dotnet run
|
|
965 tree -L 3 -I "obj|bin|.*"H
|
|
966 # pfx 파일을 private 폴더로 이동 (이미 하셨다면 스킵하셔도 됩니다)
|
|
967 mv /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/certs/OpcTestClient.pfx /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/private/
|
|
968 # 만약 해당 pfx에 대한 공개 인증서(.der)가 없다면 폴더 권한을 완전히 열어줍니다.
|
|
969 # 그래야 프로그램이 스스로 .der 파일을 추출해서 own/certs에 저장할 수 있습니다.
|
|
970 chmod -R 777 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own
|
|
971 dotnet run
|
|
972 cd ..
|
|
973 dotnet build
|
|
974 cd OpcPks.Web
|
|
975 dotnet run
|
|
976 cd ..
|
|
977 dotnet build
|
|
978 cd OpcPks.WEb
|
|
979 cd OpcPks.Web
|
|
980 dotnet run
|
|
981 cd ..
|
|
982 dotnet build
|
|
983 cd OpcPks.Web
|
|
984 dotnet run
|
|
985 dotnet run --urls "http://0.0.0.0:5000
|
|
986 :
|
|
987 dotnet run --urls "http://0.0.0.0:5000"
|
|
988 dotnet run
|
|
989 # 5000번 포트 허용
|
|
990 sudo ufw allow 5000/tcp
|
|
991 # 방화벽 상태 확인 (5000번이 ALLOW로 떠야 함)
|
|
992 sudo ufw status
|
|
993 dotnet run --urls "http://0.0.0.0:5000"
|
|
994 ping 192.168.0.20
|
|
995 nc -zv 192.168.0.20 4840
|
|
996 openssl pkcs12 -in /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/private/OpcTestClient.pfx -nokeys -info | grep URI
|
|
997 openssl pkcs12 -in /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/pki/own/private/OpcTestClient.pfx -nokeys -clcerts | openssl x509 -text -noout | grep -A 1 "Subject Alternative Name"
|
|
998 cd OpcPksPlatform
|
|
999 ls
|
|
1000 dotnet build
|
|
1001 cd OpcPks.Web
|
|
1002 ls
|
|
1003 # 1. 포트 개방
|
|
1004 sudo ufw allow 5000/tcp
|
|
1005 # 2. 모든 인터페이스 바인딩 실행
|
|
1006 dotnet run --urls "http://0.0.0.0:5000"
|
|
1007 sudo nano /etc/hosts
|
|
1008 ip addr
|
|
1009 cd ..
|
|
1010 ls
|
|
1011 dotnet build
|
|
1012 cd OpcPks.Web
|
|
1013 ls
|
|
1014 dotnet run
|
|
1015 cd ..
|
|
1016 dotnet build
|
|
1017 cd OpcPks.Web
|
|
1018 dotnet run
|
|
1019 sudo dotnet run
|
|
1020 nc -zv 192.168.0.20 4840
|
|
1021 telnet 192.168.0.20 4840
|
|
1022 nc -zv -w 5 192.168.0.20 4840
|
|
1023 dotnet run
|
|
1024 cd ..
|
|
1025 dotnet build
|
|
1026 cd OpcPks.Web
|
|
1027 ls
|
|
1028 dotnet run
|
|
1029 head -n 10 /home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data/Honeywell_FullMap.csv
|
|
1030 sudo dotnet run --project OpcPks.Web --urls "http://0.0.0.0:5000"
|
|
1031 cd ..
|
|
1032 sudo dotnet run --project OpcPks.Web --urls "http://0.0.0.0:5000"
|
|
1033 dotnet build
|
|
1034 cd OpcPks.Web
|
|
1035 sudo dotnet run --urls "http://0.0.0.0:5000"
|
|
1036 dotnet list reference
|
|
1037 cd OpcPks.Web
|
|
1038 dotnet run --urls "http://192.168.0.5:5000"
|
|
1039 cd ..
|
|
1040 ls
|
|
1041 history > myhistory.txt
|