반응형
반응형

앞에 설명한 것에 이어서  인제 앞에서 짠것과 같은 코드를 DeviceFarm에 올리는 방법에 대해 설명하겠다. 그냥 지금 프로젝트를 압축해서 올리면 DeviceFarm에서는 돌아가지 않는다. Maven 프로젝트로 만들어줘야 한다. Maven을 잘 모르더라도 겁먹을 필요는 없다. 그냥 설명하는 대로 잘 따라하면 제대로 동작한다. 


그리고 아직 AWS DeviceFarm에 대해 더 자세히 알고 싶으면 http://docs.aws.amazon.com/devicefarm/latest/developerguide/devicefarm-dg.pdf 

에 접속해서 저 PDF를 꼼꼼히 읽어보길 바란다. 

여기서는 Working with Appium Java TestNG for Android and Device Farm 이부분만을 보면된다. 

혹시라도 완성된 다른코드를 보고 싶으면 사람을 위해 

https://github.com/awslabs/aws-device-farm-appium-tests-for-sample-app

이 코드를 보고 참고해서 만들면 된다. 


우선 Maven 프로젝트를 만들어준다. 툴을 Eclipse이다. 





빨간색 표시된 곳을 눌러 MavenProject를 만들어 준다. 

그리고 그냥 다 Next를 눌러 완성 시킨 후 pom.xml을 우선 셋팅해준다. 



<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>


<groupId>com.acme</groupId>

<artifactId>acme-android-appium</artifactId>

<version>1.0-SNAPSHOT</version>

<packaging>jar</packaging>


<dependencies>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.8.8</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>io.appium</groupId>

<artifactId>java-client</artifactId>

<version>3.1.0</version>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>2.6</version>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>test-jar</goal>

</goals>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<version>2.10</version>

<executions>

<execution>

<id>copy-dependencies</id>

<phase>package</phase>

<goals>

<goal>copy-dependencies</goal>

</goals>

<configuration>

<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>

</configuration>

</execution>

</executions>

</plugin>

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<version>2.5.4</version>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>single</goal>

</goals>

<configuration>

<finalName>zip-with-dependencies</finalName>

<appendAssemblyId>false</appendAssemblyId>

<descriptors>

<descriptor>src/main/assembly/zip.xml</descriptor>

</descriptors>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>


 

</project>



위와 같이 설정을 해준 후 src안에 main 과 test패키지를 만들어준다. 그 이후 main 안에는 assembly안에 zip.xml파일을 만들어준다. 


zip.xml의 내용은 

<assembly

    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0http://maven.apache.org/xsd/assembly-1.1.0.xsd">

  <id>zip</id>

  <formats>

    <format>zip</format>

  </formats>

  <includeBaseDirectory>false</includeBaseDirectory>

  <fileSets>

    <fileSet>

      <directory>${project.build.directory}</directory>

      <outputDirectory>./</outputDirectory>

      <includes>

        <include>*.jar</include>

      </includes>

    </fileSet>

    <fileSet>

      <directory>${project.build.directory}</directory>

      <outputDirectory>./</outputDirectory>

      <includes>

        <include>/dependency-jars/</include>

      </includes>

    </fileSet>

  </fileSets>

 

</assembly>

와 같다. 


 



위와 같은 구조로 만들어 준 후 page, 와 test는 테스트 코드들이다. 저것과 꼭 똑같이 할필요는 없다. 그냥 테스트 코드를 저 위치에 test패키지안에 넣어주면 된다. 주의할점은 selenium의 라이브러리 값들을 maven이 가져오는 depedency들에게 맞춰서 다시 임포트 해줘야한다. 


이후에는 cmd 창에가서 mvn package install 를 해주면 target에 pom에 설정해두었던 대로 폴더들이 생성된다. 

 


여기서 중요한 것은 zip-with-depedencies 파일이다. 이것을 deviceFarm에 올려주면 된다. 

DeviceFarm에 테스트를 설정하는 것은 매우 간단하므로 굳이 설명하지 않겠다. 


이것보다 더 나은 방법도 있을 수 있다. 그러나 나처럼 삽질하시는 분들이 없으면 하는 마음에 포스트를 작성해보았다. 그나마 삽질하시는 분들에게 조금이나마 도움이되었으면한다. 


반응형
반응형

이번에 내가 있던 스타트업에서 안드로이드 어플을 런칭할 기회가 생겨 테스트를 위해 AWS DeviceFarm 을 이용하여 테스트를 해볼 기회가 생겼다. 안드로이드 기기를 실제로 Device와 OS 버전을 전부 맞춰서 일일이 테스트하기란 거의 불가능에 가깝다. 그래서 자동화 테스트툴 Appium , Calabash, uiAutomator등이 나오게 되었고 DeviceFarm은 이런 자동화테스트 툴을 이용하여 실제 디바이스에서 테스트하는 것을 간단한 조작 만으로 가능하게 해주었다. 


그 과정이 한글로된 문서들이 없어서 힘들어할 사람들을 위해 내가 삽질했던 부분들을 다른 분들은 좀 더 편하게 작업하시라고 포스트를 할려고한다. 


먼저 Appium을 설치해야한다. 그리고 자신이 만들 프로젝트에 Selenium 라이브러리를 추가해주어야한다. 먼저 Appium 을 설치하는 방법이다. 


일단 이동영상을 먼저 보면 어떻게 설치하고 돌려야하는지 대충 감이 잡힌다. 

 

https://www.youtube.com/watch?v=FJ_GwSApOpo



그리고 SlideShare에서 가장 Appium에 대해 잘 설명되어있는 슬라이드를 올린다. 이 두가지를 먼저 보면 Appium을 어떻게 써야하고 무엇인지 대충 감이 잡힌다. 

일단 죄송하게도 내 컴퓨터가 맥이라 맥을 기준으로 설명을 한다. Window도 크게 다르지 않다. 


http://appium.io/ 로 일단 접속하여 Appium을 다운로드한다. 








핑크색으로 표시된 부분을 누르면 다운로드를 받을 수 있다. 다운로드를 받은 후 해야할 일은 Path들이 잘 설정 되어있는지 보아야한다. 그 방법은 간단하다. Appium을 실행 시켜 청진기 버튼을 누르면 간단하게 테스트 할 수 있다. 



Iphone Test는 신경쓰지 않아도 된다. 지금은 안드로이드 테스트를 해야하니까. 보통 Mac에서의 자바 경로는 저곳이다. JAVA_HOME과 ANDROID_HOME path는 무조건 설정을 해줘야한다.( 설정하는 방법을 검색해도 모르겠으면 댓글을 남겨주면 설명하는 블로그를 새로 올리겠습니다.)

이렇게 설정 테스트를 맞췄으면 인제 프로젝트를 생성해보면 된다. 

나는 Eclipse를 가지고 테스트를 하였다. 미리 테스트하고 싶은 apk파일로 만들어놓아야한다. 

아 그전에 테스트 코드를 어떻게 만들어야할지 모르는 사람들을 위해 github에 좋은 코드가 있어서 소개한다.

https://github.com/testvagrant/AppiumDemo

보통 찾아보면 있는 코드들(Main에 그냥 다때려받는) 과는 달리 이 코드는 상당히 깔끔하게 정리가 되어있다. 
이 코드를 보았으면 프로젝트를 만들 때 주의 할 점은 아까 위에서 소개한 동영상을 참고하면 프로젝트 라이브러리들을 쉽게 설정할 수 있다. 요점은 selenium의 버전이 최신버전이면 굳이 testng 라이브러리를 넣지 않아도 된다. selenium안에서 testng가 포함되어 있다. 

코드에 대한 설명은 더 하지 않겠다. 왜냐하면 설정하는 방법을 설명하는 것이기 때문에 (코드에대한 질문이 있으면 따로 질문해주면 답변해드리겠습니다. )

테스트 코드가 다 완성되었다는 가정하에 인제 애뮬레이터를 먼저 켜놓아야한다. 나는 Genymotion을 사용하였다.(설치 방법도 간단하고 기본 애뮬레이터보다 속도가 훨씬 빠르다.) 애뮬레이터를 켠 후 Appium을 실행시킨후 Launch를 누른다. (Appium의 대한 셋팅은 안드로이드 디자인의 아이콘을 누르면 설정할 수 있다. Package명과 시작시 Activity를 설정해주었다. 나머지는 자신에 맞게 설정해주면된다. )  그 이후 이클립스에서 프로젝트를 Run -> TestNG로 실행하면 테스트 코드가 수행되는 모습을 볼 수 있다. 

내가 좀 찾았던 힌트를 몇개 드리면 테스트 코드에서 디바이스의 backButton은 driver.navigate().back(); 메소드를 사용하면 백버튼을 구현할 수 있다. Appium testng 테스트 코드는 안드로이드 apk의 코드를 읽어 파싱하여 테스트 코드를 실행시키기 때문에 코드를 읽을 수 있는 안드로이드의 ID값이나 Text 이름 아니면 xpath값을 설정해주어야한다. xpath값을 찾는 방법을 모르는 사람을 위해 내가 찾은 방법을 설명하자면 테스트 코드가 실제로 돌아갈때 Appium에서 돋보기 버튼을 누르면 해당화면을 찍어 xpath값을 알아낼 수 있다. 그러나 이 값이 모든 디바이스에서 동일하지 않기 때문에 여러 디바이스에서 테스트하는 경우라면 id 값을 가져오거나 실제로 List 클래스를 구현하여 읽는것이 가장 낫다. 

다음번에는 AWS DeviceFarm에 실제로 테스트하기 위해 프로젝트를 셋팅하는 방법에 대해 포스팅하겠다. 


반응형
반응형

이제 드디어 APM을 설치합니다.


SSH로 아마존 인스턴스에 접속합니다. putty를 통해 접속하는 방법은 이미 알고계시죠? : )


# sudo su


를 입력하여 root권한을 획득 하고 이후의 내용을 진행하세요.



이제 본격적으로 Apache, Mysql, PHP를 설치할 것입니다.



먼저 yum 업데이트를 시작합니다. 여러 패키지들을 업데이트 합니다.


# yum update


를 입력하세요.



설치할 패키지 목록이 쭈욱 나타나고 설치를 진행할것인지 묻습니다. 


y를 입력하고 엔터를 누르면 다운로드 및 설치가 진행됩니다.





완료가 되었습니다.

APM을 설치해봅시다. 설치과정은 위와 유사합니다.



PHP와 아파치, 기타 모듈 설치

# sudo yum install php-mysql php php-xml php-mcrypt php-mbstring php-cli mysql httpd

마찬가지로 설치를 할것이냐고 물으면 y를 눌러주세요.



MYSQL 설치

#sudo yum install mysql mysql-server mysql-libs mysql-server




PHP, Apache, MYSQL를 한꺼번에 설치하고, 그리고 SSL까지 쓴다면 이렇게 한꺼번에 타이핑하여 한방에 설치하셔도 됩니다.

# sudo yum install mod_ssl mysql mysql-sever mysql-libs mysql-server php php-mysql php-xml php-mcrypt php-mbstring php-cli httpd

설치가 완료되면

mysql을 실행해봅시다.


# sudo /etc/init.d/mysqld start




OK 가 나타났다면 정상적으로 실행이 된것입니다.



MYSQL root 비밀번호 설정


# mysqladmin -u root password '비밀번호'




보안을 위해서 mysql root 비번도 바꿔주는 센스!

향후 사용할 DB를 생성하고 사용자를 추가하고 그에 대한 권한을 주는것은 기존에 하시던 방식과 동일하니 넘어가겠습니다.


아파치 conf 파일을 수정할 차례입니다. 

이 과정은 /etc/httpd/conf/httpd.conf 에 웹서버 정보를 수정하는 과정입니다.

아파치 conf 파일은 /etc/httpd/conf/httpd.conf 경로에 위치해있습니다.


# vi /etc/httpd/conf/httpd.conf



로 파일을 열고 웹서버정보를 수정해봅시다.

아무것도 수정하지 않은 httpd.conf의 설정은 /var/www/html 을 루트경로로 하고있습니다.

도메인은 설정되지 않았습니다.


먼저 도메인을 설정합니다.

(먼저 가지고 계신 도메인의 DNS 설정을 마치셔야 합니다.)


#ServerName www.example.com:80


주석으로 처리된 이 부분을 주석을 삭제하고 여러분이 가지고 계신 도메인으로 설정하세요.


ServerName www.test.com


도메인이 없다면 아마존이 제공해준 굉장히 긴 이름의 public DNS를 그대로 입력하셔도 됩니다.


이제 웹서버의 루트 경로를 변경할 차례입니다.

루트경로를 굳이 변경하지 않는 경우에는 기본 경로인 /var/www/html가 웹서버의 루트경로가 되고

웹문서는 여기에 업로드하시면 됩니다.


웹서버의 루트경로를 변경하는 경우에는

httpd.conf 파일에서

아래 두 부분을 찾아 원하는 경로로 수정하시면 됩니다.




DocumentRoot "/var/www/html"

<Directory "/var/www/html">


저는 웹문서경로는 /var/www/html 폴더를 그대로 사용하고

ServerName은 아마존에서 제공해준 public DNS를 그대로 사용했습니다.


/home/ec2-user/ 폴더를 웹루트폴더로 사용하려고 ec2-user 폴더의 퍼미션을 변경하면 그 다음부터 해당 인스턴스에 더이상 접속이 되지 않습니다. ec2-user 폴더의 퍼미션을 절대 변경하지마세요.



한가지 더 수정할 것이 있는데

인덱스파일로 index.php를 추가해주는 것입니다.

httpd.conf 파일에서


DirectoryIndex index.html index.php




DirectoryIndex를 찾아 끝에 index.php를 추가해주세요.

폴더에 접근했을때 index.html을 가장 먼저 보여주고, index.html 파일이 없을때 index.php 파일을 보여준다는 설정입니다.

수정한 것을 저장하고, 아파치를 실행합니다.


# sudo /etc/init.d/httpd start


재부팅시에도 apache와 mysql이 자동으로 실행될수 있도록 설정합니다.


# sudo chkconfig --levels 235 mysqld on
# sudo chkconfig --levels 235 httpd on




이제 웹페이지에 보여줄 php 파일을 만들어보겠습니다.

저는 웹문서경로가 /var/www/html 이고,

이 안에 아래의 내용이 담긴 index.php 파일을 생성하여 업로드하였습니다.


<html>
<head>
<title>Hello World!</title>
</head>
<body>
<?php echo 'Hello World!' ?>
</body>
</html>



자 이제 웹브라우저를 통해서 접속해볼까요.



잘나오는군요!


웹서버의 루트경로에 아무런 웹문서가 없다면



웹브라우저로 접속했을때 이런 화면이 나올거예요.




혹시 접근할수 없다는 메시지가 나온다면

웹문서경로의 퍼미션을 확인해주세요.


※ https 를 사용하신다면

https 를 사용하시는 경우에는 mod_ssl을 추가로 설치하셔야 합니다.

설치는 매우간단합니다.

# yum install mod_ssl

설치하시면 mod_ssl.so 파일이 modules 폴더에 설치될거예요. 끝이예요. 참쉽죠?

SSL과 관련된 아파치 설정파일은 /etc/httpd/conf.d/ssl.conf 파일에 정의되어있습니다.

ssl.conf 파일을 원하시는 값으로 수정하시고 아파치를 재실행해주시면 적용이 됩니다.


yum install git-coregit을 사용하신다면 git도 요렇게 설치해주시고

이제 드디어 아마존 EC2를 이용하여 LAMP 환경을 구축하는 것을 모두 마쳤습니다.

아직 DB연결에 관한 부분은 테스트 하지 않았지만,

아마 여기까지 성공하셨으니 이 이후과정은 충분히 진행하실 수 있으리라 생각합니다.



아마존 클라우드 서비스는 앞으로도 활용할 곳이 정말 무궁무진합니다.

아마존 서비스 장애가 발생할 우려가 있다는 것은 충분히 감안하시고,

잘 활용하신다면 상대적으로 저렴한 비용에 아주 손쉽게 서버를 구성하실수 있습니다.

사용해보니 아시아에 위치해 있는 서버도 국내에서 호스팅을 이용하는 것보다는 속도가 떨어지는것 같습니다.

이점도 참고하시면 좋을 것 같아요.



저희가 지금까지 해온 과정은 하나의 인스턴스에 APM을 설치하는것이었는데

이렇게 하지 않고 두개의 인스턴스를 사용해서 웹서버와 DB서버로 나누어서 사용하는 방법도 있습니다.

이렇게 사용할 경우에는 php코드 상에서 mysql host를 적을때 mysql이 실행되고 있는 인스턴스의 ip를 적어주시면 되겠죠.


즐거운 개발하세요~



코드 작성을 위해 EC2에 editplus로 접속하는 방법이 포스팅 되었습니다.



출처: http://trend21c.tistory.com/1297 [나를 찾는 아이]

반응형
반응형

1. EC2 인스턴스 생성할 때 만든 key pair를 다운받는다.(기존 key pair를 선택하거나 새로 만들어 다운받는다) pem 파일


2. $ ssh -i [pem파일 경로] [유저명@퍼블릭DNS or IP]

예) ssh -i ~/Download/ec2.pem ec2-user@ec2-51-71-102-14.ap-northeast-2.compute.amazonaws.com


여기까지가 접속방법


pem 파일 없이 ssh keygen을 가지고 접속하기 위해서는 아래와 같이 적용한다.


1. $ ssh-keygen -t rsa


2. yes 를 연달아 치면 $HOME/.ssh 경로에 id_rsa파일이 만들어진다. id_rsa.pub파일을 텍스트 에디터로 열고 내용 그대로를 remote 서버에 $HOME/.ssh/authorized_keys 파일에 내용을 추가해준다.


3. $ ssh ec2-user@[DNS(IP)] 접속



출처: http://tbang.tistory.com/116 [heene]

반응형

'연구개발 > AWS' 카테고리의 다른 글

[Appium, TestNG, AWS DevicaFarm] 안드로이드 자동화 테스트하기 1 -(Appium 셋팅, TestCode 셋팅)  (0) 2018.01.04
ec2 apm 설치  (0) 2017.09.02
openvpn aws  (0) 2017.07.26
lrzsz  (0) 2017.07.12
ec2 metadata  (0) 2017.07.07
반응형


wget https://raw.githubusercontent.com/sarfata/voodooprivacy/master/voodoo-vpn.sh


vi voodoo-vpn.sh


정보 변경


sudo bash voodoo-vpn.sh



그리고 방화벽 오픈

UDP로 열 것..

4500

500

1701 <--- 요거만 열어주면 되긴 함..

반응형

'연구개발 > AWS' 카테고리의 다른 글

ec2 apm 설치  (0) 2017.09.02
AWS EC2 생성 후 접속(pem -> ssh-keygen)  (0) 2017.08.08
lrzsz  (0) 2017.07.12
ec2 metadata  (0) 2017.07.07
[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
반응형
一、申请AWS云服务器 由于个人笔记本配置低,在VMWare里跑Linux非常卡,所以想租一台云服务器来玩。同学推荐用Amazon的云服务,新注册用户可以免费试用一年。 首先,你需要注册一个账号,然后申请一年免费试用,可以看看这边文章《亚马逊AWS/EC2一年免费申请过程》,注意你需要有一个信用卡,并且会被收取 $1 美元的授权费用。 申请成功以后,就可以创建并运行一个主机实例,《亚马逊AWS怎么新建主机》。 最后,用 xshell 连接你的AWS服务器即可,《使用Xshell连接AWS EC2云服务器》。 连接成功后如下图: 通常使用ec2-user用户登录云服务器,然后可以切换到 root 用户(不需要密码): 

 $ sudo su root 

二、配置开发环境 我使用云服务器主要是为了开发,所以我们需要自己配置基本的开发环境。 2.1 安装gcc/g++ AWS云服务器上并没有安装gcc/g++编译环境,使用一下命令进行安装: 

$ sudo yum update 
$ sudo yum install gcc gcc-c++ make 

2.2 安装lrzsz 通常我们需要在AWS云服务器和本地电脑之间互相传文件,这时需要用到sz、rz命令,安装如下:  

$ wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 
$ tar -xzf lrzsz-0.12.20.tar.gz 
$ cd lrzsz-0.12.20 
$ ./configure 
$ make 
$ sudo make install

## 建软链接 

$ cd /usr/bin/ 
$ sudo ln -s /usr/local/bin/lrz rz 
$ sudo ln -s /usr/local/bin/lsz sz 

OK!现在就可以自由地传文件了。 未完,待续……

链接:http://www.jianshu.com/p/391b269a9989
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


반응형

'연구개발 > AWS' 카테고리의 다른 글

AWS EC2 생성 후 접속(pem -> ssh-keygen)  (0) 2017.08.08
openvpn aws  (0) 2017.07.26
ec2 metadata  (0) 2017.07.07
[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
centos lrzsz  (0) 2017.06.12
반응형

wget http://s3.amazonaws.com/ec2metadata/ec2-metadata


chmod +x ec2-metadata


./ec2-metadata





http://169.254.169.254/latest/meta-data/



help

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

반응형

'연구개발 > AWS' 카테고리의 다른 글

openvpn aws  (0) 2017.07.26
lrzsz  (0) 2017.07.12
[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
centos lrzsz  (0) 2017.06.12
아마존 클라우드 Ubuntu에서 한글 사용  (0) 2016.05.18
반응형

EC2 Linux(ubuntu) 계정 추가 & 설정

AWS의 EC2 를 생성하고 계정을 관리하면서 새로 알게된 내용을 정리한다.

정석은 EC2에서 생성한 각각의 사용자 계정마다 key pair를 생성해 주고, 각 계정에 맞게 설정된 key pair를 통해 접속해야 하지만...
최초 EC2를 생성하며 만들었던 key pair를 모든 사용자가 공유한다던가, password 기반의 로그인을 활성화하여 ssh key를 사용하지 않고 password 기반으로 로그인 하는 방법이 있다. 여기서는 사용자를 추가한 후 password 기반으로 로그인 하는 방법과 모든 사용자가 같은 pem파일을 사용할 수 있도록 하는 방법을 정리하였다.

먼저 AWS EC2 instance(Amazon Linux)를 생성하면 자동으로 ec2-user가 생성된다.
instance 생성시 설정했던 key pair (.pem)를 통해 서버에 접속한다.

1. root password 설정
[ec2-user@ip-172-31-7-114 ~]$ sudo passwd root

2. password 기반의 로그인을 활성화하기
[ec2-user@ip-172-31-7-114 ~]$ sudo vi /etc/ssh/sshd_config

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

위의 no를 yes로 변경한 후 저장한다.

3. root 계정으로 로그인
[ec2-user@ip-172-31-7-114 ~]$ su - root 

4. 다른 사용자 계정 추가
[root@ip-172-31-7-114 ~]$ adduser jmkim

5. 새로 생성한 사용자 계정의 비밀번호 변경
[root@ip-172-31-7-114 ~]$ sudo passwd jmkim

6. 새로 생성한 사용자 계정에 root 권한을 사용할 수 있도록 설정
[root@ip-172-31-7-114 ~]$ sudo visudo

root ALL=(ALL) ALL 아래에 
jmkim ALL=(ALL) ALL 을 추가해 준다.

7. 같은 key pair로 로그인 할 수 있도록 새로 생성한 사용자 계정으로 ec2-user 의 것을 복사

# 이부분에 대한 자세한 내용은 SSH KEY 를 참고한다. (https://opentutorials.org/module/432/3742)

# ubuntu 에서.ssh 폴더를 생성해 주어야한다.
[root@ip-172-31-7-114 ~]$ sudo cp /home/ec2-user/.ssh/ /home/jmkim/.ssh/

8. 복사한 key pair의 소유자를 jmkim으로 변경 (-R : 하위 폴더까지 모두 소유권을 바꿔줌)

[root@ip-172-31-7-114 ~]$ sudo chown -R jmkim:jmkim /home/jmkim/.ssh

9. sshd 서비스 재시작
[root@ip-172-31-7-114 ~]$ sudo service sshd restart
# ubuntu
[root@ip-172-31-7-114 ~]$ sudo service ssh restart
 

이제 EC2 instance를 생성할때 만들었던 .pem 파일과 설정한 비밀번호를 통해 새로 생성한 계정으로 서버에 접속할 수 있다.



출처: http://uroa.tistory.com/100 [UroA 개발 블로그]




추가. 테스트 해보니 제대로 권한이 처리가 안된다.

그래서 확인해보니 

   46  chmod u+w /etc/sudoers

   47  vi /etc/sudoers

   48  chmod u-w /etc/sudoers

   49  ls -al /etc/sudoers

요렇게 권한을 주고 수정한 후 다시 권한을 빼라.

그리고 reboot 하면 권한이 주어진다.

반응형

'연구개발 > AWS' 카테고리의 다른 글

lrzsz  (0) 2017.07.12
ec2 metadata  (0) 2017.07.07
centos lrzsz  (0) 2017.06.12
아마존 클라우드 Ubuntu에서 한글 사용  (0) 2016.05.18
aws. instance. clone. 복제  (0) 2016.02.19
반응형

There is no default zmodem protocol support on amazon ec2 instance, so we need to install one manually (We use lrzsz as example here. You can get the latest version on lrzsz’s website). Follow these simple steps to install:

  1. wget http://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
  2. tar -xzvf lrzsz-0.12.20.tar.gz
  3. cd lrzsz-0.12.20
  4. ./configure –-prefix=/usr/local/lrzsz
  5. make
  6. sudo make install
  7. cd /usr/bin
  8. ln -s /usr/local/lrzsz/bin/lrz rz
  9. ln -s /usr/local/lrzsz/bin/lsz sz

now try running rz on your ec2 install, the file upload window should be shown :)

반응형

'연구개발 > AWS' 카테고리의 다른 글

ec2 metadata  (0) 2017.07.07
[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
아마존 클라우드 Ubuntu에서 한글 사용  (0) 2016.05.18
aws. instance. clone. 복제  (0) 2016.02.19
리눅스 시간 동기화  (0) 2015.11.06
반응형

- AWS에서 우분투 돌려서 공부용으로 사용하고 있는데 한글 입력이 안된다. 문제의 원인은 시스템 locale이 미국 영어로 되어있기 때문인데, 이것을 변경해주면 한글을 사용할 수 있다.

- 일단 locale을 확인해본다. 아마 미국 영어로 되어 있을 것이다.

    $ locale

- 우선 첫번째 할 일은 한글 입력 패키지를 다운받아 설치해야한다. apt-get으로 간단히 설치할 수 있는데, 문제는 어떤 패키지가 있는지 알기 힘들다는것... 구글링 결과 여러가지 썰이 있었는데 아래의 것을 설치하면 된다.

    $ sudo apt-get install language-pack-ko

- 다음으로 시스템 전체의 locale을 변경한 후 설정한다.

    $ sudo locale-gen ko_KR.UTF-8

    $ sudo dpkg-reconfigure locales


- 그리고 다음번 부팅할 때도 기본적으로 한글을 사용하기 위해 /etc/default/locale 파일을 아래와 같이 변경해준다.

    LANG="ko_KR.UTF-8"
    LANGUAGE="ko_KR:ko:en_US:en"

- 이제 다시 접속할 때마다 자동으로 한글을 사용할 수 있다.

- 단! 이렇게 했음에도 한글이 제대로 표시/입력되지 않을 수 있는데 그건 사용하는 터미널 프로그램의 설정이 잘못되어있기 때문이다. 아마존 클라우드는 SSH를 사용하고, 아무래도 많이 사용하는 프로그램이 putty 일테니 putty 기준으로 설명하면(사실 본인이 putty를 쓰기 때문), putty 설정창의 Window->Translation 항목을 보면 Remote character set이 있다. 이게 기본값이 Use font encoding으로 되어 있는데 이걸 UTF-8으로 바꾸면 정상적으로 한글을 사용할 수 있다.

반응형

'연구개발 > AWS' 카테고리의 다른 글

[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
centos lrzsz  (0) 2017.06.12
aws. instance. clone. 복제  (0) 2016.02.19
리눅스 시간 동기화  (0) 2015.11.06
[AWS]EC2 centOS 인스턴스 스토리지 확장하기  (0) 2015.11.06
반응형

http://stonerain.tistory.com/118



* aws 에 서로다른 2개의 계정을 가지고 있고,

a 계정의 instance 를 복제해서, b 계정으로 가져오고 싶은 경우


* b 계정에 로그인한다.

계정정보 > Security Credentials > Account Identifiers 에 들어가서

AWS Account ID 를 알아낸다

(0000-0000-0000-0000 이런 형태임)


* a 계정에 로그인한다.


INSTANCES > Instances > Actions > Image > Create Image 한다.

IMAGES > AMIs 에 들어가서

이미지가 완성될때까지 기다린다.


* 만약 a계정과 b계정의 리전이 다르다면

a 계정에서 만들어진 이미지 Actions > Copy AMI 하여

b 계정의 리전과 동일한 곳으로 복사한다.


* a 계정에서 만들어진 이미지 Actions > Modify Image Permissions

private으로 놓고, AWS Account Number 에 b계정의 AWS Account ID 를 넣는다

(아까 b계정에서 알아낸 id)

Add create volume permissions... 에 체크한다.


* 잠시후, b계정으로 들어가서

IMAGES > AMIs > Private images 에 보면

a계정에서 공유해준 이미지가 보인다.

Actions > Launch 해서, 새로운 instance를 만든다.

(Volume 도 자동으로 만들어 진다)


* ELASTIC BLOCK STORE > Volumes > Actions > Create Snapshot 한다.

* ELASTIC BLOCK STORE > Snapshots > Actions > Create Image 한다.

* 끝

* a 계정으로 들어가서, 아까 공유한 것을 지워도 된다.

반응형
반응형

리눅스 시간 동기화

아마존 서비스가 글로벌 서비스이다보니 date 명령어를 사용했을 때 UTC 시간을 사용한다.

하지만 국내용 서비스를 하기 위해서는 아무래도 KST 시간으로 설정하는 것이 좋을 것이다.

 

구글링을 해보면 몇 가지 방법을 찾을 수 있는데,  그중 한가지가 다음과 같은 명령어를 사용하는 방법이다.

 

# tzselect 

위 명령어를 입력하면 간단하게 몇 가지 물음으로 KST 설정 방법에 대해서 나온다.

하지만 tzselect에서 마지막 알려주는 설정 방식으로 .profile 설정을 알려주는데, 그렇게 하면 현재 유저(ec2-user)에만 이가 적용된다.

(sudo date 명령어를 입력해보면 그대로 UTC이다.)

 

전체 서버에서, 다시 말해 모든 사용자가 KST를 사용하기 위해서는 아래 명령어가 필요하다

 

# sudo mv /etc/localtime /etc/localtime.old

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

1. 기존 /etc/localtime 백업

2. Asia/Seoul 파일을 /etc/localtime으로 연결

반응형
반응형

아마존에서 특별한 설정변경없이 EC2 인스턴스를 생성하면 기본적으로 8G의 디스크용량을 가지게 된다. 이렇게 사용하다가 용량이 부족하다 싶으면 사용하던 데이터를 손대지 않고 스토리지의 공간을 확장할 수 있다.

기본적인 개념은 아래와 같다.





  1. EC2를 정지시킨다.
  2. 연결되어 있는 EBS를 detach 시킨다.
  3. detach 된 EBS volume의 snapshot을 생성한다.
  4. 생성된 snapshot으로 새로운 EBS volume을 생성한다. 이때 생성되는 EBS volume의 크기를 원하는 사이즈로 지정한다.
  5. EC2에 새로 생성된 EBS volume을 attach 한다.
  6. EC2 인스턴스에 접속해서 디스크크기를 재설정한다.


대략 위와 같은 과정이라고 보면 된다.

쉽게 설명하면 서버에서 기존의 저장장치를 때어내고 새로만든 큰 저장장치를 붙이는 과정이다. 이과정에서 새로만든 저장장치에 기존 데이터가 그대로 들어있도록 만드는 것이 포인트라고 할 수 있다.


아마존 웹 서비스 콘솔에서 위와 같은 과정으로 EC2 인스턴스의 스토리지를 확장할 수 있다. 

위 그림만 이해하면 콘솔의 메뉴를 열어 보고 어렵지 않게 진행할 수 있다. 이럴 경우 6번 과정만 주의 해서 봐도 된다. 처음에 5번까지만 하고 인스턴스 공간이이 확장이 안되어 있어서 해맸었다.


설치된 OS: centOS 6.5


상세과정을 살펴보자.



1. EC2를 정지시킨다.

아마존 EC2콘솔 INSTANCES -> instances 메뉴에서 실행하려는 인스턴스 선택후 마우스오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 뜬다.

여기서 Stop을 실행한다.





2. 연결되어 있는 EBS를 detach 시킨다.

아마존 EC2콘솔 ELASTIC BLOCK STORE -> Volumes 메뉴에서 정지시킨 인스턴스의 볼륨을 찾아서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

여기서 Detach Volume을 선택한다. 참고로 볼륨의 상태가 in-use  상태여야만 Detach Volume을 실행할 수 있다.





만약 확장하려는 인스턴스가 사용중인 볼륨이 어떤것인지 확인하려면 Volume 목록에서 Attachement Information 항목을 보면 된다. 이곳에 인스턴스의 이름과 Id가 표시된다.



그리고 위 그림의 오른쪽 끝에 적힌 /dev/sda1.. 과 같은 경로를 기억해두거나 적어둔다. 새로 Attach할때 이 경로를 입력해야 한다.




3. detach 된 EBS volume의 snapshot을 생성한다.

정지된 볼륨에서 다시 마우스 오른쪽 버튼을 눌려서 아래와 같이 Create Snapshot을 선택한다.

(인스턴스 실행중에도 스냅샷을 만들 수 잇으나 disk IO가 있는중일 수 있기때문에 문제가 될 수 있을 것으로 판단하고 인트턴스 정지후에 스냅샷을 생성하였다.)





4. 생성된 snapshot으로 새로운 EBS volume을 생성한다. 이때 생성되는 EBS volume의 크기를 원하는 사이즈로 지정한다.

아마존 EC2콘솔 ELASTIC BLOCK STORE -> Snapshots 메뉴에서 방금 생성한 스냅샵을 찾아서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

여기서 Create Volume을 선택한다.



다음으로 볼륨 생성팝업차이 뜨는데 이때 아래와 같이 Size를 확장하려는 사이즈로 지정해준다. 기본값이 현재 사이즈 이므로 방심하면 그냥 넘어가서 크기가 같은 볼륨을 생성해버리게 되니 주의






5. EC2에 새로 생성된 EBS volume을 attach 한다.

새로 생성된 볼륨은 상태가 available 상태로 되어 있다. 여기서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

여기서 Attach Volume을 선택한다.





다음으로 나오는 어태치 팝업에서 아래와 같이 instance를 지정해준다. 최초에 stop 시킨 인스턴스의 아이디나 이름 등을 입력하면 된다.

그리고 Device에서 원래의 볼륨이 마운트되어 있던 경로를 똑같이 적는다. 2번과정에서 /dev/sda1 경로 였다.




6. EC2 인스턴스에 접속해서 디스크크기를 재설정한다.

기본적으로 EC2와 연결된 EBS Volume의 용량을 늘려주면 스토리지 확장이 된다고 하는데 여기까지 진행하고 인스턴스를 재시작한후

막상 디스크 용량을 확인해보면 전혀 늘어나지 않았다.


 

아래와 같이 command 처리로 늘어난 EBS 스토리지 공간을 OS에서 인식 할 수 있게 되었다.




위와 같이 처음에 df -h 로 디스크 공간을 확인해보면 7.9G만 잡혀있는 상태이다.

그러나 fdisk -l로 확인해보면 /dev/xvde 디스크용량이 107.4G 인것이 확인된다.

이상태에서 resize2fs /dev/xvde 명령을 실행해서 파일시스템을 재구축해야 한다. (오래 걸림)

다시 df -h 로 용량을 확인해보면 전체 디스크 용량이 모두 사용가능한 공간이 되었음을 확인 할 수 있다.


저 명령실행전에 몽고 디비가 실행중이었는데 용량 제산정 과정이나 진행후에 프로세스에 전혀 지장이 없었다.

파일 시스템 재구축 작업은 서비스 운영중에도 사용할 수 있을 것으로 판단된다.




스토리지 확장관련 아마존 레퍼런스 문서: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#d0e52667

아마존의 위 문서에서 스토리지 확장하는 방법이 자세하게 나와 있다. (영어)


출처 : http://adrenal.tistory.com/11


반응형

'연구개발 > AWS' 카테고리의 다른 글

[AWS] EC2 Linux(Ubuntu) 계정 추가 & 설정  (0) 2017.06.22
centos lrzsz  (0) 2017.06.12
아마존 클라우드 Ubuntu에서 한글 사용  (0) 2016.05.18
aws. instance. clone. 복제  (0) 2016.02.19
리눅스 시간 동기화  (0) 2015.11.06

+ Recent posts

반응형