1. Java 설치 (Jenkins는 Java가 필요)

sudo apt update
sudo apt install openjdk-11-jdk

 

2. Jenkins 저장소 및 키 추가:

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

 

3. 패키지 목록 업데이트

sudo apt update

 

※ 여기서 에러가 뜨는데

GPG error: https://pkg.jenkins.io/debian-stable binary/ Release: The following signatures were invalid: EXPKEYSIG 0000000 Jenkins Project jenkinsci-board@googlegroups.com

이런식으로 뜬다

공식문서를 보니

2023년 3월 28일부터 Jenkins 주간 릴리스에 사용되는 리포지토리 서명 키가 변경되었습니다. Jenkins LTS 릴리스에서도 2023년 4월 5일부터 동일한 변경이 적용됩니다. 리눅스 시스템 관리자는 Jenkins 주간 2.397 또는 Jenkins LTS 2.387.2를 설치하기 전에 리눅스 서버에 새 서명 키를 설치해야 합니다.

Debian/Ubuntu와 같은 Debian 호환 운영 체제 (Debian, Ubuntu, Linux Mint Debian Edition 등)를 업데이트하려면 다음 명령을 사용하세요.

$ curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null

 

5. 젠킨스 설치 및 시작 활성화

sudo apt update
sudo apt install jenkins

sudo systemctl start jenkins
sudo systemctl enable jenkins

 

6. 이제 Jenkins가 설치되었고, 웹 브라우저를 통해 http://localhost:8080/에 접속하여 설정을 완료할 수 있습니다. Jenkins 초기 비밀번호를 확인하려면 다음 명령을 실행하세요.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

### 네트워크 인터페이스 설정
vi /etc/sysconfig/network-scripts/ifcfg-eth0

### 복사 붙여넣기 

#인터페이스 이름
DEVICE=eth0
#이더넷
TYPE=Ethernet
#dhcp, static, none 아이피 할당
BOOTPROTO=STATIC
#자동부팅
ONBOOT=yes
# BOOTPROTO 가 STATIC 인경우만 사용가능
IPADDR=192.168.1.XX
GATEWAY=192.168.1.1
# BOOTPROTO 가 STATIC 인경우만 사용가능
NETMASK=255.255.255.0
USERCTL=no
# IPV6 사용 여부
IPV6INIT=no
# DHCP를 사용하여 IP 주소를 할당받을 때, DHCP 서버에서 제공하는 DNS 서버 정보를 /etc/resolv.conf 파일에 자동으로 쓸 것인지를 지정
# yes: 자동으로 DNS 정보를 기록합니다.
# no: DNS 정보를 자동으로 기록하지 않습니다.
PEERDNS=yes


### 네트워크 재시작
sudo service network restart

### 제대로 되었나 확인
ping yahoo.co.kr
- 만약 안되면 cat /etc/resolv.conf 로 확인 후 nameserver 8.8.8.8 (google)

### yum upate 지원 종료로 인해 yum update 시 필요한 것

- getconf LONG_BIT  로 비트 확인

32Bit :
echo "https://vault.centos.org/6.10/os/i386/" > /var/cache/yum/i386/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/i386/" > /var/cache/yum/i386/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/i386/" > /var/cache/yum/i386/6/updates/mirrorlist.txt
64Bit :
echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt

- 만약 경로에 파일이 없다고 할 경우 에러메세지 확인 후 mkdir
- ex) mkdir -p /var/cache/yum/x86_64/6/updates/


### APM 설치
yum update
yum install httpd php php-mysql mysql-server

### APM 시작 및 자동시작
chkconfig httpd on
chkconfig mysqld on
service httpd start
service mysqld start

### mysql
vi /etc/my.cnf -> bind-address = 0.0.0.0 (외부 접속 허용)

### mysql version 에 따라 명령어가 안될수있음
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.xx' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

### locale 업데이트
vi /etc/sysconfig/i18n
기존 데이터 주석
LANG="ko_KR.eucKR"
reboot 


### ssh 외부접속
vi /etc/ssh/sshd_config
port 22 주석 해제

### root 외부에서 접속 허용 (권장 x )
PermitRootLogin yes
service sshd restart

### 방확벽
centos6 은 iptables 사용
iptables -L (리스트 확인)
service iptables status (상태 확인)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
service iptables restart

 

'Linux' 카테고리의 다른 글

ubuntu 22 timezone 우분투 22 타임존 맞추기  (0) 2024.09.27

1. .ttf 확장자를 가진 나눔고딕 등 다운로드

2. tcpdf_addfont.php 경로를 찾으면됨

-  application\vendor\tecnickcom\tcpdf\tools 경로에있어서 cd 로 이동하였음

3. 커맨드에 명령어 입력 : php .\tcpdf_addfont.php -i assets\font\Nanum\NanumBrushScript-Regular.ttf

>>> Converting fonts for TCPDF:
*** Output dir set to \application\vendor\tecnickcom\tcpdf/fonts/
+++ OK   : \assets\font\Nanum\NanumBrushScript-Regular.ttf added as nanumbrushscript
>>> Process successfully completed!

 

이러면 설치가 완료되었음을 알 수있다.

 

 $pdf->SetFont('dejavusans', '', 12);

이코드를 찾아서

 $pdf->SetFont('nanumbrushscript', '', 12);

이렇게 수정해주었다.

기존 INSERT: insert into table values(1,2,3);

  • 153초 ~ 161초

다중 INSERT: insert into table values(1,2,3),(3,4,5) ... ;

  • 약 11.5초 ~ 12초

auto commit = 0 일때 INSERT: start transaction; insert into table values(1,2,3);

  • 약 15.3초 ~ 16초

auto commit = 0 일때 다중 INSERT: start transaction; insert into table values(1,2,3),(3,4,5) ... ;

  • 약 3.3초~ 4초

 

PHP 는 $pdo->beginTransaction() 를 실행시키면 트랜잭션모드가 실행된다.

autocommit이 자동으로 false 로 변하면서 트랜잭션 내부에서 쿼리가 도는데

 

솔직히  사용했을경우 멀티플 insert를 하나 안 하나 큰 차이가 없을 줄 알았는데 차이가 심했다.

 

테이블 제약조건 이였나 유니크 키나 insert 하는 거에 있어서 if 문 쓰듯 체크하는 조건은 먼저 없애준 후에

INSERT 하고 그 후에 제약조건 다시 걸어주면 빠르다고 하던데 나중에 한번 테스트해봐야겠다. 

'MYSQL' 카테고리의 다른 글

트랜잭션할 때 적용이 안된다면 확인해야 할점  (0) 2023.04.11
mysql 스키마 조회 쿼리  (0) 2022.03.02
 
public function insertData_trans2(array $data, string $tablename): int
  {
    $cnt = 0;
    $this->beginTransaction();
    try {
      foreach ($data as $row) {
        $cnt += $this->insertData($row, $tablename);
      }
      $this->commit();
    } catch (Exception $e) {
      $this->rollback();
      throw $e;
    }
    return $cnt;
  }
public function insertData(array $data, string $tablename)
  {
    $columns = implode(", ", array_keys($data));
    $placeholders = implode(", ", array_fill(0, count($data), "?"));
    $values = array_values($data);
    $stmt = $this->conn->prepare("INSERT INTO $tablename ($columns) VALUES ($placeholders)");
    $stmt->execute($values);
    return $stmt->rowCount();
  }

아무리 에러를 일부러 터뜨리고 뭔짓을하더라도 데이터가 들어가길래 삽질하던 찰나

 

엔진이 문제인걸 알았다

 

MYISAM 으로 되어있었다.... Myisam 은 트랜잭션을 지원하지않는다.

InnoDB 로 변경하였더니 잘되었다.

'MYSQL' 카테고리의 다른 글

데이터 100,000 건 insert 테스트  (0) 2023.04.11
mysql 스키마 조회 쿼리  (0) 2022.03.02

윈도우에 WSL2 를 사용하여 Ubuntu PHP 7.4 CLI 를 설치하였다.

php 도 프론트마냥 cli 로 하는게 있었나 싶어서 설치했는데

명령어는 

php -S localhost:80 /var/www/html 이런식으로 가능했다

실행시키면 터미널 조작이 불가능하니깐

여러개를 실행시켜야할 경우 

 

- php -S localhost:81 /var/www/html/index.php > /dev/null 2>&1 & 이렇게 백으로 실행시켜도 되고

 

screen 명령 후에

- php -S localhost:81 /var/www/html 
 
컨트롤 + a 두번 클릭 후 스크린으로 이동
 
후에 작업 해도된다.

 

만약 칼럼을 1,2,3,4,22 이런식으로 저장하여 정규화 안했을 때 해당 값을 배열로 치환하여 디코드 된 데이터 보내는 방법이다

 

/**
     *  한글로 변형, 배열로 치환
     *
     * @param String $ctg_svc = [1,2,3,4,5] or "12,3,4,5"
     * @param boolean $sort true: 키값 순서대로, false : 키 값 카테고리 코드에 담아서
     * @return array
     */
    function func($ctg_svc, $sort = false) {

 

        if(!is_array($ctg_svc)) {
            $ctg_svc = explode(",", $ctg_svc);                                  
        }
        if(empty($ctg_svc)) {
            return false;
        }
        //리스트
    
       $ctg_list[0] = ['category_code' => 1 , category_name => "사과' ];
       $ctg_list[1] = ['category_code' => 2 , category_name => "바나나' ];
       $ctg_list[2] = ['category_code' => 3 , category_name => "딸기" ];
       $ctg_list[3] = ['category_code' => 4 , category_name => "키위' ];
       $ctg_list[4] = ['category_code' => 5 , category_name => "수박' ];
                                                       ...
                                                       ...
                                                       ...
 
       
        foreach($ctg_list as $cl) {
            if( in_array($cl["category_code"], $ctg_svc) ) {
                if($sort === true) {
                    $ctg_svc_name[] = $cl["category_name"];
                } else {
                    $ctg_svc_name[$cl['category_code']] = $cl["category_name"];
                }
            }
        }
        return $ctg_svc_name;
    
$svcArr = [
           'A' => [1,2,3,5,4] ,
           'B' => [1,1,2,3,4],
           'C' => [1,1,1,3,4,5]
        ]
  
  또는 
  $svcArr = [
           'A' => "1,2,3,5,4" ,
           'B' => "1,1,2,3,4",
           'C' => "1,1,1,3,4,5"
        ]

        
        foreach($svcArr as $key => $val) {
			if(is_array($val)) { //배열이면 중복제거
				$val = array_unique($val);
			} else {
				$val = array_unique(explode(",", $val)); //string 이면 배열로 치환 후 중복제거
			}
			$svcArr[$key] = sort($val); //정렬
			$svcArr[$key] = implode(",", $val); //문자로 치환 
		}
        
        return {
        	$svcArr['A'] = "1,2,3,4,5"  //순서정렬
            $svcArr['B'] = "1,3,4,5" //중복제거
            $svcArr['C'] = "1,3,4,5" //순서제거 및 중복제거
              
        }

 

+ Recent posts