Ubuntu 24.04 GNOME 46 Orchis 테마 적용하기
내용을 보시려면 비밀번호를 입력하세요.
프린터 설정에서 프린터를 추가할때 Samsung SL-J3560FW 모델과 동일한 드라이버가 출력되지 않고, 삼성 홈페이지에서 조차 리눅스용 드라이버를 제공하지 않습니다.
이러한 환경에서 아래 드라이버를 선택하여 설치하였더니 잘 되는 것으로 확인 했습니다.
- 설정 > 프린터 > [프린터 추가] > 하단 검색창에 프린터 IP 입력
조금 기다리면 아래 세가지 항목이 선택항목으로 출력됩니다.
- JetDirect
- LPD
- SL-J3560FW
여기에서 올바른 모델명을 선택하여 진행하면 인쇄시 글씨가 깨져 출력되므로,
JetDirect 를 선택, [추가] 하고 아래 모델명을 찾아 설치합니다.
- 제조사 : Hewlett-Packard
- 드라이버 : HP Business Inkjet 110, hpcups 3.23.12
Ubuntu 24.04 GNOME 46 Orchis 테마 적용하기 (0) | 2024.09.26 |
---|---|
간단한 리눅스 백업 스크립트 적용하기 (0) | 2024.09.19 |
Ubuntu 24.04 에 Prometheus + Grafana 설치하기 (GPU 포함) (0) | 2024.09.05 |
RockyLinux 9 에 Prometheus + Grafana 설치하기 (GPU 포함) (0) | 2024.09.03 |
Proxmox VM 에서 NVIDIA GPU 장치 사용하기 (CUDA, cuDNN, TensorFlow 설치 포함) (0) | 2024.07.16 |
백업본을 저장할 디렉토리를 생성합니다.
# mkdir /backup
백업 스크립트를 생성합니다.
필요에 따라 아래 내용을 수정하여 사용하면 됩니다.
# vi /root/backup.sh
#!/bin/bash # 오래된 파일 및 디렉토리 삭제 find "/backup/" -type f -mtime +5 -exec rm -f {} \; find "/backup/" -type d -mtime +5 -exec rm -rf {} \; # 오늘자 백업 디렉토리 생성 today=$(date +%Y%m%d) mkdir -p /backup/${today} # 홈페이지 소스 및 DB 백업 cd /home/sysdocu/ tar cvzf /backup/${today}/public_html.tar.gz public_html mysqldump -uroot -p12345678 --all-databases > /backup/${today}/all.sql # 시스템 기본 설정 파일 백업 cd /backup/${today} cp -arp /etc/iptables/rules.v4 . cp -arp /etc/crontab . cp -arp /root/backup.sh . |
# chmod 700 /root/backup.sh
백업 스크립트를 매일 04시에 실행되도록 스케쥴러에 등록합니다.
# echo "0 4 * * * root sh /root/backup.sh" >> /etc/crontab
Ubuntu 24.04 GNOME 46 Orchis 테마 적용하기 (0) | 2024.09.26 |
---|---|
Ubuntu 24.04 Desktop 에서 Samsung SL-J3560FW 프린터 잡기 (0) | 2024.09.25 |
Ubuntu 24.04 에 Prometheus + Grafana 설치하기 (GPU 포함) (0) | 2024.09.05 |
RockyLinux 9 에 Prometheus + Grafana 설치하기 (GPU 포함) (0) | 2024.09.03 |
Proxmox VM 에서 NVIDIA GPU 장치 사용하기 (CUDA, cuDNN, TensorFlow 설치 포함) (0) | 2024.07.16 |
설치는 아래와 같습니다.
# apt -y install vsftpd
시스템 계정으로 로그인하여 파일 업로드를 사용하기 위해서는 아래 옵션으로 바꿔주어야 합니다.
# vi /etc/vsftpd.conf
# 익명 접근 차단 anonymous_enable=NO # 로컬 사용자 계정에 대한 FTP 접속 및 쓰기 허용 local_enable=YES write_enable=YES # 사용자 홈 디렉토리 상위 디렉토리 이동 차단 chroot_local_user=YES allow_writeable_chroot=YES # 패시브 모드 설정 : 지정한 포트 범위로 데이터 전송 (방화벽에 포트 추가 필요) pasv_enable=YES pasv_min_port=50001 pasv_max_port=50005 |
수정 내용은 데몬을 재시작하여 적용합니다.
# systemctl restart vsftpd
vsftpd 계정별로 접근 IP 설정 (0) | 2019.08.09 |
---|---|
vsftpd 접속시 ls: 로그인 실패: 530 Login incorrect. (0) | 2018.11.15 |
lftp를 활용한 미러링 (0) | 2015.01.27 |
Ajaxplorer 5.0.4 설치 (NAS open source) (0) | 2015.01.16 |
vsftp error - 530 This FTP server is anonymous only. (0) | 2015.01.16 |
가장 기본적인 APT 패키지 관리툴로 설치를 진행합니다.
1. APM 설치
# apt-get -y update
# apt-get -y upgrade
# apt-get -y install apache2
# apt-get -y install php8.3 php8.3-mysql
# apt-get -y install mysql-server
# vi /etc/apache2/mods-available/mime.conf
# 아래 내용 추가 AddType application/x-httpd-php .php .htm .html AddType application/x-httpd-php-source .phps |
# vi /etc/php/8.3/apache2/php.ini
; 수정 및 추가 short_open_tag = On extension=mysqli extension=pdo_mysql |
# systemctl restart apache2
2. Virtualhost 설정
# cd /etc/apache2/sites-enabled
# vi default-ssl.conf
# 추가 ServerName sysdocu.kr ServerAlias www.sysdocu.kr |
# vi /etc/apache2/apache2.conf
# /var/www 디렉토리 설정을 찾아서 아래와 같이 수정, 디렉토리가 다를때는 추가 <Directory "/var/www/*"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> # 404 에러 출력시 웹서버 버전 정보 숨기기 ServerSignature Off ServerTokens Prod |
# systemctl restart apache2
3. Let's Encrypt SSL 설정
# apt -y install letsencrypt
# letsencrypt certonly -a webroot --agree-tos -m admin@sysdocu.kr -w /var/www/html -d www.sysdocu.kr --rsa-key-size 4096
자동 갱신 설정을 합니다.
# vi /root/ssl-renew.sh
#!/bin/bash /usr/bin/letsencrypt certonly -a webroot --agree-tos --renew-by-default -w /var/www/html -d www.daonbakery.com --rsh-key-size 4096 systemctl restart apache2 |
# chmod 700 /root/ssl-renew.sh
# echo "0 0 1,16 */2 * root sh /root/ssl-renew.sh" >> /etc/crontab
4. SSL 설정
# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/default-ssl.conf .
# vi 000-default.conf
# 추가 ServerName sysdocu.kr ServerAlias www.sysdocu.kr # 수정 SSLCertificateFile /etc/letsencrypt/live/www.sysdocu.kr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.sysdocu.kr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.sysdocu.kr/fullchain.pem |
# a2enmod ssl
# systemctl restart apache2
5. SSL Redirect 설정
# a2enmod rewrite
# systemctl restart apache2
# cd /var/www/html
# vi .htaccess
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.sysdocu.kr/$1 [R,L] |
6. MySQL 설정
MySQL root 패스워드 설정 및 사용자 추가 방법입니다.
# mysql -p
(처음에는 패스워드가 없습니다. 그냥 엔터)
mysql> use mysql;
mysql> alter user root@localhost identified by '12345678';
mysql> flush privileges;
새 데이터베이스와 계정 생성 후 권한을 부여 합니다.
mysql> create database sysdb;
mysql> create user 'sysuser'@'localhost' identified by '12345678';
mysql> grant all privileges on sysdb.* to 'sysuser'@'localhost';
mysql> flush privileges;
테스트를 위해 웹소스 루트 디렉토리 (/var/www/html) 에서 MySQL 계정을 이용한 접속 테스트 PHP 소스 코드를 작성합니다.
# vi test.php
<? define("DB_HOST", "localhost"); define("DB_USER", "sysuser"); define("DB_PASSWORD", "12345678"); define("DB_NAME", "sysdb"); $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $query = "SELECT VERSION()"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_array($result); echo "version: " . $row[0]; mysqli_close($conn); ?> |
웹브라우저를 통해 작성한 PHP 파일에 접근하면 MySQL 과 잘 연동되고 계정이 올바를 경우 아래와 같은 메세지가 출력됩니다.
여기에서는 간단히 curl 을 이용해 테스트 해보겠습니다.
# curl https://www.sysdocu.kr/test.php
version: 8.0.39-0ubuntu0.24.04.2
Ubuntu 22.04 에서 Tomcat 9 설치 및 SSL 설정 (0) | 2024.06.18 |
---|---|
Ubuntu 22.04 에서 Apache2 와 Tomcat9 연동하기 (0) | 2024.03.29 |
ab 명령을 이용한 웹서버 로딩 속도 테스트 (0) | 2024.01.09 |
httpd 2.4 동시접속자 수 제한 상향 조정 (0) | 2023.04.05 |
httpd 에서 Redirect 또는 ErrorDocument 설정이 동작하지 않을때 (0) | 2022.10.06 |
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
int is_another_instance_running(const char *process_name, pid_t current_pid) {
DIR *dir;
struct dirent *entry;
FILE *fp;
char path[256], cmdline[256];
dir = opendir("/proc");
if (dir == NULL) {
perror("opendir");
return 0;
}
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR && atoi(entry->d_name) > 0) {
snprintf(path, sizeof(path), "/proc/%s/cmdline", entry->d_name);
fp = fopen(path, "r");
if (fp != NULL) {
if (fgets(cmdline, sizeof(cmdline), fp) != NULL) {
// 프로세스 이름이 같고 현재 프로세스가 아닌 경우
if (strstr(cmdline, process_name) != NULL && atoi(entry->d_name) != current_pid) {
fclose(fp);
closedir(dir);
return 1; // 다른 인스턴스가 실행 중임
}
}
fclose(fp);
}
}
}
closedir(dir);
return 0; // 다른 인스턴스가 실행 중이지 않음
}
int main(int argc, char *argv[]) {
pid_t current_pid = getpid(); // 현재 프로세스의 PID 가져오기
const char *process_name = argv[0]; // 자신의 실행 파일 이름
// 실행 파일 이름에서 경로 제거 (예: ./myprogram -> myprogram)
const char *base_name = strrchr(process_name, '/');
if (base_name) {
base_name++; // '/' 이후의 문자열을 사용
} else {
base_name = process_name; // 경로가 없는 경우 원래 이름 사용
}
if (is_another_instance_running(base_name, current_pid)) {
printf("이미 가동 중입니다. 프로그램을 종료합니다.\n");
} else {
printf("미가동 상태입니다. 프로그램을 시작합니다.\n");
// 여기에 프로그램의 메인 코드를 작성
while (1) {
sleep(10); // 예시로 무한 대기
}
}
return 0;
}
[C++] 파일쓰기 예제 (0) | 2023.12.11 |
---|---|
C/C++ 프로그레스바 (ProgressBar) (0) | 2023.06.16 |
[C/C++] int 를 char 또는 const char* 로 변환하기 (0) | 2022.06.30 |
C++ 프로그램 중복 실행 방지 (윈도우 기반) (0) | 2021.05.18 |
C++ 에서 구동 파일의 절대 경로 확인하기 (windows) (0) | 2021.05.17 |
부팅시 Proxmox 로고에서 ESC 키를 누르면 아래와 같은 창이 출력됩니다.
Select boot device:
1. virtio disk
2. ipxe
3. legacy option rom
여기에서 1번을 선택한 후, 바로 ESC 키를 눌러야 OS부팅 선택 창이 출력되지만,
그냥 막 1, ESC 키를 연타로 번갈아 누르는게 편합니다.
1) 패스워드를 아는 상태에서 간단한 작업 필요시
Ubuntu 싱글모드 진입을 원할 경우 e 키 > 제일 긴 행의 맨 뒤 splash 글자 뒤에 한 칸 띄우고 single 입력 후 Ctrl+x 로 부팅합니다.
2) 패스워드 분실 또는 사용자 환경 로드하지 않음
Ubuntu 싱글모드 진입을 원할 경우 e 키 > 제일 긴 행의 맨 뒤 splash 글자 뒤에 한 칸 띄우고 rw init=/bin/bash 입력 후 Ctrl+x 로 부팅합니다.
필요에 따라 파일시스템 쓰기권한을 부여합니다.
# mount -o rw,remount /
Proxmox VM IP 설정 방법 (Private, NAT, VXLAN) (0) | 2024.08.06 |
---|---|
Incus (LXC 리눅스 컨테이너 관리자) 설치 및 설정 (0) | 2024.08.02 |
Proxmox 에서 SDN (영역 및 VNets) 설정하여 네트워크 분리하기 (0) | 2024.07.31 |
Kubernetes Namespace 또는 Pod 의 리소스 및 볼륨 백업하기 (Velero) (0) | 2024.07.22 |
Kubernetes 에서 네임스페이스 네트워크 격리 및 특정 포트 허용하기 (Calico) (0) | 2024.07.22 |