디렉터리 구조나 파일의 위치, 이동, 삭제 등을 좀 편하게 하기 위해서 FTP를 연결해 로컬에서 관리할 수 있도록 한다.

 

FTP 툴은 FileZilla를 사용한다.

 

FileZilla

 

 

FileZilla를 실행하고 필요한 정보를 채운다.

 

호스트는 서버의 ip 주소, 사용자명과 비밀번호는 서버를 만들 때 입력했던 정보를 쓰면 된다.

 

포트는 FTP의 경우 기본적으로 21번 포트를 사용한다.

 

모든 정보를 입력하고 연결을 하면 디렉터리를 직관적으로 확인할 수 있다.

 

 

이제 GUI로 계층 구조를 직관적으로 확인할 수 있다.

 

FTP 사용을 하게 되면 파일을 관리하기 위해서는 읽기 뿐만 아니라 쓰기 권한도 필요하다. 서버에서 생성했던 파일은 소유자와 그룹 모두 서버에서만 사용할 수 있는 상태인데 일단 test.php를 로컬에서 변경할 것 이기 때문에 이 파일의 권한 중 그룹을 변경하고 쓰기 권한도 추가해 본다.

 

일단 파일들이 계속 추가될 것을 대비해서 폴더를 세분화해 둔다.

 

dev 경로를 생성해서 release 루트와 구분되도록 한다.

 

$sudo mkdir /home/username/html/dev

 

 

해당 경로로 test.php 이동

 

$sudo mv /home/username/html/test.php /home/username/html/dev/

 

test.php 권한 수정

 

// 읽기/쓰기 권한 부여
sudo chmod 664 /home/username/html/dev/test.php
// 소유자 , 그룹 수정
sudo chown apache:username /home/username/html/dev/test.php

 

 

php의 수정된 내용은 기존에 페이지가 열릴 때마다 테이블에 인서트 되던 것을 버튼 입력으로 처리 후 결괏값을 페이지에 반영하도록 수정했다.

 

<?php
// MySQL Connection
$servername = "localhost";
$username = "name";
$password = "password";
$dbname = "testdb";

//conn
$conn = new mysqli($servername, $username, $password, $dbname);

//conn check
if ($conn->connect_error){
	die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// data insert test (폼에서 제출 버튼 클릭 시 실행)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $sql = "INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com')";
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully<br>";

        // 테이블 데이터 출력
        echo "<h3>Users Table:</h3>";
        $result = $conn->query("SELECT * FROM users");
        if ($result->num_rows > 0) {
            echo "<table border='1'><tr><th>ID</th><th>Username</th><th>Email</th></tr>";
            while($row = $result->fetch_assoc()) {
                echo "<tr><td>" . $row["id"]. "</td><td>" . $row["username"]. "</td><td>" . $row["email"]. "</td></tr>";
            }
            echo "</table>";
        } else {
            echo "0 results";
        }
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>

<!-- 폼 추가 -->
<form method="POST" action="">
    <button type="submit">Submit</button>
</form>

 

로컬에서 수정한 test.php를 ftp를 사용해서 파일을 덮어쓰기 해본다.

 

이전에는 권한이 없어서 해당 동작이 실패했지만 권한 수정 후 문제없이 동작이 실행되었고 서버에서 vim으로 파일을 열어 변경된 내용을 확인해 보면 잘 바뀐 것을 확인할 수 있다.

 

이제 수정된 test.php 페이지를 열어본다.

 

 

 submit 클릭 시

 

 

FTP 연결까지 이상 없이 완료되었다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

[NHN Cloud Hosting - Linux] 로컬에서 DB 접속  (0) 2025.03.01
vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01

리눅스 서버에서 db를 사용하기에는 불편함이 많아서 로컬에서 클라이언트 툴을 연결해서 사용하기로 한다.

 

툴은 평소에 자주 쓰던 HeidiSQL을 쓰기로 한다.

 

NHN에서 서버의 보안 그룹 관련된 내용을 보면 my_sql은 기본적으로 허용하지 않기 때문에 직접 서버의 콘솔 페이지에서 보안그룹에 들어가서 포트와 접근 ip에 대한 설정을 해주어야 한다.

 

대시보드 > 자세히 보기 > 프로젝트 명 선택

 

보안 그룹 관리에서 추가하여 상태를 변경해 준다.

 

수신 / 사용자 정의 TCP / 3306 (MY-SQL) / IPv4 / 내 로컬 주소 (CIDR)

 

CIDR은 IP 주소 범위를 지정하는 방법인데 0.0.0.0/0은 모든 IP 주소를 허용하는데 내 로컬 주소만 허용하기로 한다.

 

https://ipinfo.io/ 에서 확인하여 내 IP를 특정하여 입력해 준다.

 

이렇게 하면 콘솔에서 보안은 해결되었고 이제 서버의 mysql에 로그인해서 로컬에서 사용할 계정을 따로 추가하도록 한다.

 

CREATE USER 'user_id'@'user_ip' IDENTIFIED BY 'user_password';

 

계정은 접속할 수 있는 IP를 지정(내 로컬 ip)하여 생성한다.

 

그리고 이 계정에 권한을 준다.

 

GRANT ALL PRIVILEGES ON testdb.* TO 'user_id'@'user_ip';
FLUSH PRIVILEGES

 

위에서 만든 계정에 database_name 데이터베이스에 대한 모든 권한(.*)을 준다.

 

이제 이렇게 만든 계정으로 HeidiSQL에 로그인하면 

 

HeidiSQL

 

서버의 db를 GUI로 확인할 수 있어 편한 게 관리할 수 있게 되었다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

[NHN Cloud Hosting - Linux] FTP 연결  (0) 2025.03.01
vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01

이번에는 test.php 파일을 만들어서 잘 동작하는지 테스트해본다.

 

먼저 리눅스에서 텍스트 파일을 사용하기 위해서 텍스트 편집기가 필요한데 일반적으로 vim이나 nano를 사용한다.

 

vim이 좀 더 복잡하지만 기능이 많고 nano가 더 단순하면서 간단하게 쓰는 도구라고 하는데 

 

일단 서버에 깔려있는 건 vim이라서 그대로 vim을 쓰기로 한다.

 

vim 버전확인

vim --version

 

파일을 생성하기 위해서는 경로가 필요한데 생각해 보니 아직 리눅스 서버의 폴더 구조를 모른다.

 

일단 폴더가 뭐가 있는지 확인해 본다.

 

ls /

 

ls 명령어는 자주 사용되는 것 중 하나로 list를 의미한다.

 

리눅스의 ls는 디렉터리 내의 파일과 폴더 목록을 나열하는 데 사용되며 / 를 통해서 루트 디렉터리에서 목록을 나열해 본다.

 

 

- bin : 시스템 부팅 및 작업에 필수적인 명령어들이 위치한다. 

- dev : 하드웨어 장치와 관련된 파일들이 들어 있다.

- home : 일반 사용자 계정의 홈 디렉터리가 위치한다. 각 사용자의 개인 디렉토리

- lib64 : 64비트 시스템 및 프로그램에 필요한 라이브러리  위치

- mnt : 일반적으로 임시로 다른 파일 시스템을 마운트 하는 디렉터리

- proc : 가상 파일 시스템으로, 시스템 상태나 프로세스 정보를 제공

- run : 시스템의 현재 실행 중인 프로세스와 관련된 정보가 저장

- srv : 서버가 제공하는 서비스에 관련된 데이터를 저장 (웹 서버, FTP 서버 등)

- tmp : 임시 파일들이 저장되는 경로, 시스템이 재부팅되면 지워진다.

- var : 로그 파일, 캐시 파일, 스풀 파일 등 변동하는 데이터가 저장되는 경로

- boot : 커널 파일 및 부트로더 관련 파일이 있다.

- etc : 시스템 설정 파일들이 모여 있는 경로이며 네트워크 설정, 사용자 설정 등이 포함된다.

- lib : 32비트 프로그램 실행에 필요한 필수적인 라이브러리 파일

- media : usb 드라이브나 cd/dvd 등 이동식 미디어 장치가 마운트 되는 곳

- opt : 추가적인 소프트웨어 패키지들이 설치되는 디렉터리

- root : 시스템의 루트 사용자 홈 디렉토리

- sbin : 시스템 관리자용 명령어들이 위치하는 경로

- sys : 시스템 관련 정보를 제공하는 가상 파일 시스템

- usr : 사용자 프로그램과 관련된 파일들이 위치로 프로그램, 라이브러리, 문서 등이 포함

 

Apache 웹 서버의 경우 보통 /var/www/html/ 경로에서 파일을 처리한다고 하는데 먼저 이 경로에서 파일을 만들고 테스트했을 파일을 못 찾는 문제가 있었다.

 

 

어떤 문제인지 찾아보면서 Apache 설치와 실행 상태, 찾으려는 파일의 디렉터리 권한도 변경해보고 했지만 해결이 안 되었다.

 

그리고 Apache 로그를 조회해 보았는데 경로에 문제가 있었다는 걸 알게 되었다.

 

$sudo tail -f /var/log/httpd/error_log

 

/var/www/html/ 가 아닌 /home/bakcoding/html/ 에서 test.php 파일을 찾고 있어서 Not Found 에러가 뜬 것

 

서버 환경이나 세팅에 따라서 달라지는 부분인가 보다.

 

처음부터 에러 로그를 찾았다면 더 빨리 해결됐을 문제였다.

 

이제 정확한 경로를 알게 됐으니 다시 파일 생성으로 돌아간다.

 

vim을 사용해서 파일을 생성해 보기로 한다.

 

$sudo vim /home/username/html/index.php

 

sudo는 Super Do로 이걸 붙이면 관리자 권한으로 실행과 마찬가지로 볼 수 있다.

 

권한에 따라 sudo 없이 vim만 실행하면 파일을 열어볼 수 만 있으므로 sudo를 붙여서 명령어를 실행해 준다.

 

위 명령어를 실행하면 파일이 있는 경우 해당 파일이 열리고 없으면 새로 생성되면서 콘솔창이 vim 창으로 바뀐다.

 

 

이 상태에서는 특정 키워드를 입력하면 동작으로 이어지게 되는데 먼저 파일을 작성할 때는 명령어 입력 상태에서 i를 입력하면 된다.

 

그리고 php 내용을 채워주는데 간단하게 db에 연결하고 성공과 실패 시 리턴 그리고 테이블에 값도 넣어보도록 한다.

 

<?php
// MySQL Connection
$servername = "localhost";
$username = "userid";
$password = "password";
$dbname = "testdb";

//conn
$conn = new mysqli($servername, $username, $password, $dbname);

//conn check
if ($conn->connect_error){
        die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// data insert test
$sql = "INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com')";
if ($conn->query($sql) === TRUE){
        echo "New record created successfully";
} else{
        echo "Error: " . $sql . "<br>" . $conn->error;      
}
$conn->close();
?>

 

이렇게만 해놓고 

 

이제 http://내 서버 주소/test.php를 주소창에 입력했을 때 아무 문제가 없다면 성공했다는 텍스트가 뜨고 db에 값이 제대로 들어가 있는지 보면 된다.

 

 

 

php 테스트 일단은 문제가 없는 것으로 보인다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01
[NHN Cloud Hosting - Linux] SSH로 서버 접속  (0) 2025.03.01
SSH와 RDP  (0) 2025.03.01

 

이번에는 mysql에 로그인하고 테스트해본다.

제품 설명

 

내가 결제한 서버의 설명을 보면 DB는 MySQL 8.0이라고 표기되어있다.

 

먼저 mysql이 잘 설치되어 있는지와 버전도 일치하는지 확인해 본다.

 

$mysql --version

 

 

문제가 없어 보이니 이제 서버 신청 시 입력했던 DB 계정으로 로그인해본다.

 

$mysql -u 'userid' -p

 

userid에 db 계정을 입력하고 엔터를 치면 패스워드를 입력하는 단계로 넘어가고 패스워드까지 문제없이 입력하고 나면 명령어 창이 mysql>로 바뀌고 mysql 명령어를 입력할 수 있는 상태로 된다.

 

테스트 용으로 데이터베이스를 하나 만들어 본다.

 

CREATE DATABASE testdb;

 

명령어를 입력하니 권한이 없다는 에러가 발생한다.

 

일단 mysql 콘솔창을 나간다. 이때 명령어 창에 quit 또는 exit을 입력하면 나올 수 있다.

 

이번엔 root 계정으로 로그인한 다음 내 계정에 권한을 주기로 한다.

GRANT ALL PRIVILEGES ON *.* TO 'userid'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

 

권한을 준 다음 즉시 변경 사항이 반영되도록 한다.

 

그리고 다시 내 계정으로 로그인 후 testdb를 생성하고 잘 생성됐는지 목록도 뽑아 본다.

 

SHOW DATABASES;

 

이번엔 해당 데이터베이스에 테이블도 만들어 본다.

 

USE testdb;
CREATE TABLE users (
	id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

 

 

 

생성된 테이블을 목록에 뽑아 본다.

 

SHOW TABLES;

 

생성한 users 테이블이 잘 보이는 게 확인된다.

 

테이블의 자세한 정보도 확인한다.

 

DESCRIBE users;

 

 

입력한 대로 잘 만들어졌다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] SSH로 서버 접속  (0) 2025.03.01
SSH와 RDP  (0) 2025.03.01
NHN 리눅스 서버 개설  (0) 2025.03.01

리눅스에서도 Xrdp를 사용하면 GUI가 있는 RDP를 사용할 수 있다고 한다.

 

그럼에도 SSH를 사용하기로 한 이유는 서버 사양을 고려한 부분이 크고 다른 이유는 다양한 명령어들을 이번 기회에 공부할 수 있을 것 같아서이다.

 

PuTTY

SSH 클라이언트로 사용할 프로그램은 대표적인 PuTTY로 정했다.

 

PuTTY

 

Download PuTTY: release 0.83

0.83, released on 2025-02-08, is the latest release. You can also find it at the Latest Release page, which will update when new releases are made (and so is a better page to bookmark or link to). Release versions of PuTTY are versions we think are reasona

www.chiark.greenend.org.uk

 

PuTTY 최신 버전을 다운로드하여 설치하고 puttygen.exe 도 다운로드해 놓는다.

 

SSH로 접속할 때 서버 접속 인증키가 필요한데 NHN에서 서버를 생성할 때 만든 키 파일은. pem 확장자로 PuTTY에서는 이 파일을 그대로 사용할 수 없기 때문에. ppk로 변환하는 과정이 필요하다.

 

먼저 서버를 신청할 때 생성하고 다운해 놓은 서버 접속 인증키를 준비해 놓고 puttygen.exe를 실행시킨다.

 

puttygen.exe

 

Load 버튼을 클릭하면 탐색기가 열리는데 여기서 All Files 설정으로 모든 파일이 보이게 한 다음 내 서버 접속 인증키. pem 파일을 불러온다. 

 

불러온 후에 알림 창이 뜨는데 성공적으로 불러오게 되면 Successfully imported ~ 내용을 확인할 수 있다.

 

이제 활성화된 버튼 Save private key를 클릭하고 알아볼 수 있는 이름으로 저장한다.

 

이제 putty를 실행한 다음 서버와 연결에 필요한 정보들을 채워 넣는다.

 

Session 항목

Host Name (or IP address) : 서버 이름이나 주소

Port : 기본 22

Connection type : SSH

 

PuTTY - configration

 

 

Connection > SSH > Auth > Credential 항목에서 Private key file for authentication에 생성해 놓은. ppk 파일을 선택한다.

PuTTY - configration

 

이렇게 세팅해 놓고 다시 Session 항목으로 이동해서 현재 설정해 놓은 session 정보를 저장해 두면 나중에 다시 접속할 때 편하다.

 

PuTTY - session save

 

Saved Sessions 아래에 세션이름을 입력하고 Save 클릭하면 해당 이름으로 세션이 저장된다.

 

이제 내 서버에 SSH 연결할 준비가 끝났다.

 

Open을 눌러주면 터미널 창이 뜬다.

 

PuTTY - login as :

 

창에는 login as :라는 문구만 보이고 무언가 입력을 기다리고 있다.

 

이는 어떤 사용자 계정으로 로그인할지에 대한 입력을 기다리는 것으로 이 계정은 서버에 따라 다르기 때문에 확인을 해서 입력한다.

 

내가 사용 중인 서버는 CentOS이며 사용자 계정이름은 centos이다.

 

centos를 입력하고 엔터를 치면

 

PuTTY

 

성공적으로 서버에 접속했다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01
SSH와 RDP  (0) 2025.03.01
NHN 리눅스 서버 개설  (0) 2025.03.01

항상 무료 플랜만 찾아다니며 사용했는데 그러다 보니 제약도 많고 내가 원하는 것들을 써보지도 못하고 끝나는 경우가 많았다.

 

그래서 테스트나 간단하게 사용하기 위한 용도로 저렴한 서버를 찾다가 NHN에 적당한 가격을 찾게 되어 사용해 보기로 한다.

 

 

서버의 사양은 가격만큼 낮지만 간단하게 개발용으로 쓰면서 공부하기에는 부족하지 않을 것이라고 생각된다.

 

일단 큰 금액이 아니기 때문에 즉시 결제하고 바로 활용해 보기로 한다.

 

 

웹 환경은 php가 필요하기 때문에 선택한다. 그에 필요한 Apache도 함께 설치된다.

 

 

접근 포트를 미리 선택해 놓으면 기본 보안 그룹 설정이 반영된다고 하는데 리눅스 터미널은 무조건 필요하지 않을까 싶어서 선택해 주었고 FTP 포트는 쓰긴 할 것 같아서 선택했다.

 

이 부분은 나중에 보안그룹에서 변경이나 추가해서 설정이 가능하다고 하니 일단 이렇게 진행하기로 한다.

 

이후로 FTP 정보, DB 정보를 입력하고 혹시 모르니 따로 메모해 둔다.

 

 

마지막으로 키페어(서버 접속 인증 키)에 대한 안내가 나오는데 이게 있어야 서버에 SSH 연결을 할  수 있고 보안을 위해서 신청 시 잘 보관하지 않았다가 이걸 잃어버리면 서버에 연결할 수 없기 때문에 주의해야 한다.

 

기존 키페어가 없으니 적당한 이름을 넣어주고 새로 만들어 생성된 키를 다운로드하여서 잘 보관하도록 한다.

 

 

 

신청하고 나면 5분 이내로 서버가 생성되고 클라우드 호스팅 콘솔 페이지에서 서버의 ip나 사용량 등 세부적인 사항들을 확인할 수 있다.

 

윈도우 서버를 사용해 본 경험이 있긴 하지만 그건 이미 세팅이 완료된 상태에서 원격으로 접속한 것뿐이었다.

이렇게 서버를 열어본 게 처음이고 거기다 리눅스를 사용해 본 적도 없기 때문에 앞으로 서버를 사용하면서 다양하고 새로운 정보와 문제들과 마주할 것으로 생각되는데 나중에 이 정보들이 다시 필요한 상황이 왔을 때 참고가 되도록 자세하게 잘 정리해 보도록 해야겠다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01
[NHN Cloud Hosting - Linux] SSH로 서버 접속  (0) 2025.03.01
SSH와 RDP  (0) 2025.03.01

+ Recent posts