mysql workbench를 잘 사용 중 갑자기 좌측 네비게이션의 정보들이 모두 사라졌다.

docker에 mariadb를 올려서 접속했더니 뭔가 안내와 함께 안 나오는 것으로 보고 더 이상 mariadb를 지원 안 하는건가?

하고 무시하고 하는 중에 여러 불편함이 있어 mysql을 올렸는데 여전히 이렇게 나오는 것이었다.

찾아보니 Object Info와 Session 정보가 나오면서 위 쪽의 navigation 관련 정보를 다 날려버린 것이었다.

 

표시한 부분을 자세히 보면

점 모양이 있는 것을 확인할 수 있는데 그 위에 마우스 커서를 가져가면 커서 모양이 바뀌면서 조절할 수 있게 된다.

클릭해서 내리게 되면

기존에 보던 Administration과 Schemas 를 볼 수 있게 된다.

 

왜 이렇게 사람을 당황하게 만드는지는 모르겠지만,

원인을 찾아서 다행이다.

이번에 작업 환경을 Mac 으로 변경하면서

Docker를 이용해서 PHP + SQL Server 환경을 만들어 내야 했다.

문제는

기존에는 아래 링크에서 본대로 작업하여 문제 없이 사용하였는데,

https://docs.microsoft.com/ko-kr/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

참고로 모두 작업 후

pecl install sqlsrv

pecl install pdo_sqlsrv

명령을 실행시켜 줘야 한다.


규모가 큰 프로젝트에 사용하면서 에러가 발생했다.

에러는 아래와 같다.


PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlsrv.so' (tried: /usr/lib64/php/modules/pdo_sqlsrv.so (/usr/lib64/php/modules/pdo_sqlsrv.so: undefined symbol: php_pdo_register_driver), /usr/lib64/php/modules/pdo_sqlsrv.so.so (/usr/lib64/php/modules/pdo_sqlsrv.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0


이거 문제 덕분에 거의 2일은 사용된 것 같다.

결국 방법은

https://github.com/Microsoft/msphpsql/wiki/FAQ#what-is-this-error-php-startup-unable-to-load-dynamic-library-pdo_sqlsrvso

이 링크에 나와 있다.

결론적으로 말하자면
자신이 사용하게 될 곳의 extension 로드되는 곳이 있는데,
그 곳에 직접 extension=pdo_sqlsrv.so 후순위로 시작되도록 하면 되었던 것이다.

나의 경우
echo "extension=pdo_sqlsrv.so" >> /etc/php/7.2/fpm/conf.d/30-pdo_sqlsrv.so

이렇게 해서 해결 하였다.


이번에 회사 작업 PC를 Macbook Pro 로 받게 되었다.

그래서 세팅하던 중 Mac에는 아피치, nginx, php 등을 설치하는 것을 극도로 꺼리다보니(사실 관리를 못한다;;;)

자연스럽게 도커로 작업 환경을 만들게 되었다.

도커 + 포트 를 쉽게 쓸 수 있게 작업한 것을 정리해서 적어본다.


도커의 경우 여러개를 동시에 띄우기 위해서는 포트를 다르게 가져가는 것이 가장 쉬운 방법이며,

동일 포트를 사용하기 원한다면 결국 apache나 nginx를 설치하게 되다보니

다시 돌고 돌게 된다.


예전 스터디 때 pow에 대해서 들은 기억이 있어 기억을 더듬어 설치 해 보았다.

사이트는 http://pow.cx 이다


설치 방법은 간단하다.


curl get.pow.cx | sh

명령어 하나면 끝난다.

(권한 문제로 설치가 되지 않으면 앞에 sudo 를 넣고 설치하면 된다)


그리고 도메인과 포트를 설정하면 된다.

만일 도메인을 aaa 로 하고 싶으며, docker의 포트를 8010으로 하였다면

echo 8010 > ~/.pow/aaa

를 하면 끝이난다.

브라우저에 http://aaa.test 를 입력하면 바로 접속이 된다.


그리고 또한 xip.io를 이용하게 되면

aaa.192.168.0.xx.xip.io

이렇게 입력하면 동일 네트워크 상에 있는 다른 사용자도 접근이 가능하게 된다.


ps. pow를 설치하게 되면 localhost로 접근(80포트)하게 되면 동작하지 않게 된다.

이 점 주의해서 사용하면 된다.


pow 삭제는

curl get.pow.cx/uninstall.sh | sh

이다.

윈도우에서 React Native 환경을 구축하던 중에

아주 제대로 삽질을 했다.

웹 개발 관련해서는 대부분 docker에서 작업 중인데,

hyper-v 환경을 이용 중이었다.

문제는 hyper-v 환경에서는 AVD를 사용할 수가 없다.......

hyper-v를 끄고 설정을 했었긴 하지만,

기존 개발환경을 버리기는 여러모로 어렵다보니 결국 hyper-v에서 할 수 있도록 환경을 꾸민다고 제대로 삽질을 하게 된 것이다.

삽질한 내용중 핵심은 나중에 적겠지만, PATH에 platform-tools와 tools를 추가하는 것었다.


참고로 구축하는 방법은 아래 동영상을 참조하거나(안드로이드 스튜디오에서 VS Android Emulator 사용하는 방법이다.)

https://www.youtube.com/watch?v=PbeyGCtdtl8&t=17s

문서를 참조해도 좋다.(물론 영문으로 나온다.)

http://blog.tpcware.com/2017/03/visual-studio-2017-android-emulation/

참고로 문서에서는 최종 인터넷 접속 관련 부분도 있지만, 최근에는 대부분 자동으로 설정된 체 만들어질 때가 많아 생략해도 된다.


react native 설치가 끝나고 안드로이드 스튜디오 설치도 끝나 가상에뮬레이터 부분만 하면 되는 것을 전제로 설명한다.

그 외 설치 방법은 공식 문서에 자세히 나와 있다.

https://facebook.github.io/react-native/docs/getting-started.html )


첫 째로 할 일은 안드로이드 스튜디오에서 Visual Studio Android Emulator를 사용할 수 있게 하는 것이다.


일단 Visual Studio Android Emulator를 설치한다.

다행히도 Android Emulator 설치만 할 수 있는 파일을 제공한다.(VS를 다 설치하지 않아도 된다.)

https://www.visualstudio.com/ko/vs/msft-android-emulator/

에서 설치파일을 다운 받아 설치한다.



안드로이드 에뮬레이터를 실행시킨다.



그리고 마쉬멜로 기기를 선택해 추가한다.


(추가 후에는 권한이 필요하다며 로그아웃 후 로그인 하는 것을 요구한다.)



안드로이드 스튜디오를 실행한다.

File > Settings로 이동한다.



Tools의 External Tools로 이동한다.

+버튼을 클릭하여 추가한다.



Name : VS Emulator 5.7 Mashmallow(원하는 데로)

Description : Quick Launch(원하는데로)

Program : C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatorcmd.exe

Arguments : /sku:Android launch /id:4B675905-D130-4929-91C8-FC62E9C03A24


프로그램 등록



Arguments에 넣을 값은 Command 창에서 확인을 해야한다.

cmd.exe를 실행하여 아래의 명령을 실행하면,

기기 리스트가 나오며 ID 가 필요하다.

emulatorcmd.exe /sku:Android list /type:device


아래의 ID가 필요하다.



이제 테스트를 해보면 잘 시작되는 것을 확인할 수 있다.

성능은 확실히 AVD보다 나은 것 같다.



이제 안드로이드 스튜디오에서 에뮬레이터로서 인식하도록 작업을 해줘야 한다.


이제 에뮬레이터를 VS Emulator를 사용하기 위해 추가 설정을 해준다.

Run > Edit Configurations를 실행하고


아래와 같이 Use same device for future launches를 체크해준다.



이제 Run을 실행해 정상적으로 Emulator를 사용할 수 있는지 본다.

그런데 원래대로면 Run을 할 경우 기기가 보여야 하는데 보이지 않는다.

그 이유는 SDK 경로가 정상인식을 못하게 되어 그렇게 된다.

참조 : https://stackoverflow.com/questions/31763470/android-studio-cannot-find-the-visual-studio-emulator

실행창에서 (윈도우키 + Q) regedit.exe를 실행시킨다.


HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

이 위치로 이동한다.


Android SDK Tools 라는 키를 만들어 준다.

그리고 Path 라는 Value를 추가하고

값은 C:\Users\유저명\AppData\Local\Android\Sdk

으로 입력한다.(사용자에 따라 중간 유저명이 다를 수 있다.)


입력을 모두 했으면 에뮬레이터를 재시작 한다.


다시 Run을 하면 에뮬레이터를 선택하영 사용할 수 있는 것을 확인할 수 있다.

물론 화면은 정상적으로 나오지 않는다.



마지막으로 SDK에 있는 툴들의 패스를 어디서든 쓸 수 있도록 해줘야 한다.


이제 react native 프로젝트를 한 번 동작 시켜 본다.

에뮬레이터를 실행 시키고 react-native run-android를 하게 되면

뭔가 진행은 되지만 이상한 화면이 나오게 되거나,

인스톨을 실패하게 된다.


이 부분은 아래 문서를 통해 최종 해결을 할 수 있었다.

https://stackoverflow.com/questions/46516595/how-to-setup-an-react-native-environment-in-windows-10-with-hyper-v-enabled


문서 중간에 보면 PATH에 추가할 것들을 알려준다.


PATH 추가는 제어판 > 시스템 및 보안 > 시스템 에서 시스템 고급 설정을 클릭한다.

그리고 환경 변수를 클릭한다.

Path를 선택 후 편집을 클릭한다.

새로 만들기를 클릭하여 폴더 경로를 추가한다.

C:\Users\유저명\AppData\Local\Android\Sdk\tools

C:\Users\유저명\AppData\Local\Android\Sdk\platform-tools


이제 에뮬레이터를 다시 실행 시키고 react-native run-android를 하게 되면 정상적으로 동작하는 것을 확인할 수 있다.



꽤 험난한 삽질이긴 했는데

이래나 저래나 가능한 방법이 있어 천만 다행이었다.




아래는 혹시라도 동일한 고생을 한 사람이 있으면 보고 찾아올 수 있게 하려고 추가한 글씨다.

(무시해도 좋다.)

React Native Visual Studio Android Emulator

VS Android Emulator

Hyper-V React Native

Hyper-V Android Emulator React Native

AWS의 Lightsail에서 서버를 생성할 경우

Wordpress 를 선택하게 되면 간단하게 Wordpress를 설치하게 된다.

하지만, 서버 설치 후 순수하게 Wordpress만 사용하기에는 조금 아쉬운 감이 있다보니,

Nginx(bitnami)를 설치 후 Wordpress도 사용 가능하게 하는 방법을 사용해 서버를 구성한 적이 있다.

이 때 이래저래 삽질한 것이 있어서 정리해서 올려본다.

참고로 이 내용은 bitnami 문서로 가이드하고 있다.(물론 영어이다.)

https://docs.bitnami.com/virtual-machine/how-to/install-wordpress-nginx/


Nginx를 이용해 서버를 생성 후 접속한 후 진행한다.

참고로 bitnami에서 새 페이지 관리는 대부분 /opt/bitnami/apps에서 하며,

서버 관리에 대한 부분은 /opt/bitnami/ 폴더에 있다.


bitnami의 demo를 apps 폴더에 복사한다.

sudo cp -r /opt/bitnami/docs/demo /opt/bitnami/apps/wordpress


복사한 폴더에서 예제 사이트 내용을 삭제한다.

sudo rm -rf /opt/bitnami/apps/wordpress/htdocs/


그리고 wordpress를 다운받아 서버에 저장한다.(wget을 이용할 경우 한글로 변경해야하는 번거로움이 있기 때문에 다운받아 설치함)

~/temp에 워드프레스를 저장하여 진행한다.


파일 압축을 푼다.

sudo tar zxvf ~/temp/wordpress-4.9.4-ko_KR.tar.gz -C /opt/bitnami/apps/wordpress/


압축푼 파일을 기존 htdocs 폴더명으로 변경한다.

sudo mv /opt/bitnami/apps/wordpress/wordpress/ /opt/bitnami/apps/wordpress/htdocs/


그리고 권한을 변경해 준다. (추후 테마 업로드 등을 위해서)


sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/


sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;

sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;


wordpress의 config 파일에 직접 업로드 방식이 가능하도록 코드를 추가한다.

sudo echo "define ( 'FS_METHOD', 'direct' );" >> /opt/bitnami/apps/wordpress/htdocs/wp-config.php


최초 접속으로 설정을 변경할 수 있도록 하기 위해 아래 명령을 실행한다.

sudo chmod 640 wp-config.php /opt/bitnami/apps/wordpress/htdocs/wp-config.php

sudo chown bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/wp-config.php


demo에 사용된 코드에서 demo 명칭을 wordpress로 변경한다.

sudo sed -i 's/demo/wordpress/g' /opt/bitnami/apps/wordpress/conf/nginx-prefix.conf

sudo sed -i 's/demo/wordpress/g' /opt/bitnami/apps/wordpress/conf/nginx-vhosts.conf


마지막으로 설정된 값을 적용한다.

적용할 파일명은 /opt/bitnami/nginx/conf/bitnami/bitnami-apps-prefix.conf 이며,

이 파일에 추가할 코드는 아래와 같다.

include "/opt/bitnami/apps/wordpress/conf/nginx-prefix.conf";


그리고, wordpress의 경우 rewirte가 적용이 되어야 하므로,

/opt/bitnami/apps/wordpress/conf/nginx-app.conf 파일에

아래 코드를 추가한다.

  if (!-e $request_filename)

  {

   rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last;

  }


코드를 넣을 위치를 모를 경우도 있어 전체코드를 아래 적는다.


    index index.php index.html index.htm;


    if (!-e $request_filename)

    {

        rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last;

    }


    location ~ \.php$ {

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_read_timeout 300;

    fastcgi_pass unix:/opt/bitnami/php/var/run/www.sock;

    fastcgi_index index.php;

    fastcgi_param  SCRIPT_FILENAME $request_filename;

    include fastcgi_params;


워드프레스 운영이 시작된 후 고유주로를 글 이름으로 했을 때 문제가 생길 경우에는

rewrite ^/wordpress/(.+)$ /wordpress/index.php?q=$1 last;


아래에 아래 코드를 추가하면 된다.

rewrite ^(.+)$ /index.php?q=$1 last;



이제 DB를 생성한다.

DB 생성은 mysql 명령어로 mysql 서버에 접속해 진행한다.


mysql -u root -p

를 입력하고 서버 생성시 확인한 비밀번호를 입력한다.

(비밀번호는 ~/bitnami_application_password 에서 확인 가능하다.)


wordpress DB 생성

create database bitnami_wordpress;


권한을 준다

grant all privileges on bitnami_wordpress.* to '계정명'@'localhost' identified by '비밀번호';

여기서 계정명은 추후 워드프레스만들 때 DB 계정명으로 사용된다.


DB 설정이 끝났으므로 DB 접속을 끝낸다.

exit;



마지막으로 nginx 설정을 한다.

nginx의 업로드 용량을 올려준다.

/opt/bitnami/nginx/conf/nginx.conf 파일에서

아래 코드를 추가한다.

client_max_body_size 20m;

더 큰 용량을 원할 경우 더 큰 값을 입력한다. m은 MB(메가바이트)를 의미한다.


추가할 위치를 포함해 적는다.


http {

    include       mime.types;

    default_type  application/octet-stream;


    client_max_body_size 20m;


    client_body_temp_path  "/opt/bitnami/nginx/tmp/client_body" 1 2;



이제 nginx를 재시작 하면 된다.

sudo /opt/bitnami/ctlscript.sh restart nginx



이제 http://서버IP/wordpress 에 접속한다.

나머지 세팅 값을 입력한다.


Database Name: bitnami_wordpress

User Name: 계정명

Password:  비밀번호

Database Host: localhost

Table Prefix: wp_


나머지 워드프레스 설정을 하고 마치게 된다.

AWS를 이용해서 VPS를 사용할 수 있다.

사실 AWS가 Amazon Lightsail을 시작한 의도가 궁금하긴 하다.


AWS를 이용해서 VPS를 할 경우에 대한 장점은

결론적으로는 1가지이다.

크게 뒤통수 칠 일 없는 서비스 보장 정도?

암튼 AWS에서 Lightsail을 이용하는 방법을 정리한다.


일단 AWS를 가입했다는 것을 가정하고 시작한다.


AWS 로그인 후 서비스 버튼을 누르게 되면

가장 첫번째로 나타난다.



컴퓨팅 -> Lightsail 을 클릭하면 된다.

Lightsail은 대시보드를 따로 제공한다.



현재 이것저것 코딩 겸 테스트용으로 올라가 있는 mysql 서비스를 볼 수 있다.

가려진 부분은 서버 주소이다.


서버를 만들 때는 우측의 인스턴스 생성 버튼을 클릭한다.


인스턴스 생성 버튼을 클릭하면

서버를 생성할 수 있게 되는데,

우선 첫번째로 지역을 선택한다.


물론 일본이 한국에서 가장 가깝고 속도가 가장 잘 나오기 때문에 일본으로 선택된(한 번 선택하면 다음에는 동일한 곳이 우선 선택되어 있다.) 것이다.

다른 위치도 설정이 가능하다.



그리고 어떤 OS, 어떤 App을 이용하게 될 것인지 선택을 한다.

기본적으로 리눅스를 제공하며,

이에 맞춰 사용 가능한 App들을 볼 수 있다.

이 App들은 binami를 이용해 자동 설치가 된다.


사족을 달자면, 일단 Nginx를 사용하는 중인데 실사해도 될 수준이긴 하다.

실제 상업용 서비스로 사용하기는 애매하긴 하지만,

간단한 커뮤니티, 홈페이지 등을 만들어 사용하기엔 충분해 보인다.

물론 상업용으로 쓰려면 AWS 자체를 사용하는 것이 훨씬 낫긴 하다.


또한 OS만 설치도 가능하다.


그리고 윈도우 서버도 사용이 가능하다.


단, 이 경우 뒤에 적을 것인데, 비용이 약 2배 가량 들게 된다.


마지막으로 성능을 선택한다.

물론 성능에 따라 가격은 바뀌게 된다.

윈도우의 경우 가격이 다르게 표시가 된다.




마지막으로 생성 버튼을 클릭하면 인스턴스가 만들어진다.


생성이 시작되면

아래와 같이 대시보드 초기 화면으로 이동하며 만들어지는 과정을 볼 수 있다.


접속하는 방법은 ssh 툴을 이용해 서버 주소로 접속하면 된다.


AWS는 특이하게도 인증서를 통한 접속만 허용하기 때문에,

ssh 인증서가 있어야 한다.


만일 서버 생성 중 대략적인 것을 알아서 key를 등록한 경우에는 그 key를 사용하면 되고,

따로 key를 등록하지 않은 경우

기본적으로 ssh 키를 하나 제공한다.


우상단의 계정을 클릭하고 계정으로 이동하면,


개인 계정 정보로 이동이 되는데,

SSH키 탭으로 가게 되면 key를 확인할 수 있다.


이제 ssh를 해당 키를 이용해 접속하면 된다.





티스토리에 반응형 스킨이 기본으로 포함이 된 이후에 블로그를 만든 후

크게 신경 안 쓰고 지내고 있었는데,

최근 태그매니저로 애널리틱스 추적코드를 통합하고 확인하는데 문제가 있는 것을 확인하였다.

추적코드가 동작 함에도 불구하고 모바일로 접속했을 때 아무런 사용자가 표시가 되지 않았다.



그래서 여러 글들을 찾아본 결과 모바일 페이지는 모바일 페이지 사용하지 않는 것을 해줘야 하는데,

기존 방법은 스킨에서 모바일 사용 안함을 적용하는 것이었다.

그런데 그 위치에 사용 안함 버튼이 없어졌다.


현재의 위치는


꾸미기 > 모바일 로 바뀌었다.


해당 위치로 가서


모바일웹 '자동연결을 사용하지 않습니다.' 로 변경하면 된다.


반응형에서 이 것이 문제가 되는 이유는 내가 수정한 내역이 모바일웹에서는 반영이 되지 않는 부분들이 있다.

게다가 스킨 편집에서조차 작업이 불가능하다.

그러니 반응형을 쓰는 경우 모바일 페이지로 직접 접근하는 것은 막아줄 필요가 있다.


현재는 제대로 나오는 것을 확인하였다.

docker에서 ubuntu를 사용해서 개발을 하는데,

수시로 겪는 문제가 있었다.

그 문제는

Temporary failure resolving 'archive.ubuntu.com'

이런 에러가 발생하며 업데이트가 되지 않는 문제였다.


17버전을 사용할 때는 다음 버전을 쓰면서 해결했는데,

다시 16.04로 사용하자 문제가 발생하였다.


여러가지 방법을 찾아봤으나 해결되는 경우를 한 번도 보지 못하였는데,

한 stackoverflow에서 매우 명쾌한 방법을 찾게 되었다.


링크 : https://stackoverflow.com/questions/37706635/in-docker-apt-get-install-fails-with-failed-to-fetch-http-archive-ubuntu-com


결론을 적자면

build할 때 우분투가 기존 캐싱된 것을 참조하면서 문제가 된 것이다.

그래서 docker를 잘 못쓰는 나의 경우 기존 우분투 이미지를 모조리 삭제했다.

그랬더니 바로 업데이트가 문제없이 되었다.


혹시라도 이런 문제를 겪는 사람은

과감하게 ubuntu 기존 이미지를 삭제하거나

캐싱 없이 빌드를 한 번 하는 방법을 추천한다.

PHP composer 를 윈도우에 설치할 때는

인스톨러를 제공한다.

https://getcomposer.org/download/


그런데 설치할 때 문제가 발생한다.


VCRUNTIME140.dll이(가) 없어 코드 실행을 진행할 수 없습니다.

프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다.



라고 나온다.


해당 문제는

C++ Redistributable for Visual Studio 2015 RC

이 것이 설치가 되면 해결이 된다.

아래의 링크로 이동해서 프로그램을 다운 받아 설치한다.

https://www.microsoft.com/en-us/download/details.aspx?id=52685



그럼 문제 없이 설치가 되는 것을 확인할 수 있다.





IIS 10 에서 PHP를 써야 하는 사람들도 있을 것이다.

나도 업무에서 어쩔 수 없이 IIS와 PHP를 같이 사용해야만 한다.

그래서 IIS 설치 후 PHP manager를 설치할 때면 항상 귀찮은 작업을 해야만 했다.

일반적으로 웹 플랫폼 설치 관리자로 설치하면 아래의 메세지가 나오게 된다.


그리고 PHP manager를 받아서 설치하면(v1.2) 아래와 같은 에러가 발생한다.


IIS 버전 때문에 PHP manager 설치가 되지 않다보니 Register를 건드려야 하는데


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters

여기에서

MajorVersion을 건드려야만 했다.

정말 귀찮은 작업이 아닐 수 없다.





근데 굳이 이렇게 할 필요가 없었다.

IIS 10용으로 PHP manager가 있기 때문이다.


https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/php-manager-for-iis-on-windows-10/33ef32f0-6a86-4803-abc1-6de81110f9a8?auth=1


여기에 보면 IIS 10 버전용을 확인하라며 링크를 하나 준다.


바로 이것이다.

https://phpmanager.codeplex.com/workitem/2653



가장 최근 링크는 아래와 같다.(어차피 같은 버전이다..)

https://phpmanager.codeplex.com/workitem/2734


PHP Manager 1.4 for IIS 10을 클릭하면 다운로드 페이지로 이동한다.



설치를 해보면 이상 없이 설치 화면이 나오는 것을 볼 수 있다.




+ Recent posts