OS를 새로깔고 yum으로 package들을 설치할려고 하는데 다음과 같은 에러가 발생 하였다

 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base

이경우 resolv.conf 에 nameserver 정보를 작성하지 않아 발생한 error

#] vi /etc/resolv.conf

[추가]

nameserver 168.126.63.1

네임서버 IP를 입력하고 재시도하면 된다.


시스템 일반계정에 접속 해 특정 디렉토리의 모든 파일 및 디렉토리를 압축할 때

압축이 끝나면서 tar: Exiting with failure status due to previous errors 가 발생하는 것은

테스트 해보니 압축한 디렉토리 내부에 ssh 에 접속한 UID 이외의 소유자의 파일 및 디렉토리가 존재해 발생하는 것이다.

tar: Exiting with failure status due to previous errors 가 화면에 나타나도 실제 압축파일은 정상적으로 압축되는 것이며

위 메시지가 보기 싫으면 관리자에게 요청하여 다른 UID로 지정된 파일 또는 디렉토리의 소유자를 자신의 권한으로 변경해

달라고 요청한 뒤 다시 압축하면 tar: Exiting with failure status due to previous errors 메시지는 나타나지 않으니

참고하도록 하자.


hdparm은 시스템에 장착된 하드디스크의 설정을 확인하거나 하드디스크의 설정을 하고자 할 때에 사용하는 명령어다. 주로 실무에서는 IDE 또는 SCSI하드디스크의 ACCESS속도를 측정할 때에 많이 사용하며 이 명령어로 하드디스크의 직접적인 성능에 영향을 줄 수 있는 여러가지 설정을 할 수 있지만 극히 위험한 상황을 초래할 수 있으므로 설정의 용도로는 사용하지 않는 것이 좋다.

따라서 대부분의 경우 하드디스크의 ACCESS속도 및 성능을 확인하고자 할 때에 사용한다.


1. hdparm명령어로 버퍼링되어 있지않은 데이터의 디스크 ACCESS 속도 체크하기


 # hdparm -t /dev/sda


/dev/sda:

Timing buffered disk reads: 344 MB in  3.01 seconds = 114.28 MB/sec


위의 결과를 보면 현재 시스템에 장착되어 있는 SCSI(또는 S-ATA)하드디스크의 경우 실제로 디스크에 존재하는 데이터를 읽는

속도는 초당 약114MB임을 알 수있다.


2. hdparm명령어로 버퍼링되어 있는 데이터와 되어있지않는 데이터의 ACCESS 속도 비교하기 


# hdparm -tT /dev/sda


/dev/sda:

Timing cached reads:   3396 MB in  2.00 seconds = 1698.05 MB/sec
Timing buffered disk reads: 342 MB in  3.00 seconds = 113.86 MB/sec


여러분도 잘 아시다시피 캐쉬(cache)에 버퍼링되어 있는 데이터를 읽는다면 실제 속도는 엄청나게 빨라질 것이다. 캐쉬(cache)에 저장된 데이터를 읽는다는 것은 실제로 디스크에서 읽어오는 것이 아니라 캐쉬메모리(cache)에서 읽어오기 때문이며 1번의 예는 실제로 디스크에 존재하는 데이터(t옵션)를 읽는 속도를 체크한 것이라면 위의 예는 캐쉬에 존재하는 데이터(T옵션)를 읽는 속도와 함께 측정하는 예입니다.


위의 예에서 보면 캐쉬에 버퍼링되어 있는 데이터(T옵션)를 읽을 때에는 초당 약 1698MB를 읽을 수 있으며 실제로 디스크에서 데이터(t옵션)를 읽어오는 속도는 초당 약 113MB임을 알 수 있다.

이 예에서 캐쉬메모리가 시스템의 속도에 얼마나 막대한 영향력을 행사하는가를 알 수 있습니다.


idn 명령어는 유니코드가 포함된 도메인 (한글도메인)을 ASCII 형식으로 변환해주는 명령어이며

아래는 설치부터 사용법 예시에 대한 정리이다.

[idn 설치]

yum -y install libidn


[idn 명령사용법]


CHARSET=EUC-KR idn -a --quiet 한글도메인 (한글도메인을 punnycode 로 변환)
CHARSET=EUC-KR idn -u --quiet punnycode (punnycode를 한글도메인을 변환)

ex) CHARSET=EUC-KR idn -a --quiet 네이버.com (xn--950bt9s8xi.com 으로 변환됨)
ex) CHARSET=EUC-KR idn -u --quiet xn--950bt9s8xi.com (네이버.com 으로 변환됨)
 

[중요] CHARSET=EUC-KR 를 명시하지 않으면 서버 로케일 설정이 euc-kr 로 지정되지 않은 서버에서는

엉뚱한 결과값이 출력될 수 있으므로 명령어 사용시 반드시 위 예시와 같이 CHARSET=EUC-KR 를 조합해서 사용할 것.

CHARSET=EUC-KR 옵션사용시 시스템의 로케일 설정의 영향 받지 않음.



virtualhosts.conf (기본 "httpd-vhosts.conf") 파일의 적용을 원하는 계정을 찾아

아래의 지시자를 추가해준다.

* 파일 업로드 용량 설정

php_value upload_max_filesize 64M
php_value post_max_size 64M 

 

* 64M 는 예시이며 용량을 다르게 지정할 수도 있다. 

서버에 설정된 upload_max_filesize & post_max_size 의 설정 값 확인하는 스크립트

<?php
$s1 = 'upload_max_filesize';
$s2 = 'post_max_size';
echo $s1.' : '.ini_get($s1);
echo "<br>";

echo $s2.' : '.ini_get($s2);

?>


* 최대 업로드 갯수 설정

php_admin_value max_file_uploads 100  (php 5.2.12 이후)

서버에 설정된 max_file_uploads 의 설정 값 확인하는 스크립트

<?php
$s = 'max_file_uploads';
echo $s.' : '.ini_get($s);
?>


'Works > PHP' 카테고리의 다른 글

phpmyadmin 로그인 인증 방법  (0) 2016.02.26
PHP 언어셋 컨버팅  (0) 2015.12.16
Imagerotate 테스트 소스  (0) 2015.11.09
php 파일 암호화 php_screw-1.5  (0) 2015.10.30
모바일페이지 자동 리다이렉션 스크립트  (0) 2015.10.30


Linux 시스템에서 vi 등으로 특정파일을 편집시도시 다음과 같은 에러메시지가 나오면

"Write error in swap file"

위 메시지의 의미는 Swap file을 쓸 수 없다는 말인데, 이러한 문제는 하드디스크 내에 여분의 공간이 없기 때문에

발생한다. 따라서 이 문제를 해결하라면 하드 디스크에서 불필요한 자료들을 삭제해야 해결될것이다.


기본적으로 localhost 에서만 접속이 허용되는 DB 를 외부(PC 및 타 서버) 환경에서 접속하려고 할 때

기존의 db 유저의 host를 변경할 것이 아니라 아래의 쿼리문을 이용해 유저를 추가해주면 된다.

(host 부분의 %는 모든 호스트에서 접속 허용이며 이부분을 IP 주소로 입력하면 해당 IP 에서만 접속이 가능함.)

 

[추가]

1. insert into user (host,user,password) values ('%','user_name',password('user_password'));


[mysql 5.5 이상에서는 아래 쿼리를 실행할 것!!!]

insert into user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject, authentication_string) values('%','user_name', password('user_password'),'','','','');


2. insert into db (host,db,user) values ('%','db_name','user_name');

3. flush privileges;
4. grant all privileges on user_name.* to user_name@'%';

 

(Root 계정의 경우 2번은 생략하고 1번 쿼리 이후 4번 쿼리 중 user_name.* 대신 *.* 로 처리할 것!)

 

5. flush privileges;

 

위 방법대로 했는데도 외부 접속이 안된다면 /etc/my.cnf 파일의 항목 중 bind-address = 127.0.0.1 이 있다면

 

이를 주석처리 한다. (bind-address = 127.0.0.1 는  로컬호스트에서만 접속을 허용한다는 의미임.)

 

bind-address = 127.0.0.1 를 주석처리해도 안된다면 방화벽에서의 mysql 포트 (기본:3306)이 차단되어있을 가능성이 있으므로

 

확인 해 볼것! 

 

[삭제]

아래는 위의 방법대로 외부 접속 호스트 추가 후 삭제하는 방법이다.

(user_name 과 host 부분을 and 조건으로 모두 만족해야 처리되니 주의할 것!!  // % 대신 ip를 입력해도 무방)

 

1. delete from user where user='user_name' and host='%';

(root 계정의 경우 1번만 실행하면 됨)
2. delete from db where user='user_name' and host='%';

flush privileges;



php 컴파일시 아래와 같은 에러 메시지가 나오면

 configure: error: libjpeg.(a|so) not found.

configure: error: libpng.(a|so) not found.


- configure 중 해당 라이브러리가 없어 나는 에러

- 아래의 라이브러리 설치


yum install libjpeg-devel

yum install libpng-devel


해당 라이브러리 설치 후에도 에러가 발생하면 아래와 같이 설정

64bit 운영체제에서 해결이 됨.


ln -s /usr/lib64/libjpeg.so /usr/lib

ln -s /usr/lib64/libpng.so /usr/lib


[출처] http://wnstjqdl.tistory.com/entry/configure-error-libjpegaso-not-found-configure-error-libpngaso-not-found

 

shutdown 명령어를 이용하면 된다.

시작 -> 실행 하고,

shutdown /s /f /t 3600

라고 타이핑 해주면 된다.

/s 는 종료한다는 의미고, 대신 /r 이나 /l 을 붙이면 재부팅 하거나 로그오프 한다. 

/t 뒤에 붙는 3600 은 한시간 예약을 말한다. 적당히 알아서 조절하면 되겟다. 1초단위이며, 최대 예약 시간은 10년이다. (315360000!!)

/f 는 만약 강제 종료가 필요할 대 사용한다. 대화상자가 나와서 종료가 되지 않는 경우 등...

조금 더 많은 옵션을 보고 싶으면 커맨드라인에서 shutdown이라고만 쳐보면 자세한 명령어가 나오니 참조.

만약에 다른 볼일이 생각나서 예약해 놓은 자동꺼짐을 취소하고 싶을 경우에는

shutdown /a

라고 쳐주면 중단한다.

[출처] http://egloos.zum.com/talkable/v/1674594 

  

 

 

페이지 리디렉트와 검색엔진 최적화
301 redirect는 영구적으로 옮겼을때
302 redirect는 일시적으로 옮겼을때 사용
검색엔진 최적화에는 301 redirect 추천


[301 permanent redirect]


사이트를 새로운 도메인으로 옮겼다던가 페이지의 주소가 바뀌었을때 사용자들을 자동으로 바뀐 주소로 옮겨가게 만드는데는 두가지 방법이 있습니다.
301 permanent redirect와 302 temporary redirect 입니다.
301과 302는 사용자가 브라우저를 통해 웹서버에 요청했을때 돌려받는 웹서버의 상태코드입니다.
301은 요청한 정보가 새로운 주소로 영구적으로 옮겨갔다는것을 말해주며 302는 일시적으로 옮겨갔다는것을 말해줍니다.
표면상으로는 둘다 자동으로 사용자를 옮겨가게 만드니 사람의 육안으로는 구별할수 없으나 검색엔진 크롤러는 그 차이를 알수 있고, 이 두가지가 검색엔진 최적화에 미치는 영향은 꽤 큽니다.



이것은 말그대로 요청한 정보(사이트나 페이지)가 영구적으로 옮겼다는것을 말해줍니다.

 

예를 들어 aaa.com을 소유했던 사람이 bbb.com으로 사이트 주소를 옮겼을때 301 redirect를 해준다면 크롤러가 aaa.com에 접속했을때 aaa.com에서 인덱스한 내용의 주소가 bbb.com으로 바뀌었다는것을 감지하고 인덱스된 aaa.com의 주소를 자동으로 bbb.com으로 변경시켜 줍니다.

이럴경우 ‘aaa’라는 키워드로 aaa.com이 검색결과에 나오던것이 bbb.com으로 나오게 되는 것입니다.

이렇게 되면 사이트 관리자는 손쉽게 검색엔진에 변경된 사항을 적용할수 있게되고 검색엔진을 통해 유입되는 트래픽을 잃지 않게 됩니다.

그외에 www.aaa.com을 ‘www’가 빠진 aaa.com으로 지정하고 싶다던지 www.aaa.com/product.html?a=samsung&b=galaxy&c=tab 같은 url을 www.aaa.com/samsung/galaxy/tab 같이 읽기 쉬운 형식으로 바꾸고 싶을때 유용하게 쓰입니다.


[302 temporary redirect]


302 redirect는 현재 페이지나 사이트를 일시적으로만 옮겼다는것을 말해줍니다.

 

대부분 javascript를 이용한 redirect, 메타태그(< meta http-equiv="refresh" content="0;url=http://새로운주소.com" />)를 이용한 redirect 또는 각각의 프로그래밍 언어를 사용한 단순 redirect가 이에 포함됩니다.

aaa.com 소유자가 bbb.com으로 사이트를 옮겼는데 잘모르고 302 redirect를 해주게 되는경우 사용자는 자동으로 옮겨가게 되지만, 크롤러는 사이트가 옮겨갔다는것을 감지하더라도 일시적으로만 옮겨간것으로 간주하기 때문에 검색결과에 아무런 변화를 주지 않게 됩니다.

그래서 특정 키워드로 검색을 했을때 aaa.com이 나오던것이 bbb.com으로 업데이트되지 않게 됩니다.

간혹 이것을 악용하여 특정 키워드로 최적화된 페이지를 방문한 사용자를 자동으로 페이지와 전혀 상관없는 광고성 페이지로 옮겨가게 만드는 경우도 있습니다.

구글은 이를 doorway page로 여겨 페널티를 부과하기때문에 302 redirect를 사용할때에는 잘 생각해보시고 사용하시기 바랍니다.

대부분의 경우 302 보다 301 redirect를 사용하시는것을 추천합니다.


301 redirect 사용방법
301 redirect 사용방법에는 여러가지가 있습니다.
사용하는 프로그래밍 언어에 따라 약간씩 틀리고 .htaccess 파일 수정을 통해 mod_rewrite을 사용할수 있습니다.


0. apache 에 직접 등록시

<virtualhost> 와 </virtualhost> 사이에 아래의 룰을 추가

Redirect 301 / http://연결될도메인.com



1. PHP redirect

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );
?>

2. JSP(Java) redirect

< %
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%>

3. ASP.NET redirect

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    Response.Status = "301 Moved Permanently";
    Response.AddHeader("Location","http://www.new-url.com");
}
</script>
4. ASP redirect
< %@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.new-url.com/"
%>

5. Ruby on Rails redirect

def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end

6. CGI Perl redirect

$q = new CGI;
print $q->redirect("http://www.new-url.com/");

7. .htaccess mod_rewrite

RewriteEngine on
RewriteRule (.*) http://www.new-url.com/$1 [R=301,L]

.htaccess의 mod_rewrite 같은 경우 사용법이 훨씬 다양하며 자세한 내용은 http://httpd.apache.org/docs/current/mod/mod_rewrite.html를 참조하시기 바랍니다.