파이션으로 웹프로그램을 만들때 mysql 서버와 연결하는 방법

Python으로 웹 프로그램을 만들 때 MySQL 서버와 연결하는 일반적인 방법은 mysql-connector-python과 같은 MySQL 커넥터 라이브러리를 사용하는 것입니다. 여기서는 Python Flask 웹 프레임워크와 MySQL 데이터베이스를 연결하여 사용하는 방법을 안내드릴게요.

1. 라이브러리 설치

먼저, mysql-connector-python 패키지를 설치해야 합니다.

bash
pip install mysql-connector-python Flask

2. MySQL 데이터베이스 설정

MySQL에서 사용할 데이터베이스와 테이블을 설정합니다. 예를 들어, mydatabase라는 데이터베이스와 users라는 테이블을 만들고 싶다면 다음과 같이 설정합니다:

sql
CREATE DATABASE mydatabase;
USE mydatabase;

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);

3. Python에서 MySQL 연결 설정

Flask 애플리케이션 파일을 생성하고 MySQL 데이터베이스에 연결해보겠습니다.

python
from flask import Flask, request, jsonify
import mysql.connector

app = Flask(__name__)

# MySQL 연결 설정
db = mysql.connector.connect(
host=”localhost”, # MySQL 서버 호스트
user=”root”, # MySQL 사용자
password=”password”, # MySQL 비밀번호
database=”mydatabase” # 연결할 데이터베이스
)

# 데이터 추가 API 예제
@app.route(‘/add_user’, methods=[‘POST’])
def add_user():
data = request.json
name = data.get(‘name’)
email = data.get(’email’)

cursor = db.cursor()
query = “INSERT INTO users (name, email) VALUES (%s, %s)”
values = (name, email)
cursor.execute(query, values)
db.commit()

return jsonify({“message”: “User added successfully!”})

# 모든 데이터 조회 API 예제
@app.route(‘/users’, methods=[‘GET’])
def get_users():
cursor = db.cursor(dictionary=True)
cursor.execute(“SELECT * FROM users”)
users = cursor.fetchall()

return jsonify(users)

if __name__ == ‘__main__’:
app.run(debug=True)


4. 실행 및 테스트

이제 서버를 실행하고 테스트해보세요:

bash
python app.py

http://localhost:5000/add_user에 POST 요청을 보내서 사용자 정보를 추가하거나, http://localhost:5000/users로 GET 요청을 보내서 저장된 사용자 정보를 조회할 수 있습니다.

이 과정이 MySQL과 연결하여 데이터를 처리하는 기본적인 웹 프로그램 구축 과정입니다.

우분투 실행되는 프로세스 확인하기

우분투에서 실행 중인 프로세스를 확인하려면 여러 명령어를 사용할 수 있습니다. 대표적으로 다음과 같은 명령어를 이용할 수 있습니다.


1. ps 명령어

  • 현재 실행 중인 프로세스를 확인할 수 있습니다.
  • ps aux 명령을 사용하면 모든 사용자와 관련된 프로세스를 확인할 수 있습니다.
bash
ps aux
  • 특정 프로세스를 검색하려면 grep과 함께 사용합니다:
bash
ps aux | grep <프로세스_이름>

2. top 명령어

  • 실시간으로 프로세스 정보를 확인할 수 있습니다.
  • CPU 및 메모리 사용량을 기준으로 프로세스가 정렬됩니다.
bash
top

3. htop 명령어 (설치 필요)

  • top보다 더 직관적인 인터페이스를 제공합니다.
  • 설치 후 실행:
bash
sudo apt install htop
htop

4. pgrep 명령어

  • 특정 이름의 프로세스 ID만 확인하려면 pgrep을 사용합니다.
bash
pgrep <프로세스_이름>

5. systemctl 명령어

  • 서비스로 관리되는 프로세스 확인:
bash
systemctl status <서비스_이름>

6. netstat 또는 ss 명령어

  • 네트워크 연결 관련 프로세스 확인:
bash
sudo netstat -tulnp
# 또는
sudo ss -tulnp

우분투 텍스트 브라우저 설치

우분투에서 텍스트 기반 브라우저를 설치하려면, 아래의 명령을 사용하여 lynx, links, 또는 w3m과 같은 텍스트 브라우저를 설치할 수 있습니다.

1. Lynx 설치

Lynx는 매우 인기 있는 텍스트 기반 웹 브라우저입니다.

bash
sudo apt update
sudo apt install lynx

설치 후, 다음 명령으로 실행할 수 있습니다:

bash
lynx [URL]

2. Links 설치

Links는 그래픽 기반의 기능도 지원하는 텍스트 브라우저입니다.

bash
sudo apt update
sudo apt install links

설치 후, 다음 명령으로 실행합니다:

bash
links [URL]

3. w3m 설치

w3m은 HTML 페이지를 텍스트로 표시하고 이미지를 포함하여 지원할 수도 있는 텍스트 브라우저입니다.

bash
sudo apt update
sudo apt install w3m

설치 후, 다음 명령으로 실행합니다:

bash
w3m [URL]

확인 방법

설치된 브라우저가 제대로 작동하는지 확인하려면, 예를 들어 google.com에 접속하여 페이지가 출력되는지 확인하면 됩니다:

bash
lynx google.com

우분투 나의 시스템 스팩 보기

우분투에서 시스템 사양을 확인하려면 다음 명령어들을 사용할 수 있습니다. 각 명령어는 다양한 정보를 제공합니다.


1. CPU 정보 확인

bash
lscpu
  • CPU 모델, 코어 수, 스레드 수, 아키텍처 등 CPU 관련 정보를 출력합니다.

2. 메모리 (RAM) 정보 확인

bash
free -h
  • 현재 사용 중인 메모리와 남은 메모리를 사람이 읽기 쉬운 형식으로 표시합니다.

3. 디스크 용량 확인

bash
df -h
  • 마운트된 디스크와 각 디스크의 전체 용량, 사용된 용량, 남은 용량을 확인할 수 있습니다.

4. 전체 시스템 요약 확인

bash
neofetch
  • 우분투 버전, CPU, 메모리, 그래픽 등 시스템 정보를 한눈에 확인할 수 있습니다.
    • 설치되지 않았다면 다음 명령어로 설치할 수 있습니다:
      bash
      sudo apt install neofetch

5. 그래픽 카드 정보 확인

bash
lspci | grep -i vga
  • 설치된 GPU 정보가 출력됩니다.

6. 운영 체제 및 커널 버전 확인

bash
uname -a
  • 운영 체제, 커널 버전, 하드웨어 플랫폼 등 기본 시스템 정보를 보여줍니다.

7. 네트워크 정보 확인

bash
ip addr
  • 네트워크 인터페이스와 IP 주소를 확인할 수 있습니다.

주기적으로 현재 IP 주소를 확인하고 이전 IP와 비교하여 변경이 감지….

Bash 스크립트를 작성한 예제입니다. 이 스크립트는 주기적으로 현재 IP 주소를 확인하고 이전 IP와 비교하여 변경이 감지되면 이메일로 알림을 보냅니다.

1. 스크립트 내용 (notify_ip_change.sh)

bash
#!/bin/bash

# 설정
LOG_FILE=”/var/log/ip_change.log”
IP_FILE=”/tmp/current_ip.txt”
CHECK_INTERVAL=300 # 체크 간격 (초 단위)
SMTP_SERVER=”smtp.example.com” # SMTP 서버 주소
SMTP_PORT=587 # SMTP 포트
EMAIL_FROM=”your_email@example.com” # 발신 이메일
EMAIL_TO=”target_email@example.com” # 수신 이메일
EMAIL_USER=”your_email@example.com” # 이메일 사용자명
EMAIL_PASS=”your_email_password” # 이메일 비밀번호

# IP 변경 시 이메일 보내기 함수
send_email() {
local new_ip=”$1″
echo -e “Subject: IP 변경 알림\n\n새로운 IP 주소: $new_ip” | \
curl –url “smtp://${SMTP_SERVER}:${SMTP_PORT}” \
–ssl \
–mail-from “$EMAIL_FROM” \
–mail-rcpt “$EMAIL_TO” \
–upload-file – \
–user “$EMAIL_USER:$EMAIL_PASS”
}

# 초기 IP 설정
if [[ ! -f “$IP_FILE” ]]; then
current_ip=$(curl -s ifconfig.me)
echo “$current_ip” > “$IP_FILE”
echo “$(date): 초기 IP 주소 설정 – $current_ip” >> “$LOG_FILE”
fi

# 백그라운드 실행 루프
while true; do
new_ip=$(curl -s ifconfig.me)
saved_ip=$(cat “$IP_FILE”)

if [[ “$new_ip” != “$saved_ip” ]]; then
echo “$new_ip” > “$IP_FILE”
echo “$(date): IP 주소 변경 감지 – $new_ip” >> “$LOG_FILE”
send_email “$new_ip”
fi

sleep “$CHECK_INTERVAL”
done



2. 사용 방법

  1. 스크립트 생성 및 권한 부여
    bash
    nano notify_ip_change.sh

    위 코드를 붙여넣고 저장합니다.

    bash
    chmod +x notify_ip_change.sh
  2. 필수 패키지 설치
    bash
    sudo apt update
    sudo apt install curl
  3. 백그라운드 실행
    bash
    nohup ./notify_ip_change.sh &
  4. 로그 확인
    bash
    tail -f /var/log/ip_change.log
  5. 스크립트 종료 프로세스를 종료하려면 다음을 실행합니다.
    bash
    pkill -f notify_ip_change.sh

3. 추가 참고

  • curl을 사용하여 SMTP 서버를 통해 이메일을 보냅니다. 외부 POP3/SMTP 정보를 올바르게 설정하세요.
  • 이메일 비밀번호는 보안 문제로 인해 암호화된 파일이나 환경 변수로 관리하는 것이 좋습니다. 필요 시 알려주세요.
  • IP 확인 API (ifconfig.me)를 변경할 수도 있습니다. 예: ipinfo.io/ip 또는 api64.ipify.org.

Ubuntu에서 IP 주소가 DHCP로 변경될 때 변경된 IP를 감지하고 이메일로 알림

Ubuntu에서 IP 주소가 DHCP로 변경될 때 변경된 IP를 감지하고 이메일로 알림을 보내는 Bash 스크립트를 만들기 위해 다음을 수행할 수 있습니다. 다음은 필요한 스크립트와 설정 단계입니다.

스크립트 작성

다음은 백그라운드에서 실행되며, IP가 변경될 때 알림을 보내는 Bash 스크립트입니다.

bash

#!/bin/bash

# 이전 IP를 저장할 파일 경로
PREVIOUS_IP_FILE=”/tmp/previous_ip.txt”
# 메일 설정
TO_EMAIL=”your_email@example.com”
SMTP_SERVER=”smtp.example.com”
SMTP_PORT=587
SMTP_USER=”your_email@example.com”
SMTP_PASS=”your_password”

# IP를 확인하는 함수
get_current_ip() {
hostname -I | awk ‘{print $1}’
}

# 이메일 보내기
send_email() {
local new_ip=$1
echo -e “Subject: IP Address Changed\n\nYour new IP address is: $new_ip” | \
curl –url “smtp://${SMTP_SERVER}:${SMTP_PORT}” \
–ssl \
–mail-from “$SMTP_USER” \
–mail-rcpt “$TO_EMAIL” \
–user “$SMTP_USER:$SMTP_PASS”
}

# 초기화: 이전 IP 불러오기
if [[ -f “$PREVIOUS_IP_FILE” ]]; then
previous_ip=$(cat “$PREVIOUS_IP_FILE”)
else
previous_ip=””
fi

# 무한 루프
while true; do
# 현재 IP 확인
current_ip=$(get_current_ip)

# IP 변경 여부 확인
if [[ “$current_ip” != “$previous_ip” ]]; then
echo “IP 변경됨: $current_ip”
echo “$current_ip” > “$PREVIOUS_IP_FILE”
send_email “$current_ip”
previous_ip=”$current_ip”
fi

# 5분 대기
sleep 300
done



스크립트 실행 설정

  1. 스크립트 저장 및 실행 권한 부여
    위 스크립트를 예를 들어 /home/youruser/ip_monitor.sh로 저장합니다.

    bash
    chmod +x /home/youruser/ip_monitor.sh
  2. 스크립트를 백그라운드에서 실행
    nohup 명령어를 사용하여 스크립트를 백그라운드에서 실행합니다.

    bash
    nohup /home/youruser/ip_monitor.sh &
  3. 시스템 재부팅 시 자동 실행 설정
    crontab에 추가합니다:

    bash
    crontab -e

    아래 줄 추가:

    bash
    @reboot /home/youruser/ip_monitor.sh &

필요한 패키지 설치

이메일을 보내기 위해 curl 명령어를 사용하므로 해당 패키지가 설치되어 있는지 확인하세요:

bash
sudo apt update
sudo apt install curl

SMTP 정보는 외부 POP3 메일 서버 (예: Gmail, Naver 등)에 맞게 설정해야 합니다. 예를 들어 Gmail을 사용하는 경우 SMTP 서버를 smtp.gmail.com으로 설정하세요. (추가 설정이 필요할 수 있습니다: 구글 앱 비밀번호)

이 스크립트는 네트워크 상태를 주기적으로 확인하며, 변경 사항이 발생할 경우 즉시 알림을 보냅니다.

우분투 워드프레스 서버 아이피가 변경되었을때 ip 설정하는 방법

우분투 워드프레스 서버 아이피가 변경되었을때 ip 설정하는 방법 => 이거 따라 하다가 ㅠㅠ 새로 설치 했음 ㅎㅎ

우분투에서 워드프레스 서버의 IP 주소가 변경되었을 때, 새로운 IP 주소를 설정하고 워드프레스와 관련된 설정을 업데이트하려면 다음 단계를 따라야 합니다:


1. 새로운 IP 확인

먼저 새로 할당된 IP 주소를 확인하세요:

bash
ip addr

또는

bash
ifconfig

2. 고정 IP 설정 (선택 사항)

IP 주소가 동적으로 변경되지 않도록 고정 IP를 설정하려면 다음 단계를 수행하세요:

  1. 네트워크 설정 파일 열기
    bash
    sudo nano /etc/netplan/01-netcfg.yaml

    또는 /etc/netplan/ 폴더 내의 YAML 파일을 확인하세요.

  2. 설정 파일 수정 예를 들어, 다음과 같이 고정 IP를 설정합니다:
    yaml
    network:
    version: 2
    renderer: networkd
    ethernets:
    eth0:
    dhcp4: no
    addresses:
    - 192.168.1.100/24
    gateway4: 192.168.1.1
    nameservers:
    addresses:
    - 8.8.8.8
    - 8.8.4.4
  3. 설정 적용
    bash
    sudo netplan apply

3. DNS 서버에서 A 레코드 업데이트

  • 사용 중인 DNS 관리 콘솔(예: ‘soon7shop.kr’의 DNS 관리자)에서 새 IP 주소로 A 레코드를 업데이트하세요.
  • 예:
    css
    www A 203.0.113.50

DNS 변경이 적용되기까지는 최대 24시간이 소요될 수 있습니다.


4. 워드프레스 설정 변경

  1. 워드프레스 주소(URL) 업데이트 새로운 IP 주소로 워드프레스 URL을 변경해야 합니다.
    • 방법 1: 워드프레스 관리자 페이지
      • 관리자 페이지에 접속: http://새로운IP/wp-admin
      • “설정 > 일반”에서 아래 두 항목 업데이트:
        • WordPress 주소 (URL): http://새로운IP
        • 사이트 주소 (URL): http://새로운IP
    • 방법 2: 데이터베이스에서 직접 변경 MySQL에 접속하여 URL을 업데이트합니다:
      bash
      sudo mysql -u root -p

      데이터베이스 선택:

      sql
      USE wordpress_db;

      URL 업데이트:

      sql
      UPDATE wp_options SET option_value = 'http://새로운IP' WHERE option_name IN ('siteurl', 'home');
  2. Apache 설정 파일 업데이트 Apache가 새 IP 주소를 사용하도록 VirtualHost 파일을 수정합니다:
    bash
    sudo nano /etc/apache2/sites-available/000-default.conf

    또는 워드프레스와 관련된 VirtualHost 파일을 열어 ServerNameServerAlias를 업데이트:

    apache
    <VirtualHost *:80>
    ServerName 새IP
    DocumentRoot /var/www/html
    </VirtualHost>

    변경 후 Apache 재시작:

    bash
    sudo systemctl restart apache2

5. 캐시 및 브라우저 확인

  • 브라우저 캐시를 지우고 새 IP로 접속을 확인합니다.
  • DNS 전파 완료 여부를 확인하려면 아래 명령을 사용:
    bash
    nslookup soon7shop.kr

sudo nano /var/www/html/wordpress/wp-config.php

/var/www/html/wordpress/wp-config.php 파일은 워드프레스의 핵심 설정 파일로, 데이터베이스 연결 정보와 기타 중요한 설정을 포함합니다. 파일을 열고 필요한 설정을 수정하려면 다음 단계를 따라 진행하세요.


1. 파일 열기

bash
sudo nano /var/www/html/wordpress/wp-config.php

2. 중요 설정 항목

(1) 데이터베이스 연결 정보

다음 항목을 확인하거나 수정합니다:

php
define(‘AUTH_KEY’, ‘your_generated_key’);
define(‘SECURE_AUTH_KEY’, ‘your_generated_key’);
define(‘LOGGED_IN_KEY’, ‘your_generated_key’);
define(‘NONCE_KEY’, ‘your_generated_key’);
define(‘AUTH_SALT’, ‘your_generated_key’);
define(‘SECURE_AUTH_SALT’, ‘your_generated_key’);
define(‘LOGGED_IN_SALT’, ‘your_generated_key’);
define(‘NONCE_SALT’, ‘your_generated_key’);
  • DB_NAME: 워드프레스가 사용할 데이터베이스 이름.
  • DB_USER: 데이터베이스 사용자 이름.
  • DB_PASSWORD: 해당 사용자의 비밀번호.
  • DB_HOST: 일반적으로 localhost. 외부 DB 서버를 사용한다면 서버 IP 또는 도메인.

(2) 보안 키(SALT 키)

워드프레스의 인증 키 및 보안 키는 사용자 세션 보안을 강화합니다. 아래 사이트에서 새 키를 생성하여 추가합니다:
WordPress Salt Keys Generator

예:

php
define('AUTH_KEY', 'your_generated_key');
define('SECURE_AUTH_KEY', 'your_generated_key');
define('LOGGED_IN_KEY', 'your_generated_key');
define('NONCE_KEY', 'your_generated_key');
define('AUTH_SALT', 'your_generated_key');
define('SECURE_AUTH_SALT', 'your_generated_key');
define('LOGGED_IN_SALT', 'your_generated_key');
define('NONCE_SALT', 'your_generated_key');

(3) 디버그 모드

개발 또는 문제 해결 시 디버그 모드를 활성화할 수 있습니다:

php
define('WP_DEBUG', true);

운영 환경에서는 반드시 false로 설정:

php
define('WP_DEBUG', false);

(4) 파일 권한 수정 문제 해결

서버에서 파일 및 디렉터리 권한 문제를 해결하려면 다음을 추가:

php
define('FS_METHOD', 'direct');

(5) 사이트 URL 설정

특정 상황에서 워드프레스 URL을 강제로 설정할 수 있습니다:

php
define(‘WP_HOME’, ‘http://yourdomain.com’);
define(‘WP_SITEURL’, ‘http://yourdomain.com’);


3. 파일 저장 및 종료

파일을 수정한 후 저장합니다:

  1. Ctrl + O: 저장.
  2. Enter: 파일 이름 확인.
  3. Ctrl + X: 종료.

4. 파일 권한 확인

워드프레스가 파일에 올바르게 접근할 수 있도록 권한을 확인합니다:

bash
sudo chown www-data:www-data /var/www/html/wordpress/wp-config.php
sudo chmod 640 /var/www/html/wordpress/wp-config.php

5. 웹 브라우저에서 확인

설정 완료 후 웹 브라우저에서 사이트를 열어 데이터베이스 연결 및 사이트 작동 여부를 확인합니다:

arduino
http://yourdomain.com

sudo nano /etc/apache2/sites-available/wordpress.conf

/etc/apache2/sites-available/wordpress.conf는 워드프레스용 Apache 가상 호스트 파일입니다. 이 파일은 워드프레스 사이트의 도메인, 루트 디렉토리, 로그 경로 등과 같은 설정을 정의합니다. 아래는 워드프레스를 위한 기본 구성 예제입니다.


1. 파일 열기

다음 명령어로 파일을 엽니다:

bash
sudo nano /etc/apache2/sites-available/wordpress.conf

2. 가상 호스트 구성 추가

아래 내용을 wordpress.conf에 추가합니다. 도메인 이름과 디렉토리를 환경에 맞게 수정하세요.

기본 설정 예제:

apache

<VirtualHost *:80>
ServerAdmin admin@yourdomain.com
ServerName yourdomain.com
ServerAlias www.yourdomain.com

DocumentRoot /var/www/html/wordpress

<Directory /var/www/html/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>


3. 설정 내용 설명

  • ServerAdmin: 관리자의 이메일 주소. (에러 메시지에서 표시됨)
  • ServerName: 사이트의 주 도메인 (예: yourdomain.com).
  • ServerAlias: 추가 도메인 또는 서브도메인 (예: www.yourdomain.com).
  • DocumentRoot: 워드프레스 파일이 위치한 경로.
  • <Directory>: 디렉토리 옵션.
    • AllowOverride All: .htaccess 파일에서 Apache 설정을 허용.
    • Require all granted: 디렉토리에 대한 접근 허용.
  • ErrorLog: 에러 로그 파일 경로.
  • CustomLog: 접근 로그 파일 경로.

4. HTTPS(SSL) 추가 설정 (선택)

HTTPS를 사용하려면 아래와 같은 추가 구성을 작성해야 합니다.

HTTPS 예제:

<VirtualHost *:443>
ServerAdmin admin@yourdomain.com
ServerName yourdomain.com
ServerAlias www.yourdomain.com

DocumentRoot /var/www/html/wordpress

<Directory /var/www/html/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.key

ErrorLog ${APACHE_LOG_DIR}/wordpress_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_ssl_access.log combined
</VirtualHost>



5. 가상 호스트 활성화

새로운 설정을 활성화합니다:

bash
sudo a2ensite wordpress.conf

6. Apache 모듈 활성화 및 재시작

아래 명령어로 Apache의 필요 모듈을 활성화하고 서버를 재시작합니다:

bash
sudo a2enmod rewrite
sudo systemctl reload apache2

7. 파일 테스트

구성이 올바른지 확인:

bash
sudo apache2ctl configtest

문제가 없다면 출력은 다음과 같습니다:

mathematica
Syntax OK

워드프레스를 위한 방화벽 설정

워드프레스 사이트를 안전하게 보호하려면 방화벽 설정이 매우 중요합니다. 방화벽을 설정하여 악의적인 트래픽을 차단하고, 허용된 트래픽만 통과시키도록 구성할 수 있습니다. 아래는 우분투 환경에서 워드프레스를 위한 방화벽 설정 가이드입니다.


1. UFW(Uncomplicated Firewall) 활성화 및 기본 설정

(1) UFW 활성화

UFW가 비활성화된 경우 활성화합니다.

bash
sudo ufw enable

(2) 기본 정책 설정

기본적으로 모든 트래픽을 차단하고 필요한 트래픽만 허용하도록 설정합니다.

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing

2. 필수 포트 허용

(1) HTTP 및 HTTPS 트래픽 허용

워드프레스가 웹사이트로 작동하려면 HTTP(80) 및 HTTPS(443) 트래픽을 허용해야 합니다.

bash
sudo ufw allow 80/tcp
sudo ufw allow 443