19. 12. 5.

GCP PHP + MariaDB + Nginx + vsftpd 구성

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

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

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

4. 프롬프트 창내의 명령실행
- 관리자 접속
sudo su -
- 업데이트 및 다운로드,압축풀기 설치
yum update -y
yum install -y wget unzip
- FTP 용 계정생성 및 비밀번호 생성
useradd myid
passwd myid
- 사이트 경로 생성 및 권한 추가
mkdir /home/myid/mysite
chmod +x /home/myid/mysite
- PHP + 모듈 설치
dnf install -y dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module list php
dnf module reset php
dnf module install -y php:remi-7.4
dnf 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) 설정 명령
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) 수정
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
- www.conf 변경내용 3. listen 의 /run/php-fpm/www.sock을 127.0.0.1:9000으로 수정
listen = 127.0.0.1:9000
- Nginx 설치
wget http://nginx.org/packages/mainline/centos/8/x86_64/RPMS/nginx-1.17.6-1.el8.ngx.x86_64.rpm
yum localinstall -y nginx-1.17.6-1.el8.ngx.x86_64.rpm
- Nginx 설정파일 수정
vi /etc/nginx/nginx.conf
- Nginx 설정파일 수정내용(http{}안에 추가)
server_tokens off;
- 방화벽 설정(http,https,ftp,database(MariaDB))
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
- Nginx 기본 설정 삭제
rm -f /etc/nginx/conf.d/default.conf
- Nginx 기본 설정 만들기
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 재시작
systemctl start php-fpm nginx
systemctl enable php-fpm nginx
systemctl reload nginx
- ftp 프로그램인 vsftpd 설치
dnf -y install vsftpd
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_orig
grep -v ^# /etc/vsftpd/vsftpd.conf_orig > /etc/vsftpd/vsftpd.conf
- vsftpd 설정파일 삭제
rm -f /etc/vsftpd/vsftpd.conf
- vsftpd 설정파일 생성
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_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
pasv_enable=Yes
pasv_max_port=40000
pasv_min_port=40000
- SELinux 권한에서 차단되는 경우가 있으므로 처리
setenforce 0
- SELinux 권한에서 차단되는 경우가 있으므로 설정도 편집
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- ftp 불가한 아이디 목록1에서 편집(root 제거)
vi /etc/vsftpd/ftpusers
- ftp 불가한 아이디 목록2에서 편집(root 제거)
vi /etc/vsftpd/user_list
- vsftpd 설정된 서비스로 재시작
systemctl start vsftpd
systemctl enable vsftpd
systemctl restart vsftpd
- ftp 접속권한 편집
chown myid:myid /home/myid/
chown myid:myid /home/myid/mysite/
chown nginx:nginx /home/myid/
chown nginx:nginx /home/myid/mysite/
chown -R myid:myid /home/myid/
chmod -Rf 775 /home/myid
- ftp 아이디 myid 접근권한 편집
vi /etc/passwd
- ftp 아이디 myid 접근권한 편집맨아래 추가
myid:x:1001:1002::/home/myid/mysite:/bin/bash
- MariaDB 설정 추가
yum search mariadb
- MariaDB 설치 및 서비스 추가
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
- MariaDB root 루트 비밀번호 생성 및 설정(비밀번호,접속권한,test테이블등)
mysql_secure_installation
- 그냥 순서대로함...
"엔터"
y
password
password
y
n
y
y
- MariaDB 재시작
systemctl restart mariadb
- MariaDB 접속
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 생성
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 이용하거나 크롬 브라우저로 접속확인가능

댓글 없음:

댓글 쓰기