19. 4. 8.

GCP PHP + MariaDB + Nginx + vsftpd 구성

1. 프로젝트 생성
- 프로젝트명 : server
- 프로젝트 선택 : 전체 -> server

2. VM인스턴스 생성
- 메뉴 -> VM인스턴스 -> 만들기
- 이름 : mysite
- 머신유형 : 초소형(공유 vCPU 1 개)
- 부팅 디스크 : 변경 -> OS이미지 -> CentOS 7
- http 트래픽허용 체크
- 만들기

3. VM 인스턴스 목록
- SSH 클릭(인증되며 까만창 뜸)

4. 프롬프트 창내의 명령실행
- 업데이트 및 다운로드,압축풀기 설치
sudo yum update -y
sudo yum install -y wget unzip
- FTP 용 계정생성 및 비밀번호 생성
sudo useradd myid
sudo passwd myid
- 사이트 경로 생성 및 권한 추가
sudo mkdir /home/myid/mysite
sudo chmod +x /home/myid/mysite
- PHP + 모듈 설치
sudo yum install -y epel-release
sudo rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum --enablerepo=remi update remi-release
sudo yum --enablerepo=remi-php73 install -y php php-fpm php-mysql php-gd php-common php-cli php-json php-opcache php-devel php-imagick php-mbstring php-mcrypt php-mysqlnd php-pear php-xml php-xmlrpc php-soap php-dba php-bcmath php-pdo php-ldap
- vi 편집기("insert 키" : 편집 및 수정, "Escape 키" : 보기모드, ":wq" : 저장, ":q" : 저장하지않고 닫기, ":/검색어" : 검색어 검색 )
- 편집기로 PHP 설정파일(/etc/php.ini) 설정 명령
sudo vi /etc/php.ini
- php.ini 변경내용(검색해서 해당 값만 변경)
cgi.fix_pathinfo = 0
allow_url_fopen = Off
expose_php = Off
display_errors = Off
- 편집기로 php-fpm 설정파일(/etc/php-fpm.d/www.conf) 수정
sudo vi /etc/php-fpm.d/www.conf
- www.conf 변경내용 1. apache를 myid로 교체(apache로 검색)
user = myid
group = myid
- www.conf 변경내용 2. 주석제거(nobody로 검색)
listen.owner = nobody
listen.group = nobody
- Nginx 설정파일 생성
sudo vi /etc/yum.repos.d/nginx.repo
- nginx.repo 내용 입력(신규생성)
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
- Nginx 설치
sudo yum install -y nginx
- Nginx 설정파일 수정
sudo vi /etc/nginx/nginx.conf
- Nginx 설정파일 수정내용(http{}안에 추가)
server_tokens off;
- 방화벽 설정(http,https,ftp,database(MariaDB))
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
- Nginx 기본 설정 삭제
sudo rm /etc/nginx/conf.d/default.conf
- Nginx 기본 설정 만들기
sudo vi /etc/nginx/conf.d/default.conf
- Nginx 기본 설정 만들기 내용(아래내용을 복사, 붙여넣기)
server {
    listen       80;
    server_name  localhost;
    charset utf-8;
    root   /home/myid/mysite;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        index index.php index.html index.htm;
    }
    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /home/myid/mysite;
    }
    location ~ \.php(?:$|/) {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
- php-fpm, nginx 재시작
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl reload nginx
- ftp 프로그램인 vsftpd 설치
sudo yum -y install vsftpd
- vsftpd 설정파일 삭제
sudo rm /etc/vsftpd/vsftpd.conf
- vsftpd 설정파일 생성
sudo vi /etc/vsftpd/vsftpd.conf
- vsftpd 설정파일 내용입력
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=yes
pasv_enable=Yes
pasv_max_port=40000
pasv_min_port=40000
- SELinux 권한에서 차단되는 경우가 있으므로 처리
sudo setenforce 0
- SELinux 권한에서 차단되는 경우가 있으므로 설정도 편집
sudo vi /etc/selinux/config
- SELinux 권한에서 차단되는 경우가 있으므로 설정도 편집(내용수정 disabled)
SELINUX=disabled
- vsftpd 설정된 서비스로 재시작
sudo systemctl enable vsftpd
sudo systemctl restart vsftpd
- ftp 불가한 아이디 목록1에서 편집(root 제거)
sudo vi /etc/vsftpd/ftpusers
- ftp 불가한 아이디 목록2에서 편집(root 제거)
sudo vi /etc/vsftpd/user_list
- ftp 접속권한 편집
sudo chown myid:myid /home/myid/mysite/
sudo chmod 555 /home/myid
sudo chmod 777 /home/myid/mysite
- ftp 아이디 myid 접근권한 편집
sudo vi /etc/passwd
- ftp 아이디 myid 접근권한 편집맨아래 추가
myid:x:1001:1002::/home/myid/mysite:
myid:x:1001:1002::/home/myid/mysite:/bin/bash
- MariaDB 설정 추가
sudo vi /etc/yum.repos.d/MariaDB.repo
- MariaDB 설정 추가(새로생성)
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
- MariaDB 설치 및 서비스 추가
sudo yum install -y MariaDB-client MariaDB-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
- MariaDB root 루트 비밀번호 생성 및 설정(비밀번호,접속권한,test테이블등)
sudo mysql_secure_installation
- 그냥 순서대로함...
password
password
y
n
y
y
- MariaDB 재시작
sudo systemctl restart mariadb
- MariaDB 접속
sudo mysql -u root -p
- MariaDB 패스워드 로그인후 원격접속 가능하도록 root에 권한 부여, 비밀번호 다시 부여 후 접속 종료
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit
5. Google Cloud Platform 메뉴에서 VPC네트워크 방화벽설정
- Google Cloud Platform 메뉴 -> 방화벽규칙 -> 만들기
- 이름 : mysite
- 대상 : 네트워크의 모든인스턴스
- 소스 IP 범위: 0.0.0.0/0
- 프로토콜 및 포트 : tcp 체크 -> 20-21,3306,40000
- 만들기
6. PHP MariaDB 접속 테스트 - index.php 생성
sudo vi /home/myid/mysite/index.php
- index.php 내용
<?php
$conn=mysqli_connect('127.0.0.1', 'root', 'password');
if($conn) 
  echo "db연결성공";
else
  echo "db연결 실패"; 
?>
7. ssh 옆에 외부 아이피 클릭 및 확인
8. ftp는 fileziller 이용하거나 크롬 브라우저로 접속확인가능

댓글 없음:

댓글 쓰기