ubuntu@ubuntu1:~$ sudo su
root@ubuntu1:/home/ubuntu# fdisk -l
#파티션을 나눈다
root@ubuntu1:/home/ubuntu# fdisk /dev/vdc
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x452e13e9.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151999, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151999, default 2097151999):
Created a new partition 1 of type 'Linux' and of size 1000 GiB.
Command (m for help): p
Disk /dev/vdc: 1000 GiB, 1073741824000 bytes, 2097152000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x452e13e9
Device Boot Start End Sectors Size Id Type
/dev/vdc1 2048 2097151999 2097149952 1000G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@ubuntu1:/home/ubuntu# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 394M 1004K 393M 1% /run
/dev/vda1 97G 1.8G 95G 2% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 62M 62M 0 100% /snap/core20/1270
/dev/loop1 68M 68M 0 100% /snap/lxd/21835
/dev/vda15 105M 5.2M 100M 5% /boot/efi
tmpfs 394M 0 394M 0% /run/user/1000
/dev/loop3 50M 50M 0 100% /snap/snapd/18357
/dev/loop4 64M 64M 0 100% /snap/core20/1822
/dev/loop5 92M 92M 0 100% /snap/lxd/24061
#파티션을 포맷한다
root@ubuntu1:/home/ubuntu# mkfs.ext4 /dev/vdc1
#UUID를 확보한다
root@ubuntu1:/home/ubuntu# blkid
#디랙토리를 만든다
root@ubuntu1:/home/ubuntu# mkdir -p /home/ubuntu/storage
#재부팅시 자동 연결하기 위해서 파일에 설정한다
root@ubuntu1:/home/ubuntu# vi /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 1
LABEL=UEFI /boot/efi vfat umask=0077 0 1
/dev/vdb none swap sw,comment=cloudconfig 0 0
UUID=0a76a959-85d1-4e8c-8fe6-6e8d036017f7 /home/ubuntu/storage ext4 defaults 0 0
root@ubuntu1:/home/ubuntu# mount -a
root@ubuntu1:/home/ubuntu# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 394M 992K 393M 1% /run
/dev/vda1 97G 1.9G 95G 2% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 62M 62M 0 100% /snap/core20/1270
/dev/loop1 68M 68M 0 100% /snap/lxd/21835
/dev/vda15 105M 5.2M 100M 5% /boot/efi
tmpfs 394M 0 394M 0% /run/user/1000
/dev/loop3 50M 50M 0 100% /snap/snapd/18357
/dev/loop4 64M 64M 0 100% /snap/core20/1822
/dev/loop5 92M 92M 0 100% /snap/lxd/24061
/dev/vdc1 984G 77M 934G 1% /home/ubuntu/storage
#볼륨을 해제하고 다시 사용할때 사용한다
umount /home/ubuntu/storage << 마운트 해제시
Mysql 설치 및 원격접속 허용
apt-get install mariadb-server
mysql -uroot
> use mysql;
update user set authentication_string=password('password') where user='root';
flush priviledges ;
grant all privileges on . to 'root'@'%' identified by 'password';
>
root@ubuntu1:/home/ubuntu/storage# cd /etc
root@ubuntu1:/etc# cd mysql
root@ubuntu1:/etc/mysql# ls
conf.d debian-start debian.cnf mariadb.cnf mariadb.conf.d my.cnf my.cnf.fallback
root@ubuntu1:/etc/mysql# cd mariadb.conf.d
root@ubuntu1:/etc/mysql/mariadb.conf.d# ls
50-client.cnf 50-mysql-clients.cnf 50-mysqld_safe.cnf 50-server.cnf
root@ubuntu1:/etc/mysql/mariadb.conf.d# vi 50-server.cnf
127.0.0.1 >> 0.0.0.1 로변경
root@ubuntu1:/etc/mysql/mariadb.conf.d# systemctl restart mysql
>> sql 파일로 DB를 생성함
Docker container에서 curl을 사용하려면 다음과 같은 방법 중 하나를 선택하여 진행할 수 있습니다.
curl이 이미 설치된 Docker 이미지를 사용하기
curl이 이미 설치된 Docker 이미지를 사용하면 curl 명령어를 사용할 수 있습니다. 예를 들어, ubuntu 이미지를 사용하여 Docker 컨테이너를 실행하면 curl을 사용할 수 있습니다.
docker run -it ubuntu
컨테이너 내부에서 curl 명령어를 실행하면, 컨테이너 내부에 설치된 curl을 사용할 수 있습니다.
Docker 컨테이너 내부에 curl 설치하기
Docker 컨테이너 내부에 curl을 설치하여 사용할 수도 있습니다. 이를 위해서는 Dockerfile에서 curl을 설치하고 이미지를 빌드해야 합니다. 예를 들어, 다음과 같은 Dockerfile을 작성하여 curl을 설치한 이미지를 빌드할 수 있습니다.
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
이후, 다음과 같이 Docker 이미지를 빌드하여 컨테이너를 실행할 수 있습니다
docker build -t myimage .
docker run -it myimage
컨테이너 내부에서 curl 명령어를 실행하면, 컨테이너 내부에 설치된 curl을 사용할 수 있습니다.
Docker 컨테이너 외부에서 curl 사용하기
Docker 컨테이너 외부에서 curl 명령어를 실행할 수 있습니다. 이를 위해서는 docker exec 명령어를 사용하여 컨테이너 내부에서 curl 명령어를 실행해야 합니다. 예를 들어, 다음과 같이 컨테이너를 실행하고 docker exec 명령어를 사용하여 컨테이너 내부에서 curl 명령어를 실행할 수 있습니다.
docker run -it myimage
# 컨테이너 내부에서 실행
curl https://www.google.com
# 컨테이너 외부에서 실행
docker exec <container_id> curl https://www.google.com
위와 같이 curl을 사용하여 Docker 컨테이너 내부와 외부에서 데이터를 송수신할 수 있습니다
API 호출 결과는 response 변수에 저장됩니다. 이 값을 json.loads 함수를 사용하여 JSON 형태로 디코딩한 뒤, 필요한 정보를 추출하여 사용할 수 있습니다. 위 코드에서는 response_data['choices'][0]['text']를 통해 반환된 답변을 출력하고 있습니다.
이제 ChatGPT API를 사용하여 Python 애플리케이션에서 인공지능 대화 시스템을 구현할 수 있습니다.
API 호출 결과는 curl_exec 함수의 반환값인 $response 변수에 저장됩니다. 이 값을 json_decode 함수를 사용하여 JSON 형태로 디코딩한 뒤, 필요한 정보를 추출하여 사용할 수 있습니다. 위 코드에서는 $response_data['choices'][0]['text']를 통해 반환된 답변을 출력하고 있습니다.
이제 ChatGPT API를 사용하여 PHP 애플리케이션에서 인공지능 대화 시스템을 구현할 수 있습니다.
<?php
$oCurl = curl_init();
curl_setopt($oCurl,CURLOPT_URL,$url);
curl_setopt($oCurl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl,CURLOPT_NOSIGNAL, 1);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($oCurl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($oCurl, CURLOPT_VERBOSE, true);
curl_setopt($oCurl, CURLOPT_TIMEOUT, 3);
$response = curl_exec($oCurl);
$curl_errno = curl_errno($oCurl);
$curl_error = curl_error($oCurl);
curl_close($oCurl);
?>
이와 같이 php source를 실행하려는데 error 가 난다. 원인을 찾아보니 추가로 설치해야 하는가 보다 ㅎㅎ
=============
Fatal error: Uncaught Error: Call to undefined function curl_init() 에러는 PHP에서 cURL 확장을 로드하지 않은 경우 발생합니다. 이 에러를 수정하려면 다음과 같은 단계를 수행해야 합니다.
도커 컨테이너 안에 들어가서 PHP와 cURL을 설치해야 합니다. 컨테이너에 들어가는 방법은 docker exec 명령어를 사용하는 것입니다. 예를 들어, docker exec -it <container_name> bash 명령어를 사용하면 <container_name> 컨테이너에 bash 셸로 들어갈 수 있습니다.
컨테이너 안에서 다음과 같은 명령어를 실행하여 PHP와 cURL을 설치합니다.
sql
Copy code
apt-get update
apt-get install -y php-curl
이 명령어는 컨테이너 안에서 apt-get을 실행하여 패키지를 업데이트하고, php-curl 패키지를 설치합니다. 이 패키지는 PHP에서 cURL을 사용할 수 있도록 해 줍니다.
PHP-FPM 서비스를 재시작합니다. 이 작업은 도커 컨테이너를 다시 시작하여 수행할 수 있습니다.
php
Copy code
docker restart <container_name>
이제 다시 PHP를 실행하면 Fatal error: Uncaught Error: Call to undefined function curl_init() 에러가 발생하지 않아야 합니다.