2018년 9월 30일

Firebase에 앱추가시 디버그 서명 인증서 SHA-1 만드는 방법

윈도우키 + R 눌러서 cmd 치고 엔터 커맨드창을 연다.



아래 명령어를 입력한다. (그전에 자바와 Android Studio는 당근 깔려있겠죠?) 아래 붉은색 경로는 사용자 마다 다르니까 직접 찾아서 들어갈 것.

탐색기에서 아래 녹색으로 보이는 경로 대신 %USERPROFILE%\.android\debug.keystore   라고 입력하면 될꺼 같은데, 내 컴퓨터는 빙시라서 %USERPROFILE%를 인식 못하더라. 그래서 직접 입력함.


keytool -list -v -keystore "C:\Users\dikaf\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

2018년 9월 28일

윈도우10 핫스팟 존 만들기. 그리고 켜질때마다 자동으로 핫스팟이 켜졌으면 좋겠다. 윈도우10 핫스팟 자동실행

윈도우10 에서 수동으로 핫스팟을 켜기란 너무도 쉽다. 단치 우측 아래에 네트워크아이콘을 누르면 모바일 핫스팟이라는 메뉴가 있다.

지금 본좌는 그걸 하고싶은게 아니라 컴터를 켜면 자동으로 핫스팟이 켜졌으면 좋겠다. 이건 어쩔수 없이 수작업으로 해줘야하고, 시작프로그램에 등록을 해야하겠다.

1. 나만의 핫스팟 이름과 비밀번호 설정하기

 윈도우키 + R 눌러서 실행창 뜨면 cmd입력

2. 터미널창이뜨면 ( dikafryoAP 는 핫스팟이름,  s2463372! 는 핫스팟비번)

netsh wlan set hostednetwork mode=allow ssid=dikafryoAP key=s2463372!

만약에 아래처럼 관리자 권한 어쩌고 나오고 제대로 실행이 안되면.. 3번 항목으로~



2-1. 이렇게 제대로 네트워크모드 허용이 뜨고 SSID 와 암호설정이 정상적으로 되면 4번 항목으로~


3. 관리자 모드로 실행하라고 뜰때는.. 터미널에마 마우스 대고 우측버튼 클릭..



명령 프롬프트에서 또한번 마우스 오른쪽버튼 누르면 관리자 권한으로 실행이 나온다.



이제 관리자 권한으로 위의 2번항목의 명령어를 통해 핫스팟 이름과 비밀번호 그리고 allow 모드를 켜주자!

4.  핫스팟 켜기

netsh wlan start hostednetwork

5. 네트워크 공유 설정하기

다시 cmd 창에서 아래 명령어 실행
아 ㅆ ㅣ  nvpa.cpl 아니다 nvpa.cpl이다 이것도 몰라서 열라 찾음.

nvpa.cpl
ncpa.cpl


네트트워크 연결이 나오는걸 볼수있다 거기에 나는 보니 dikafryoAP가 2번째 네트웍으로 보인다. 쟤가 보이면 완성..

지금현재 공유할 메인 네트워크의 속성으로 들어가자.. 젤 오른쪽에 이더넷을 마우스 우측버튼 속성..





들어가서 공유탭으로 가면 첫번쩨 내모칸 체크하고 네트워크를 공유할 홈네트워킹을 아까 위에 보이던  "로컬 영역 연결*11" 을 선택해주면 된다.

(밑에 이미지에 Wi-Fi 쟤 아니다!! 저건 그냥 저렇게 나온다고 캡쳐했는데 내가 바보같이 캡쳐한거임)



메모장으로에 hotspot_start.bat 라는 파일을 만들자
메모장 내용은

netsh wlan set hostednetwork mode=allow ssid=dikafryoAP key=s2463372!
netsh wlan start hostednetwork

2줄로 만들어서 저장하자. 참고로 bat 확장자를 가지도록 하자. 확장자 숨김을 해놓으면 hotspot_start.bat.txt  가 되는데 안보이니까 알수 없다. 아래 그림을 보고 탐색기에서 파일 확장명 체크를 하도록 한다!







이제 시작프로그램에 위에서 만든 파일  bat 파일을 넣자..  실행창에서 아래 명령 실행.. cmd창이 아니라 그냥 실행 창이다 ^^




shell:startup

이미지는 복사가 안되니 복사용으로 명령어 남김 ㅋㅋ

참고로 배치파일을 C:\  에 넣어두고... 시작프로그램에는 연결을 만들어 넣어야 한다. 아래 처럼..



연결을 넣는 방법은 마우스로 클릭해서 끌때    Ctrl + Shift 를 누른상태로 파일을 끌어다 넣으면 연결이 만들어진다..
혹은 마우스 우측버튼으로 끌어 넣어서. 나오는 메뉴에서 연결만들기를 해도된다.



이게 끝??? 인줄 알았찌만 아직 끝이 아니다. 배치파일도 관리자 권한으로 실행해야 실행이 되니까...


파일에서 마우스 우측버튼 눌러 속성




고급에 들어가서 관리자 권한으로 실행을 체크하면 끝!!!

방금처럼 연결을 넣은 이유는 파일은 관리자 권한 실행 체크가 안된다. 오직 연결에만 관리자 메뉴뜨니까 참고하시라..




참고로 : 이걸로 쓰다가 윈도우10에서 자체 지원하는 핫스팟을 켜니까 완전 네트웍이 병맛이 되더라. 그뒤로 이걸 실행해도 안되고. 좀 이상하게 되더라구.. 그냥 이거 하나만 쓰는게 깔끔 윈도 자체 핫스팟은 아예 실행도하지마라.


그래서 본좌는.. 이렇게 설정한다


1. 작업표시줄에 마우스대고 우측 버튼 눌러 > "작업 표시줄 설정"  클릭
2. 스크롤 내려가면 "작업 표시줄에 표시할 아이콘 선택"  클릭
3. 내가 남기고싶은것만 켜고 나머지는 아예 보여지지 않도록 끈다. ( 네트워크 따위는 꺼주자!)  참고로 본좌는   OneDriv, 볼륨조절 이렇게 2개만 켠다.




2018년 9월 23일

mysql 의 auto_incrrement 최적화 or 초기화 시키기!

먼저 테이블에 업데이트 인서트가 활발하게 이루어지는 경우는 다소 무리가 있는 방법이다.

SET @CNT = 0;
UPDATE table_name SET field_name=@CNT:=@CNT+1;
하고난 뒤에 AUTO_INCREMENT 번호를 다시 지정해주자.. 총 적용되는 컬럼수가 43540 개라면.. 최소 43541보다는 큰 값으로 해야겠다.

ALTER TABLE table_name AUTO_INCROMENT=43542;

2018년 9월 21일

php 문자열로 변수이름 짓기

php 문자열로 변수이름 짓기 

<?
$extra_var = "type=101|total=12800|amount=12300|cash=500|total=12800|PRODUCT_NAME=30일무제한이용권|PRODUCT_CODE=101|RESERVED=30|RESERVED2=여유변수|RESERVED3=일무제한이용권";
$extraArray = explode("|", $extra_var);

for($i = 0; $extraArray[$i]; $i++) {
 $valueArray = explode("=", $extraArray[$i]);
 ${$valueArray[0]} = $valueArray[1];
}

echo $type;   // 101
echo $total;   // 12800
echo $amount;  //12300
echo $cash;     // 500
echo $total;    // 12800
echo $PRODUCT_NAM // 30일무제한이용권
echo $PRODUCT_CODE // 101
echo $RESERVED     // 30
echo $RESERVED2    // 여유변수
echo $RESERVED3     // 일무제한이용권
?>

두번째 더 간단한 예

$value = 'money':
${$value} = 1000;
echo $money;

결과값 : 1000

2018년 9월 19일

CentOS7 에 ftp 설치하다.

1. 그냥 제가 아크로에디트를쓸라니 아 이놈은 ssh 가 안되고 ftp만되네요. 할수없이 비보안 전송프로토콜을 쓰기로했습니다.

 CentOS7 에 ftp설치합니다.

yum install ysftpd
저는 -y 옵션을 안줍니다. 어떤게 깔리는지 눈으로 볼라꼬요.. vsftp는 다행히도 지 하나만 깔리네요 의존된 다른건 없네요.
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                     | 7.7 kB     00:00
 * base: mirror.kakao.com
 * epel: mirrors.aliyun.com
 * extras: mirror.kakao.com
 * ius: mirrors.kernel.org
 * remi-php72: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * rpmforge: ftp.neowiz.com
 * updates: mirror.kakao.com
base                                                     | 3.6 kB     00:00
extras                                                   | 3.4 kB     00:00
ius                                                      | 2.3 kB     00:00
mariadb                                                  | 2.9 kB     00:00
remi-php72                                               | 2.9 kB     00:00
remi-safe                                                | 2.9 kB     00:00
rpmforge                                                 | 1.9 kB     00:00
updates                                                  | 3.4 kB     00:00
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-22.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package          Arch             Version                 Repository      Size
================================================================================
Installing:
 vsftpd           x86_64           3.0.2-22.el7            base           169 k
Transaction Summary
================================================================================
Install  1 Package
Total download size: 169 k
Installed size: 348 k
Is this ok [y/d/N]: y
설치완료 몇가지만 설정해볼께요
#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO     <== 익명접속하용하지 않음. 허용하려면YES
xferlog_enable=NO          <== 파일송수신 로그 너무 많아서 저는 NO  로그하시려면 YES하세요.
설치끝 방화벽 열고 시작함.
# firewall-cmd --permanent --add-service=ftp
success
# firewall-cmd --reload
success
# systemctl start vsftpd
#systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

2018년 9월 18일

CentOS7 apache2.4 에 https 운용 및 Let's Encrypt 설치 그리고 자동갱신까지..

1. apache 에 먼저 https 부터 설치한다. 필수 프로그램을 먼저 설치

yum install open-ssl

 Let's Encrypt 설치

필수 패키지 설치 보통있겠지만, 없을수도있는 분을 위해

yum install httpd mod_ssl

Let's Encrypt 설치!

yum -y install certbot

certbot 로 인증서 제작! 끝(?!)

[root@localhost iteach4u]# certbot certonly --server https://acme-v01.api.letsencrypt.org/directory \
--rsa-key-size 4096 --agree-tos \
--email dikafryo@gmail.com --webroot -w /home/iteach4u/htdocs/ \
-d www.iteach4u.kr -d iteach4u.kr

-d 옵션을 통해 같은 도메인에 호스트만 바뀌는 경우는 7일동안 5개의 도메인까지 가능하며,
1대의 서버에서 3시간에 10개의 도메인의 인증을 허용함.
아래와 같이 나오며..   메일 수신을 할꺼냐? 물어보고 Y/N선택하면 설치 끝.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.iteach4u.kr
Using the webroot path /home/iteach4u/htdocs for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.iteach4u.kr/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.iteach4u.kr/privkey.pem
   Your cert will expire on 2018-12-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

위에 분홍색 경로에 파일을 ssl.conf 에 등록해야하니 잘 알아두자.

vi /etc/httpd/conf.d/ssl.conf 파일에 가상호스트를 만든다.

<VirtualHost *:443>
    ServerName www.iteach4u.kr
    DocumentRoot "/home/iteach4u/htdocs"

    <Directory "/home/iteach4u/htdocs">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    SSLEngine on
    Header always set Strict-Transport-Security "max-age=31536000"
    SSLCertificateFile /etc/letsencrypt/live/www.iteach4u.kr/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.iteach4u.kr/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.iteach4u.kr/chain.pem
    SSLCACertificateFile /etc/letsencrypt/live/www.iteach4u.kr/fullchain.pem

    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" combined
</VirtualHost>

갱신은 완전 간단하다

/usr/bin/certbot renew

하면 자동갱신되며 저 명령어를 크론에 등록하면 되겠다.
갱신일 30일이하로 남아야 갱신되고 그 이상이면 갱신 안되고 그냥 pass니까. 나는 일주일에 한번씩 갱신하는걸로.  마지막 숫자는 수요일을 뜻함

vi /etc/crontab

3 2 * * 4 /usr/bin/certbot renew

2018년 9월 17일

MySQL 또는 MariaDB 5.5 에서 MariaDB 10.x 버전 업그레이드 하고 꼭 해야할 것.. ㅋㅋ

mysql_upgrade -uroot -p


간단해서 죄송합니다 ^^  
하면 DB를 주루룩~~ 업데이트 합니다..

그리곤 끝. ^^ 

MariaDB 10.3.x 이중화 마스터,슬레이브 서버 구축 Replication DB 구축하기 슬레이브는 synology nas 로

마스터는 CentOS7 이고, 슬레이브는 시놀로지(synology) nas 에 를 사용합니다.

시놀로지는 mariadb설치시 경로가 다음과 같습니다.

/var/packages/MariaDB10/var/mariadb10   : 데이터경로
/volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/   실행파일 경로
/var/packages/MariaDB10/etc/my.cnf  설정파일 경로

그외 일반적인 리눅스는 다음과같습니다.
/etc/my.cnf    설정파일 경우

1. 마스터 서버의 my.cnf 의 [mysqld] 섹션 또는  [mariadb] 섹션을 찾아서 수정합니다.
[mysqld]
log-bin
server_id=1

2. 디비서버 재실행해서 설정파일이 적용되도록 한다
systemctl restart mariadb

3. 디비접속해서 슬레이브서버에서 사용할 사용자를 만들고, DB백업을 함
mysql -uroot -p
password : 입력

4. 리플리케이션을 하기위한 아이디(replication)와 비밀번호(bigs3cret)를 세팅했다.(물론 변경가능)  2번째 줄은 리플리케이션 사용자가 슬레이브서버로 백업할수있는 권한을 준다.
CREATE USER 'replication'@'%' IDENTIFIED BY 'bigs3cret';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

5. 아래 쿼리문을 2개를 실행하고 ssh 창을 잠시 열어둔다.
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000002 |    455330 |              |                  |
+--------------------+----------+--------------+------------------+
로그파일명  master1-bin.000002  와  position 455330 을 기록한다.

6. mysql을 빠져나오면 테이블락이 해제되므로. 빠져나오지 말로 ssh 를 하나더 접속해서.. db파일을 덤프뜬다..슬레이브 서버에 쓰레기 데이터가 있으면 기존테이블삭제 하라는 문구도 넣었다.
/path/to/mysqldump -add-drop-table -A -uroot -p > all_databases.sql



7. 이제 슬레이브 DB서버로 덤프파일을 이동시키고 슬레이브 dB에 집어 넣는다..
mysql -uroot -p < all_database.sql

이제 슬레이브 서버의 my.cnf 파일을 수정한다.
특정DB만 복제할 경우 replication-do-db를 사용해서 DB명을 입력하자. db가 여러개면 ,(콤마)로 구분해서 여러개를 쓸수있다.

[mysqld]
server-id=2
replicate-do-db='repl_db, repl2_db'


설정파일을 변경했으면 mariadb재시작시켜주고.  시놀로지에서 재시작을 한다.

synopkg restart MariaDB10


디비접속
mysql -uroot -p
password : 입력.

아래 쿼리문의 마스터DB설정값을 쓰고, 로그파일과 포지션을 본인에게 맞게 수정해서 쿼리 실행

CHANGE MASTER TO
  MASTER_HOST='211.182.233.2',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master1-bin.000002',
  MASTER_LOG_POS=455330,
  MASTER_CONNECT_RETRY=10;

start slave;

동작이 잘되는지 확인한다.
show slave status\G

다음 2 줄이 Yes 나오면 제대로 되고있음...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


slave가 동작이 잘되는지 계속해서 확인하다가 어느순간 에러로 멈추는 경우가 있다. 슬레이브 서버로 insert를 하거나 update를 하게되면 마스터 DB와충돌이 일어나기에 반드시 select구문만 슬레이브 서버에서 운용하도록 하자.

에러 구문을 확인해서 별것 아닌 에러면 그냥 하나 스킵하면 되고.. 나머지 중요한 에러 같으면 슬레이브DB에서 거기 맞도록 적용하고 넘어가야 겠다..
일단 쿼리가 막혔을때 해당 쿼리 하나만 그냥 넘어가고 다음을 진행하라는 명령어.. 아래 3줄을 복사해서 mysql 슬레이브에서 붙여넣기하면 해당오류만 스킵하고 다음 sql문부터 업데이트를 시킨다.

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

에러를 아예 무시하려면 my.cnf 에   slave-skip-errors=all  구문을 한줄 넣어주면 에러는 모두 무시하고 다음으로 넘어간다.



[mysqld]
slave-skip-errors=all



마스터,슬레이브로  DB를 사용하기위해선 insert 나 update 구문은 반드시 마스터 DB에서만 실행하여야 한다. 슬레이브 DB를 먼저 변경할 경우  DB충돌이 일어나게 된다.


또한 슬레이브 서버를 더이상 사용하지 않을때는 다음 명령어를 통해 슬레이브 설정을 완전 삭제할 수 있따.
stop slave;
reset slave all;

2018년 9월 16일

CentOS7 에 ssh2 Extension for PHP 7 설치하기 (apache 기준)

사전 준비 gcc, php-devel, libssh2 and libssh2-devel on CentOS 7
php-devel 같은 경우는 php71w-devel 로 되어있는 경우도 있고, 이름이 레포에 따라 다른 경우도 있으니, 나에게 깔려있는 php 의 이름이 어떤지 한번 찾아보자..  yum list install | grep php   명령어로 내 서버의 php 이름을 알수있음.

# yum install gcc php-devel libssh2 libssh2-devel
Download php7 pecl-networking-ssh2
# wget https://pecl.php.net/get/ssh2-1.1.2.tgz
Unzip and Change folder
# tar zxvf ssh2-1.1.2.tgz
# cd ssh2-1.1.2.tgz
Building environment for SSH2 extension
# phpize
# ./configure
Make SSH2 extension make sure build success
# make
Install SSH2 extension
# make install
Write SSH2 extension in PHP 7 extension directory
# vi /etc/php.d/ssh2.ini

extension=ssh2.so
Restart apache server and php-fpm
# systemctl restart httpd

블로거 blogger 에서 소스코드 색 입히기 Syntaxhighlighter

Apache
 Bash
 C#
 C++
 CSS
 CoffeeScript
 Diff
 HTML, XML
 HTTP
 Ini
 JSON
 Java
 JavaScript
 Makefile
 Markdown
 Nginx
 Objective-C
 PHP
 Perl
 Python
 Ruby
 SQL
 Shell Session
등이 가능하고 실제로 훨씬 많은 언어를 지원하고 있다. 설치도 간단해서



1. 블로거 관리페이지 &gt;  테마  &gt; HTML 편집 으로 들어가서

2. <head> 와  </head> 사이에 아래 코드 를 넣기만 하면 끝

<!-- SyntaxHighlight 소스코드 색깔넣기 시작 -->
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/darcula.min.css" rel="stylesheet"></link>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js">
<script>hljs.initHighlightingOnLoad();</script>
<!-- SyntaxHighlight 소스코드 색깔넣기 끝 -->


4. 글쓰기에서 글을 아래와 같이 작성했다

function fnNameLayer($ismember, $name, $which = 2) {
global $CountNameLayer, $name_layer;
// ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
$lname = '<span onMousedown="showNameLayer(\'layer_name'.$CountNameLayer.'\',\'visible\')" style="cursor:hand;"><b><font color=#555555>'.$name.'</font></b></span>';
//arrayNameLayer('레이어번호','회원번호','닉네임','자료실=1 게시판=2');
$name_layer .= "arrayNameLayer('layer_name".$CountNameLayer."', $ismember,'".$name."','".$_SESSION['member']['level']."');\n";
$CountNameLayer++;
return $lname;
}

5. HTML 작성으로 들어가서 처음과 끝에

<pre><code class="php">



</code></pre>

를 쓰면 아래와 같이 나옵니다.

function fnNameLayer($ismember, $name, $which = 2) {
 global $CountNameLayer, $name_layer;
 // ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
 $lname = '<span onMousedown="showNameLayer(\'layer_name'.$CountNameLayer.'\',\'visible\')" style="cursor:hand;"><b><font color=#555555>'.$name.'</font></b></span>';
//arrayNameLayer('레이어번호','회원번호','닉네임','자료실=1 게시판=2');
 $name_layer .= "arrayNameLayer('layer_name".$CountNameLayer."', $ismember,'".$name."','".$_SESSION['member']['level']."');\n";
 $CountNameLayer++;
 return $lname;
}

2018년 9월 14일

CentOS7 java 설치

그냥 yum으로 설치하면 된다.

yum install java


[root@localhost ~]# yum install java
Dependencies Resolved
==========================================================
Package          Arch           Version              Repository         Size
==========================================================
Installing:
java-1.8.0-openjdk         x86_64  1:1.8.0.181-3.b13.el7_5    updates   250 k
Installing for dependencies:
copy-jdk-configs             noarch  3.3-10.el7_5               updates   21 k
java-1.8.0-openjdk-headless  x86_64  1:1.8.0.181-3.b13.el7_5    updates   32 M
javapackages-tools           noarch  3.4.1-11.el7               base      73 k
libXfont                     x86_64  1.5.2-1.el7                base     152 k
libfontenc                   x86_64  1.1.3-3.el7                base      31 k
lksctp-tools                 x86_64  1.0.17-2.el7               base      88 k
python-javapackages          noarch  3.4.1-11.el7               base      31 k
python-lxml                  x86_64  3.2.1-4.el7                base     758 k
ttmkfdir                     x86_64  3.0.9-42.el7               base      48 k
tzdata-java                  noarch  2018e-3.el7                updates  185 k
xorg-x11-font-utils          x86_64  1:7.5-20.el7               base      87 k
xorg-x11-fonts-Type1         noarch  7.5-9.el7                  base     521 k
Transaction Summary
==========================================================
Install  1 Package (+12 Dependent packages)
Total download size: 34 M
Installed size: 109 M
Is this ok [y/d/N]: y
Downloading packages:
(1/13): copy-jdk-configs-3.3-10.el7_5.noarch.rpm           |  21 kB   00:00
(2/13): javapackages-tools-3.4.1-11.el7.noarch.rpm         |  73 kB   00:00
(3/13): lksctp-tools-1.0.17-2.el7.x86_64.rpm               |  88 kB   00:00
(4/13): python-javapackages-3.4.1-11.el7.noarch.rpm        |  31 kB   00:00
(5/13): python-lxml-3.2.1-4.el7.x86_64.rpm                 | 758 kB   00:00
(6/13): ttmkfdir-3.0.9-42.el7.x86_64.rpm                   |  48 kB   00:00
(7/13): tzdata-java-2018e-3.el7.noarch.rpm                 | 185 kB   00:00
(8/13): xorg-x11-font-utils-7.5-20.el7.x86_64.rpm          |  87 kB   00:00
(9/13): xorg-x11-fonts-Type1-7.5-9.el7.noarch.rpm          | 521 kB   00:00
(10/13): libXfont-1.5.2-1.el7.x86_64.rpm                   | 152 kB   00:03
(11/13): java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64.r | 250 kB   00:03
(12/13): libfontenc-1.1.3-3.el7.x86_64.rpm                 |  31 kB   00:06
(13/13): java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5 |  32 MB   00:08
--------------------------------------------------------------------------------
Total                                              4.1 MB/s |  34 MB  00:08
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libfontenc-1.1.3-3.el7.x86_64                               1/13
Installing : libXfont-1.5.2-1.el7.x86_64                                 2/13
Installing : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                     3/13
Installing : ttmkfdir-3.0.9-42.el7.x86_64                                4/13
Installing : xorg-x11-fonts-Type1-7.5-9.el7.noarch                       5/13
Installing : lksctp-tools-1.0.17-2.el7.x86_64                            6/13
Installing : tzdata-java-2018e-3.el7.noarch                              7/13
Installing : python-lxml-3.2.1-4.el7.x86_64                              8/13
Installing : python-javapackages-3.4.1-11.el7.noarch                     9/13
Installing : javapackages-tools-3.4.1-11.el7.noarch                     10/13
Installing : copy-jdk-configs-3.3-10.el7_5.noarch                       11/13
Installing : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_   12/13
Installing : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64          13/13
Verifying  : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64           1/13
Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_    2/13
Verifying  : xorg-x11-fonts-Type1-7.5-9.el7.noarch                       3/13
Verifying  : copy-jdk-configs-3.3-10.el7_5.noarch                        4/13
Verifying  : python-javapackages-3.4.1-11.el7.noarch                     5/13
Verifying  : python-lxml-3.2.1-4.el7.x86_64                              6/13
Verifying  : libXfont-1.5.2-1.el7.x86_64                                 7/13
Verifying  : tzdata-java-2018e-3.el7.noarch                              8/13
Verifying  : javapackages-tools-3.4.1-11.el7.noarch                      9/13
Verifying  : libfontenc-1.1.3-3.el7.x86_64                              10/13
Verifying  : lksctp-tools-1.0.17-2.el7.x86_64                           11/13
Verifying  : ttmkfdir-3.0.9-42.el7.x86_64                               12/13
Verifying  : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                    13/13
Installed:
java-1.8.0-openjdk.x86_64 1:1.8.0.181-3.b13.el7_5
Dependency Installed:
copy-jdk-configs.noarch 0:3.3-10.el7_5
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-3.b13.el7_5
javapackages-tools.noarch 0:3.4.1-11.el7
libXfont.x86_64 0:1.5.2-1.el7
libfontenc.x86_64 0:1.1.3-3.el7
lksctp-tools.x86_64 0:1.0.17-2.el7
python-javapackages.noarch 0:3.4.1-11.el7
python-lxml.x86_64 0:3.2.1-4.el7
ttmkfdir.x86_64 0:3.0.9-42.el7
tzdata-java.noarch 0:2018e-3.el7
xorg-x11-font-utils.x86_64 1:7.5-20.el7
xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
Complete!

2018년 9월 10일

CentOS7 ZipArchive 설치(php-pecl)

제로보드XE3 를 설치하는데, 콘솔에서 설치하려니 ZipArchive가 필요하다고 나왔다.
ZipArchive는 php의 클래스패키지중 하나이다.

CentOS에서는 yum을 통해 설치가 가능하다.

리포지토리를 remi-php72로설정(가장최신버전이있음) 하고 내려받으면 되겠다.

yum-config-manager --enable remi-php72

yum install php-pecl-zip

설치가 끝나면 php 설정파일이 있는 곳에 파일을 하나 만들어 줍니다. /etc/php.d/  로 이동하시면 설치순서대로 10, 20, 30 해서 붙어있는게 보이죠? 최초에 설치되면 10-xxx.ini 로 네이밍이 될꺼고.. 두번째는 추가되는 라이브러리는 20-xxx.ini 지금 저는 40-zip.ini 로 이름지었네요 ^^ 이 파일에 extension=zip.so  를 써주시면 됩니다. 아래처럼 콘솔에서 바로 입력했습니다.

echo "extension=zip.so" >> /etc/php.d/40-zip.ini

리눅스 사용자(유저) 추가 및 기본환경 설정에 대해서

useradd 명령을 통해 만들면

/erc/default/useradd 파일의 내용을 참고로해서 환경설정을 한다.


그리고홈디렉토리의 기본구성은

/etc/skel/    디렉토리의 내용을 홈디렉토리로 그대로 복사해온다.

따라서 홈에 기본적으로 있어야할 디렉토리라 파일을 여기에 만들어 두면되겠다

php.ini 수정

mysql data 디렉토리를 /db 로 쓰니까 php 에서 mysql.sock 디렉토리를 못읽고

/var/lib/mysql/mysql.sock  를 찾고 있었다..

그래서 php.ini 파일에 다음 내용을 삽입하였다.



mysqli.default_socket = /db/mysql.sock

2018년 9월 9일

CentOS7, apache 2.4 , php7.2 설치시 설정파일 경로

 /etc/httpd 입니다

/etc/httpd/conf
/etc/httpd/conf.d

에서 설정이 가능

/etc/httpd/conf/httpd.conf  에서 기본 인덱스 파일을 설정합니다.
<IfModule dir_module>     
    DirectoryIndex index.html 
</IfModule>




에러메시지 :
mysqli_real_connect(): (HY000/2002): No such file or directory
config.inc.php 파일 내
$cfg['Servers'][$i]['host'] = "localhost"; 라고 적힌 부분을
$cfg['Servers'][$i]['host'] = '127.0.0.1'; 로 바꿔주니 해결되었다.

CentOS7 apache2.4 가상호스트 설정하기

/etc/httpd/conf/httpd.conf  마지막에 아래줄 삽입

<Directory "/home/*">
        Require all granted
</Directory>
/etc/httpd/conf.d/vhost.conf 파일에 가상호스트를 추가하자.


NameVirtualHost *:80
# iteach4u
<VirtualHost *:80>
  DocumentRoot /home/iteach4u/htdocs/
  ServerName www.iteach4u.kr
  ErrorDocument 404 /Error/404error.php
</VirtualHost>

yum-config-manager 설치하기 .

yum 리포지토리 지정을 해주는 명령어인 yum-config-manager 은 yum-util에 있습니다.

다음과 같이 설치하면 됩니다.


yum install -y yum-utils --enablerepo="base"

mariadb 의 데이터 경로를 바꿨더니 실행이 되지 않는다. 오류가..

먼저 하나 설치하자.


yum install policycoreutils-python

이제 아래 명령을 실행한다.

변경된 datadir 이 /mnt/ssd1/mysql  인 경우

shell> getenforce 
shell> semanage fcontext -a -t mysqld_db_t "/mnt/ssd1/mysql(/.*)?"

shell> restorecon -Rv /mnt/ssd1/mysql

shell> chcon -R -u system_u -r object_r -t mysqld_db_t /mnt/ssd1/mysql

shell> ls -lh -Zd /mnt/ssd1/mysql




그리고  /etc/my.cnf.d/server.cnf  파일의

[mysqld]datadir=/db 

를 추가한다.


이래도 에러가 생긴다....

실행을 직접하자.

mysqld_safe --datadir=/db --socket=/db/mysql.sock --user=mysql &

Centos7 시간이 이상해요. CentOS7 의 Time zone 변경하기

ntp 서버로 시간을 동기화하고

rdate 로 맞춰도 시간이 맞지 않을때??

이때는 CentOS 의 Timezone 를 변경해야한다.

일단 timezone 파일이 존재하는지 확인

ls /usr/share/zoneinfo/Asia/

Seolu 파일이 있는지 확인했으면

기존 로컬타임을 삭제

rm /etc/localtime  

심볼릭 링크를 걸어준다

ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

linux 에 파일이 만들어 지지 않을 경우

1. 문제상황

> 여러 사이트를 운영중인 서버에서 mysql이 stop 되어 start를 시도 하였으나 다음과 같은 에러가 발생하며 시작되지 않았다.

Can't create/write to file '--/mysql/tmp/ibSAi4kh' (Errcode: 28 - No space left on device)
InnoDB: Error: unable to create temporary file; errno: 28
InnoDB: Assertion failure in thread 140119057037088 in file lock0lock.cc line 620

2. 문제확인

> 임시파일을 생성할 수 없다는 에러 문구로 보아 디스크 용량 부족을 체크하였다.
?
001
002
003
004
005
006
007
> df
Filesystem           1K-blocks     Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      15971272  8504680   6648624  57% /
tmpfs                   508116        0    508116   0% /dev/shm
/dev/xvda1              487652    48917    413135  11% /boot
/dev/xvdb             82438832 22826180  55418348  30% /data
디스크 용량은 문제가 없어보인다.
> Inodes 를 체크하였다.
?
001
002
003
004
005
006
007
> df -i
Filesystem            Inodes  IUsed   IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root
                     1024000 1023999  1   100% /
tmpfs                 127029      1  127028    1% /dev/shm
/dev/xvda1            128016     44  127972    1% /boot
/dev/xvdb            5242880    257 5242623    1% /data
IUse% 가 100%가 되어 “No space left on device”에러가 발생한 것으로 보인다.
inode는 파일마다 하나씩 부여되는데 가득차서 더이상 파일을 생성할 수 없게 된다. 그렇다면 1024000라는 크기만큼 파일이 생성된듯 하다.
시스템에서 이정도로 많은 파일을 생성하지는 않을 듯하여 서비스 중인 폴더를 체크하였다.
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
> for i in /*; do echo $i; find $i |wc -l; done
/bin
92
/boot
35
/data
248
/dev
564
/etc
1353
/home
899792
/lib
6235
/lib64
490
/lost+found
1
/media
1
/mnt
1
/opt
3925
/proc
35597
/root
27
/sbin
232
/selinux
1
/_Service
268
/srv
1
/sys
4257
/tmp
775
/usr
50693
/var
4580
home폴더의 파일갯수가 무려 899792 나 된다.
하위 폴더를 검색하자
?
001
002
> for i in /home/*; do echo $i; find $i |wc -l; done
...
대체적으로 간단한 홈페이지를 만들기위해 사용된 그누보드에서 파일갯수가 많다. 아마도 세션파일이나 캐싱 파일로 짐작된다.
하위 폴더에서 확인결과 그누보드의 /data/session폴더에 파일 갯수가 엄청났다.

3. 문제해결

> 세션파일의 경우 현재 필요한 세션이 아닌것이 대부분이다. 주기적인 삭제가 필요하다. 일단 mysql 서비스를 실행하기 위해 rm 명령으로 삭제하자.
?
001
> rm -rf --/session/*

> -bash: /bin/rm: Argument list too long 라는 에러가 발생한다. 파일 갯수가 너무많아 한번에 삭제가 불가능한 것이다.
?
001
002
003
004
005
> rm -rf --/session/sess_0*
> rm -rf --/session/sess_1*
> rm -rf --/session/sess_2*
> rm -rf --/session/sess_3*
...
> ls로 파일명을 확인하여 패턴에 따라 삭제하였다.
> 파일을 삭제하니 정상적으로 mysql이 구동되었다.
> 세션 파일을 주기적으로 삭제하기 위해 스크립트 파일을 만들어 cron에 등록하도록 하자.

[참고사이트]
http://myblog.opendocs.co.kr/archives/1692

추천 게시물

Elisabeth Chaplin (1890~1982)

 프랑스의 예술가 집안에서 태어난 '엘리자베스 채플린'은, 10살 때 가족과 함께 이탈리아로 이사를 갔습니다. 우피치미술관을 방문하고 나서 미술에 푹 빠져버렸죠.  정식교육을 받지는 않았지만 그녀는 우피치미술관에서 명작들을 보고 따라그리...