목적: 로컬 컴퓨터와 원격 컴퓨터 간의 보안 파일 전송 / 기본 파일 관리자, 파일 동기화 기능
비슷한 FTP 클라이언트SW 친구들: SolarWinds, FileZilla, Putty
설정
로그인을 하면 아래와 같이 GUI 환경에서 접근 가능하다. 여기서 동그라미(putty)를 클릭하면 원격 컴퓨터에서 cmd를 진행하는 것처럼 할 수 있다.
**nginx
출처:** https://icarus8050.tistory.com/57웹서버
Nginx는 간단하게 말씀드리자면 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다.
Apache와 같은 웹서버는 클라이언트로부터 받은 요청을 처리할 때 새로운 프로세스 또는 쓰레드를 생성
하여 처리합니다. 요청마다 쓰레드가 생성되므로 접속하는 사용자가 많으면 그만큼 쓰레드가 생성되어 CPU와 메모리 자원의 소모가 커집니다.
Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있습니다. 위의 그림에서 보이듯이 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기
때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능합니다. 이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있습니다.
**설치 과정**
Nginx 설치
설치가 됬다면 인바운드 규칙으로 80번을 열어주고 원격 IP 주소로 들어가면 nginx 설치 확인
Mysql 설치
PHP 설치
**nginx와 php 간의 연동**
sudo vi /var/www/html index.php 만들기
sudo vi /etc/nginx/sites-available/default
접속을 하면 서버, root 디렉토리 등을 볼 수 있다. Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
해결 시도
systemctl status nginx.service 진행
journalctl -xe
sudo nginx -t 를 통해 오류를 확인할 수 있다. ⇒ **해결**
**사용자 계정**
sudo mysql
# user_name에는 원하는 계정 이름을 입력한다. @ 뒤의 %는 모든 호스트에서의 접속을 허용한다.
mysql > CREATE USER 'user_name'@'%' IDENTIFIED BY 'password';
# 계정을 생성한 뒤 바로 권한 설정을 한다. *.*는 모든 데이터베이스와 테이블에 대한 접근 권한을 주는 것이다.
mysql > GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' WITH GRANT OPTION;
# 권한 설정 후 테이블을 갱신한다.
mysql > FLUSH PRIVILEGES;
# 추가) root 계정의 비밀번호를 바꾸거나 재설정하려면 아래와 같이 한다. 다른 계정도 마찬가지로 바꿀 수 있다.
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
# 생성된 계정을 확인한다.
mysql > SELECT user, host, plugin FROM mysql.user;
**방화벽 설정**
$ sudo ufw allow 3306
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
$ sudo service mysql restart
vi /etc/mysql/mysql.conf.d/mysqld.cnf 하는 과정에서 swp 파일로 인해 생긴 문제
:w !sudo tee % > /dev/null
**phpMyAdmin**
은 웹으로 MySQL 서버에 접속해서 사용할 수 있는 툴이다. 웹 서버인 Nginx로 MySQL을 제어할 수 있으나 보안상의 문제가 생길 수 있으므로 HTTP에서는 절대 구동하면 X
$ sudo apt update
$ sudo apt install phpmyadmin
위와 같은 명령어를 실행하면 패키지 설치가 진행된다.
패키지 설치하면서 위와 같은 두 가지 질문이 나타난다.
phpMyAdmin이 설치된 위치는 현재 웹 브라우저에서 접근할 수 없기에 심볼릭 링크(바로가기)를 설정해 웹 브라우저에서 Nginx를 통해 phpMyAdmin으로 접근할 수 있게 한다.
// nginx의 설정 디렉토리 접근
$ sudo vi /etc/nginx/sites-available/default
// phpinfo.php를 입력한다.
다만, index.nginx-debian.html보다 앞에 phpinfo.php를 입력하면 aws 인스턴스 ip로 접속할 때 default 값으로 phpinfo.php가 연결되므로 주의 해야 한다.
// nginx 웹서버가 phpmyadmin을 정상적으로 찾고 제공하기 위해 설치 파일에서 Nginx 문서 루트 디렉터리로 심볼릭 링크를 만들어준다
$ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
// nginx 서버를 재시작
$ sudo service nginx restart
이미 만들어놓은 사용자 계정으로 로그인 하면 아래와 같은 화면이 나타난다.