웹서버 | CentOS 7 ( Aapache 2.4.6 + Python3.6 + MariaDB + Php 5~7 )
페이지 정보
작성자 박석영 작성일22-03-28 07:07 조회400회 댓글0건관련링크
본문
일단 업그레이드 권장
#yum update -y
#yum install epel-release -y
#yum install dnf
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install epel-release
sudo yum -y install yum-utils
yum install dnf-utils
###############################################################
## CentOS 7 Package Update
#yum update할 때 kernel은 업데이트제외
vi /etc/yum.conf
[main]
exclude=kernel*
#저장(:wq)
yum -y update
###############################################################
# 파이썬(Python)
###############################################################
rpm -qa | grep mariadb
# 설치된 것이 없다면 아래 한꺼번에 지우기는 실행하지 않아도 된다.
## 설치된 것 한꺼번에 지우기
rpm -qa | grep mariadb >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
# python 2.7.X 버전이 설치된 것을 확인한다.
rpm -qa | grep python
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zlib zlib-devel libffi-devel
yum -y install zip unzip wget mc git net-tools
yum -y install mariadb-devel
yum -y install gcc gcc-c++ python3 python3-devel openssl openssl-devel
python3 -V
pip3 -V
# pip 설치는 가상환경 만들어서 하는 걸 권장하므로 아래 한줄은 주석처리했다.
# pip3 install --upgrade pip
# 현재 Alias 확인
ls -l /bin/python*
ln -s /bin/pip3.6 /bin/pip
# 아래와 같이 수정하지 않으면 yum 설치가 되지 않는다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
##########################################################################
# 방화벽 설정
yum -y install firewalld
# 방화벽 데몬 시작
systemctl start firewalld
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all
#########################################################################
# Databse 접근을 위한 SELinux 설정 변경 체크
# SELinux 상태 확인
sestatus
#SELinux httpd flag 확인 : 네트워크를 통해 Database에 연결할 수 있는 옵션이 꺼져 있음
getsebool -a | grep httpd
# Database 접근을 위한 SELinx 설정 변경
setsebool -P httpd_can_network_connect_db 1
# SELinux 비활성화 하기
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq 로 저장하고 나온다.
################################
##### MariaDB 10.4 버전 설치 #####
################################
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
:wq 로 저장하고 나온다.
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
# mariadb 시작
systemctl start mariadb
# mariadb 상태 확인
service mariadb status
# Maria DB 보안 설정하기
mysql_secure_installation
# root 비밀번호 설정 등 상세 과정은 생략한다. 거의 Y만 누르면 끝난다.
# UTF-8 로 통신하기 위한 서버/클라이언트 설정
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
# MariaDB 재시작
service mariadb restart
# MariaDB 접속하여 적용된 사항 확인
mysql -u root -p
status
show variables like 'c%';
#########################################
####### 실제 적용 예제 ######
#########################################
// DB 생성
create database 디비명 default character set utf8;
use mysql;
create user 계정@localhost identified by '비밀번호';
grant all privileges on 디비명.* to 계정@localhost;
select Host,User,Password from user;
SET PASSWORD FOR '계정'@'localhost' = PASSWORD('비밀번호'); // 변경할 비밀번호
flush privileges;
quit
### 테이블 백업하기 ####
mysqldump -uroot -p --databases pythondb > pythondb.sql
### 테이블 구조만 백업하기 ####
mysqldump -uroot -p --no-data --databases pythondb > pythondb.sql
###################################
##### root 패스워드 분실 복구 #####
###################################
# 서비스 정지
systemctl stop mariadb
# mariadb 안전모드 실행
sudo /usr/bin/mysqld_safe --skip-grant &
# 패스워드 변경
mysql -uroot mysql
update user set password=password('변경할비밀번호') where user='root';
flush privileges;
exit;
#############################################
# PHP 와 Apache 설치
#############################################
## 현재 설치된 PHP 버전 확인
yum list php
yum -y install expat-devel
# 설치 확인 방법1
yum list installed | grep httpd
yum list installed | grep php
# 설치 확인 방법2
rpm -qa | grep httpd
rpm -qa | grep php
## 설치된 것 한꺼번에 지우기
rpm -qa | grep php >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
rpm -qa | grep httpd >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
# yum 삭제 방법 (실제 삭제할 사항이 아니라 주석(#) 처리)
# yum remove -y vsftpd
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum 저장소와 패키지를 관리
yum -y groupinstall "Development tools"
yum -y install epel-release yum-utils
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php54
# yum-config-manager --enable remi-php56 [Install PHP 5.6]
# yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo
yum install php php-openssl
# Install PHP 7.0 on CentOS 7
yum install -y --enablerepo=remi-php70 httpd php php-cli php-common php-devel php-ldap
yum install -y --enablerepo=remi-php70 php-mbstring php-mcrypt php-mysqlnd mod_ssl php-pdo
yum install -y --enablerepo=remi-php70 php-pgsql php-sqlite php-process php-snmp php-soap
yum install -y --enablerepo=remi-php70 php-libxml php-xml php-pear php-gd php-fpm php-dom
yum install -y --enablerepo=remi-php70 php-ssh2 php-xmlreader php-curl php-date php-exif
yum install -y --enablerepo=remi-php70 php-filter php-simplexml php-hash php-iconv php-imagick
yum install -y --enablerepo=remi-php70 php-json php-openssl php-pcre php-posix php-sockets
yum install -y --enablerepo=remi-php70 php-spl php-tokenizer php-zlib php-gmp php-Icinga php-intl
yum install -y --enablerepo=remi-php70 php-pecl-zip zip php-zip php-pspell
yum install -y --enablerepo=remi-php70 wget unzip mc git nmap telnet net-tools
# PHP 버전 확인
php -v
# Apache 버전 확인
httpd -v
# 서비스 활성화(재부팅시 auto start)
systemctl enable httpd
# 서비스 시작
systemctl start httpd
# 서비스 구동 상태 확인
systemctl status httpd
# 서비스 중지
systemctl stop httpd
# 서비스 재시작
systemctl restart httpd
# openssl 버전 확인
openssl version
###################################################
# Apache 환경 설정
###################################################
# Web root 디렉토리 : /var/www/html 기본 설정인데 아래는 home 디렉토리 하단으로 수정했다.
# 보안 설정 부분이 같이 포함되어 있으니 아래와 같이 설정하면 도움된다.
# 더 자세한 사항은 구글링해서 찾아보시라.
## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
<IfModule mime_module>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps
vi /etc/httpd/conf.d/vhost.conf
<Directory "/home/*/public_html">
Options Indexes FollowSymLinks MultiViews
AddType application/x-httpd-php .php
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerAlias test.kr
ServerName www.test.kr
DocumentRoot "/home/test/public_html"
</VirtualHost>
/var/www/html
계정 : 711
폴더 : 755
파일 : 664
vi /etc/php.ini
short_open_tag = On
cgi.fix_pathinfo=0
;PHP 버전 정보 노출 방지(Hide PHP Version Number)
expose_php = Off
post_max_size = 20M ;// 8M 으로 되어 있었음.
upload_max_filesize = 18M ;// 기본 2M 으로 되어 있었음
date.timezone ="Asia/Seoul"
;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제된다.
; 세션 시간은 1시간으로 설정한다.
session.gc_maxlifetime = 3600
# 저장(:wq)하고 나온다.
###############################
# RSA 암호화 통신을 위한 설정
###############################
#리눅스 SSH 에서 RSA 공개키, 개인키 생성방법
mkdir -p /home/rsa/key/
cd /home/rsa/key/
# Private Key 생성
openssl genrsa -out rsa_pri.pem 1024
# Public Key 생성
openssl rsa -pubout -in rsa_pri.pem -out rsa_pub.pem
# RSA javascript 암호화 PHP 복호화 예제는 구글링으로 찾아보시라.
# RSA kotlin 암호화 PHP 복호화 예제는 구글링으로 찾아서 해결하시라.
# 열린포트 확인
yum -y install net-tools
netstat -nltp
### 시간 동기화
yum -y install rdate
crontab -e
00 00 * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
useradd [계정]
passwd []
systemctl start httpd
#yum update -y
#yum install epel-release -y
#yum install dnf
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install epel-release
sudo yum -y install yum-utils
yum install dnf-utils
###############################################################
## CentOS 7 Package Update
#yum update할 때 kernel은 업데이트제외
vi /etc/yum.conf
[main]
exclude=kernel*
#저장(:wq)
yum -y update
###############################################################
# 파이썬(Python)
###############################################################
rpm -qa | grep mariadb
# 설치된 것이 없다면 아래 한꺼번에 지우기는 실행하지 않아도 된다.
## 설치된 것 한꺼번에 지우기
rpm -qa | grep mariadb >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
# python 2.7.X 버전이 설치된 것을 확인한다.
rpm -qa | grep python
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zlib zlib-devel libffi-devel
yum -y install zip unzip wget mc git net-tools
yum -y install mariadb-devel
yum -y install gcc gcc-c++ python3 python3-devel openssl openssl-devel
python3 -V
pip3 -V
# pip 설치는 가상환경 만들어서 하는 걸 권장하므로 아래 한줄은 주석처리했다.
# pip3 install --upgrade pip
# 현재 Alias 확인
ls -l /bin/python*
ln -s /bin/pip3.6 /bin/pip
# 아래와 같이 수정하지 않으면 yum 설치가 되지 않는다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
##########################################################################
# 방화벽 설정
yum -y install firewalld
# 방화벽 데몬 시작
systemctl start firewalld
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-all
#########################################################################
# Databse 접근을 위한 SELinux 설정 변경 체크
# SELinux 상태 확인
sestatus
#SELinux httpd flag 확인 : 네트워크를 통해 Database에 연결할 수 있는 옵션이 꺼져 있음
getsebool -a | grep httpd
# Database 접근을 위한 SELinx 설정 변경
setsebool -P httpd_can_network_connect_db 1
# SELinux 비활성화 하기
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq 로 저장하고 나온다.
################################
##### MariaDB 10.4 버전 설치 #####
################################
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
:wq 로 저장하고 나온다.
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
# mariadb 시작
systemctl start mariadb
# mariadb 상태 확인
service mariadb status
# Maria DB 보안 설정하기
mysql_secure_installation
# root 비밀번호 설정 등 상세 과정은 생략한다. 거의 Y만 누르면 끝난다.
# UTF-8 로 통신하기 위한 서버/클라이언트 설정
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
# MariaDB 재시작
service mariadb restart
# MariaDB 접속하여 적용된 사항 확인
mysql -u root -p
status
show variables like 'c%';
#########################################
####### 실제 적용 예제 ######
#########################################
// DB 생성
create database 디비명 default character set utf8;
use mysql;
create user 계정@localhost identified by '비밀번호';
grant all privileges on 디비명.* to 계정@localhost;
select Host,User,Password from user;
SET PASSWORD FOR '계정'@'localhost' = PASSWORD('비밀번호'); // 변경할 비밀번호
flush privileges;
quit
### 테이블 백업하기 ####
mysqldump -uroot -p --databases pythondb > pythondb.sql
### 테이블 구조만 백업하기 ####
mysqldump -uroot -p --no-data --databases pythondb > pythondb.sql
###################################
##### root 패스워드 분실 복구 #####
###################################
# 서비스 정지
systemctl stop mariadb
# mariadb 안전모드 실행
sudo /usr/bin/mysqld_safe --skip-grant &
# 패스워드 변경
mysql -uroot mysql
update user set password=password('변경할비밀번호') where user='root';
flush privileges;
exit;
#############################################
# PHP 와 Apache 설치
#############################################
## 현재 설치된 PHP 버전 확인
yum list php
yum -y install expat-devel
# 설치 확인 방법1
yum list installed | grep httpd
yum list installed | grep php
# 설치 확인 방법2
rpm -qa | grep httpd
rpm -qa | grep php
## 설치된 것 한꺼번에 지우기
rpm -qa | grep php >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
rpm -qa | grep httpd >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
# yum 삭제 방법 (실제 삭제할 사항이 아니라 주석(#) 처리)
# yum remove -y vsftpd
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum 저장소와 패키지를 관리
yum -y groupinstall "Development tools"
yum -y install epel-release yum-utils
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php54
# yum-config-manager --enable remi-php56 [Install PHP 5.6]
# yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo
yum install php php-openssl
# Install PHP 7.0 on CentOS 7
yum install -y --enablerepo=remi-php70 httpd php php-cli php-common php-devel php-ldap
yum install -y --enablerepo=remi-php70 php-mbstring php-mcrypt php-mysqlnd mod_ssl php-pdo
yum install -y --enablerepo=remi-php70 php-pgsql php-sqlite php-process php-snmp php-soap
yum install -y --enablerepo=remi-php70 php-libxml php-xml php-pear php-gd php-fpm php-dom
yum install -y --enablerepo=remi-php70 php-ssh2 php-xmlreader php-curl php-date php-exif
yum install -y --enablerepo=remi-php70 php-filter php-simplexml php-hash php-iconv php-imagick
yum install -y --enablerepo=remi-php70 php-json php-openssl php-pcre php-posix php-sockets
yum install -y --enablerepo=remi-php70 php-spl php-tokenizer php-zlib php-gmp php-Icinga php-intl
yum install -y --enablerepo=remi-php70 php-pecl-zip zip php-zip php-pspell
yum install -y --enablerepo=remi-php70 wget unzip mc git nmap telnet net-tools
# PHP 버전 확인
php -v
# Apache 버전 확인
httpd -v
# 서비스 활성화(재부팅시 auto start)
systemctl enable httpd
# 서비스 시작
systemctl start httpd
# 서비스 구동 상태 확인
systemctl status httpd
# 서비스 중지
systemctl stop httpd
# 서비스 재시작
systemctl restart httpd
# openssl 버전 확인
openssl version
###################################################
# Apache 환경 설정
###################################################
# Web root 디렉토리 : /var/www/html 기본 설정인데 아래는 home 디렉토리 하단으로 수정했다.
# 보안 설정 부분이 같이 포함되어 있으니 아래와 같이 설정하면 도움된다.
# 더 자세한 사항은 구글링해서 찾아보시라.
## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
<IfModule mime_module>
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps
vi /etc/httpd/conf.d/vhost.conf
<Directory "/home/*/public_html">
Options Indexes FollowSymLinks MultiViews
AddType application/x-httpd-php .php
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
ServerAlias test.kr
ServerName www.test.kr
DocumentRoot "/home/test/public_html"
</VirtualHost>
/var/www/html
계정 : 711
폴더 : 755
파일 : 664
vi /etc/php.ini
short_open_tag = On
cgi.fix_pathinfo=0
;PHP 버전 정보 노출 방지(Hide PHP Version Number)
expose_php = Off
post_max_size = 20M ;// 8M 으로 되어 있었음.
upload_max_filesize = 18M ;// 기본 2M 으로 되어 있었음
date.timezone ="Asia/Seoul"
;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제된다.
; 세션 시간은 1시간으로 설정한다.
session.gc_maxlifetime = 3600
# 저장(:wq)하고 나온다.
###############################
# RSA 암호화 통신을 위한 설정
###############################
#리눅스 SSH 에서 RSA 공개키, 개인키 생성방법
mkdir -p /home/rsa/key/
cd /home/rsa/key/
# Private Key 생성
openssl genrsa -out rsa_pri.pem 1024
# Public Key 생성
openssl rsa -pubout -in rsa_pri.pem -out rsa_pub.pem
# RSA javascript 암호화 PHP 복호화 예제는 구글링으로 찾아보시라.
# RSA kotlin 암호화 PHP 복호화 예제는 구글링으로 찾아서 해결하시라.
# 열린포트 확인
yum -y install net-tools
netstat -nltp
### 시간 동기화
yum -y install rdate
crontab -e
00 00 * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
useradd [계정]
passwd []
systemctl start httpd
[주소복사] https://www.goodsweb.kr/?u=D41NAd2K
SNS 알리기
핀터레스트
텔레그램로
블로그로
페이스북
트위터
카카오스토리
카톡 공유
관련 블로그
로딩중