CentOS 6, CentOS 7에서 nginx 1.14.2, mysql 8.0.15, php 7.3.4 설치 및 연동

길라잡이 0 35 06.17 06:57

CentOS 6, CentOS 7 환경에서 설치했으며, 설치 방법은 거의 동일합니다.

설치 환경 및 버전입니다.
OS = CentOS 6.10(Final) , CentOS 7.6.1810(Core)
nginx = 1.14.2
mysql = 8.0.15
php = 7.3.4

 

** 사진이 작으면 클릭해서 봐주세요.

** 글의 내용을 그대로 복사하면 제대로 복사가 안될 수 있습니다. 메모장에 한번 붙여넣기 한 뒤 다시 복사해서 사용해주세요.


 

mysql 8.0.15 설치

mysql 설치 간에 필요한 패키지를 설치합니다.
#yum install -y cmake ncurses-devel openssl openssl-devel

 

설치 도중 메모리 관련 에러가 발생했었습니다. 따라서 미리 스왑 메모리를 증설해 놓겠습니다. 저는 4GB만큼 증설하였습니다.

#dd if=/dev/zero of=/var/swapfile bs=1024 count=4096000
#mkswap /var/swapfile
#swapon /var/swapfile

 

증설 후 free -m 명령어를 통해 제대로 스왑 메모리가 생겼는지 확인합니다.

 

저 같은 경우 리부팅 후에도 지속적으로 스왑 메모리가 적용되도록 설정해줬습니다.
#vi /etc/fstab
…(생략)
/var/swapfile    swap    swap    defaults    0  0

*make 도중 …sql/CMakeFiles/sql_gis.dir/item_geofunc_setops.cc.o 에러 또는 c++: fatal error: Killed signal terminated program … .가 발생하면 스왑메모리를 증설해주시면 됩니다.

 

mysql을 설치할 때 cmake 후 make 명령어를 수행하면 gcc 버전이 낮아 json 관련 에러가 발생합니다. 따라서 gcc를 미리 8.x 버전대로 업데이트 해놓겠습니다.
(CentOS 6의 경우 4.2.x 버전, CentOS 7 버전의 경우 4.5.x 버전으로 gcc가 설치될 것입니다.)

#yum install centos-release-scl
#yum install devtoolset-8-gcc devtoolset-8-gcc-c++
#scl enable devtoolset-8 — bash

 

설치 후 버전을 확인해보면 8.2.1 버전으로 변경된 것을 확인할 수 있습니다.

#gcc –version
#g++ –version

 

리부팅후에도 gcc 버전이 적용될 수 있도록 /root/.bashrc 파일에 아래 내용을 추가해줍니다.

#vi /root/.bashrc
…(생략)
source /opt/rh/devtoolset-8/enable

 

이제 mysql 그룹 및 계정을 생성합니다.

#groupadd -g 400 mysql
#useradd -u400 -g400 -d /usr/local/mysql -s /bin/false mysql

 

계정을 생성했으니 mysql을 설치해보겠습니다.

#cd /usr/local/src
#tar xvfz mysql-8.0.15.tar.gz
#cd mysql-8.0.15
#mkdir build
#cd build

-> mysql 상위 버전부터 빌드를 위한 디렉토리를 따로 만든 뒤 해당 디렉토리에서 작업하도록 변경되었습니다. 만약 빌드를 위한 별도의 디렉토리를 만들지 않고 cmake를

진행하면 다음과 같은 에러가 발생할 것입니다.

CMake Error at CMakeLists.txt:283 (MESSAGE):
Please do not build in-source. Out-of source builds are highly
recommended: you can have multiple builds for the same source, and there is
an easy way to do cleanup, simply remove the build directory (note that
‘make clean’ or ‘make distclean’ does not work)
 
You can force in-source build by invoking cmake with
-DFORCE_INSOURCE_BUILD=1
 
— Configuring incomplete, errors occurred!
 
 
cmake 다음에 ‘..(점 두개)’ 을 꼭 입력해주세요.
#cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 \
-DWITH_SSL=system -DMYSQL_TCP_PORT=3306 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/include/boost
#make && make install

 

CentOS 6의 경우 make 도중 다음과 같은 에러가 발생할 수 있습니다.

cannot find any C preprocessor (cpp)
/usr/bin/rpcgen: C preprocessor failed with exit code 1
make[2]: *** [plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp.h] 오류 1
make[1]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] 오류 2
make: *** [all] 오류 2

해당 에러는 다음과 같이 해결해줍니다.

#cp -arp /usr/bin/cpp /lib64/
#cp -arp /usr/bin/cpp /lib/

 

make install 까지 완료되었으면 이제 데이터베이스를 구성해줍니다.

#/usr/local/mysql/bin/mysqld –initialize-insecure –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data –user=mysql

 

디렉토리 및 파일에 대한 권한을 설정해줍니다.

#chown -R mysql.mysql /usr/local/mysql/
#chmod 711 /usr/local/mysql
#chmod 700 /usr/local/mysql/data
#chmod 751 /usr/local/mysql/bin/
#chmod 750 /usr/local/mysql/bin/*
#chmod 755 /usr/local/mysql/bin/mysql
#chmod 755 /usr/local/mysql/bin/mysqldump

 

boost를 설치해줍니다.

#cd /usr/local/include/boost/boost_1_68_0
#./booststrap.sh
#./b2 install

 

설정파일을 수정해줍니다.

#vi /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
socket=/tmp/mysql.sock
 
[mysqld_safe]
log-error=/var/log/mysql_log.err
pid-file=/usr/local/mysql/mysql.pid

 

mysql 실행파일을 옮긴 뒤 리부팅후에도 자동으로 mysql이 실행되도록 설정해줍니다.

#cp -arp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#chkconfig –add mysqld
#chkconfig mysqld on
 
 
모든 설정이 완료되었으면 방화벽에서 mysql 포트인 3306을 열어줍니다. 서버마다 사용하는 방화벽이나 설정이 다를 수 있으니 해당 부분은 생략하겠습니다.
방화벽 설정 및 재시작을 한 뒤 mysql을 싱행해보겠습니다.
#/etc/init.d/mysqld start
다음과 같이 mysql이 실행된 것을 확인할 수 있습니다.
 
이제 mysql의 초기 패스워드를 설정해주겠습니다. 처음엔 패스워드가 설정되어 있지 않기 때문에 바로 접속이 가능합니다.
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘패스워드’;
Query OK, 0 rows affected (0.02 sec)
 
 
mysql 기본 언어셋을 설정해주겠습니다. 저같은 경우는 utf8로 설정해줬습니다.
#vi /etc/my.cnf.d/mysql-clients.cnf
 
[mysql]
default-character-set=utf8
 
[mysqldump]
default-character-set=utf8
 
 #vi /etc/my.cnf
 
[mysqld]
collation-server = utf8_unicode_ci
init-connect=’SET NAMES utf8′
character-set-server = utf8
 
my.cnf를 수정했으니 mysql을 재시작하여 수정한 내용을 적용시켜줍니다.
#/etc/init.d/mysqld restart
 
utf8로 변경되었는지 확인해보겠습니다.
#/usr/local/mysql/bin/mysql -u root -p
mysql> show variables like ‘c%’;
+———————————————-+———————————-+
| Variable_name                                | Value                            |
+———————————————-+———————————-+
| caching_sha2_password_auto_generate_rsa_keys | ON                               |
| caching_sha2_password_private_key_path       | private_key.pem                  |
| caching_sha2_password_public_key_path        | public_key.pem                   |
| character_set_client                         | utf8                             |
| character_set_connection                     | utf8                             |
| character_set_database                       | utf8                             |
| character_set_filesystem                     | binary                           |
| character_set_results                        | utf8                             |
| character_set_server                         | utf8                             |
| character_set_system                         | utf8                             |
| character_sets_dir                           | /usr/local/mysql/share/charsets/ |
| check_proxy_users                            | OFF                              |
| collation_connection                         | utf8_general_ci                  |
| collation_database                           | utf8_unicode_ci                  |
| collation_server                             | utf8_unicode_ci                  |
| completion_type                              | NO_CHAIN                         |
| concurrent_insert                            | AUTO                             |
| connect_timeout                              | 10                               |
| core_file                                    | OFF                              |
| create_admin_listener_thread                 | OFF                              |
| cte_max_recursion_depth                      | 1000                             |
+———————————————-+———————————-+
21 rows in set (0.00 sec)
 
이상으로 mysql 8.0.15 설치를 마치겠습니다.
 

 
nginx 1.14.2 설치
 
nginx 설치에 필요한 필수 패키지를 설치합니다.
#yum install -y libxml2-devel libxml2-static libxslt libxslt-devel gd gd-devel
 
pcre, zlib, openssl 을 설치합니다. 압축만 풀어주시면 됩니다.
#cd /usr/local/src
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
#tar xvfz pcre-8.42.tar.gz
#tar xvfz zlib-1.2.11.tar.gz
#tar xvfz openssl-1.1.1b.tar.gz
 
 
이제 nginx를 설치하겠습니다.
#cd /usr/local/src
#tar xvfz nginx-1.14.2.tar.gz
#cd nginx-1.14.2
#./configure –prefix=/usr/local/nginx –with-pcre=../pcre-8.42 –with-zlib=../zlib-1.2.11 –with-openssl=../openssl-1.1.1b –with-http_ssl_module –with-http_stub_status_module
#make && make install
 
nginx를 실행 및 리부팅시 자동실행 될 수 있도록 스크립트를 작성해줍니다.
(복사가 제대로 안될수도 있습니다.)
 
#vi /etc/init.d/nginx
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemin
#
# chkconfig:   – 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ “$NETWORKING” = “no” ] && exit 0
 
nginx=”/usr/local/nginx/sbin/nginx”
prog=$(basename $nginx)
 
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
 
lockfile=/var/lock/subsys/nginx
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $”Starting $prog: “
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $”Stopping $prog: “
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    start
}
 
reload() {
    configtest || return $?
    echo -n $”Reloading $prog: “
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case “$1” in
    start)  
        rh_status_q && exit 0
        $1      
        ;;      
    stop)   
        rh_status_q || exit 0
        $1      
        ;;      
    restart|configtest)
        $1      
        ;;      
    reload)
        rh_status_q || exit 7
        $1      
        ;;      
    force-reload)
        force_reload
        ;;      
    status)
        rh_status
        ;;      
    condrestart|try-restart)
        rh_status_q || exit 0
        ;;      
    *)
        echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”
        exit 2  
esac
 
#chmod 700 /etc/init.d/nginx
#chkconfig –add nginx
#chkconfig nginx on
 
이제 nginx 를 실행하고 사이트에 정상적으로 접근이 되는지 확인해보겠습니다.(그 전에 방화벽에서 80번 포트를 열어주세요)
#/etc/init.d/nginx start
 
인터넷을 켜고 ip주소로 접근했을 때 다음과 같이 나오면 정상적으로 실행 중인것입니다.
 

 
php 7.3.4 설치
 
php 설치에 필요한 패키지들을 설치해줍니다.
#yum install -y curl-devel libtool-ltdl-devel gdbm-devel libc-client-devel bzip2-devel gzip
 
 
mhash를 설치해줍니다.
#cd /usr/local/src
만약 download파일로 설치되면 mv download mhash-0.9.9.9.tar.gz 로 변경 후 압축해제 한 뒤 진행합니다.
#tar xvfz mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make && make install
 
libmcrypt를 설치해줍니다.
#cd /usr/local/src
압축 풀고 들어가서
#./configure
#make && make install
 
libzip를 설치해줍니다.
php7.3.4 는 libzip 0.11 이상부터 지원합니다. CentOS 7 기준으로 yum 설치시 0.10이 설치됩니다.
#cd /usr/local/src
#tar xvfz libzip-1.2.0.tar.gz
#cd libzip-1.2.0
#./configure
#make && make install
 
이제 php를 설치하겠습니다.
#cd/usr/local/src
#tar xvfz php-7.3.4.tar.gz
#cd php-7.3.4
#./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/lib –with-config-file-scan-dir=/etc/php/php.d –with-zlib-dir –enable-mbstring –with-curl –with-zlib –disable-rpath –enable-inline-optimization –enable-sockets –enable-sysvsem –enable-sysvshm –enable-pcntl –enable-mbregex –with-mhash –enable-zip –with-pcre-regex –with-mysqli –with-openssl –with-fpm-user=nobody –with-fpm-group=nobody –enable-fpm –with-pdo-mysql
 
configure 도중 다음과 같은 에러가 발생할 떄
configure: error: off_t undefined; check your library configuration
 
# vi /etc/ld.so.conf
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
위의 네줄 추가 후 저장한 뒤,
#ldconfig
 
#make && make install
 
fatal error: zipconf.h 에러 발생시
#cp -arp /usr/local/src/php-7.3.4/lib/zipconf.h /usr/local/include/
또는
#cp -arp /usr/local/src/php-7.3.4/ext/zip/lib/zipconf.h /usr/local/include/
 
 
이제 설정파일들을 복사해주겠습니다. nginx 와 php를 연동하기 위해선 php-fpm이 필요합니다.
#cp /usr/local/src/php-7.3.4/php.ini-production /usr/local/lib/php.ini
#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
#cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
 
php-fpm 실행 파일을 /etc/init.d 에 복사해준 뒤 리부팅시에도 자동으로 실행될 수 있게 chkconfig 설정을 해줍니다.
#cp /usr/local/src/php-7.3.4/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#chmod 700 /etc/init.d/php-fpm
#chkconfig php-fpm on
 
이제 마지막으로 nginx 와 php 를 연동하여 phpinfo 페이지를 띄워보도록 하겠습니다.
 
#vi /usr/local/nginx/conf/nginx.conf
 

Comments

번호 제목 글쓴이 날짜 조회
96 윈도우 10 정품인증을 없애고 해제하는 방법 길라잡이 11.22 8
95 크롬 마우스 우클릭 해제 피그툴박스(pig toolbox) 대체 길라잡이 11.22 9
94 작업기록 개인정보설정 작업 기록 지우기 윈도우10 사용자 꿀팁 길라잡이 11.03 11
93 버추얼박스에서 가상 하드 용량 늘이기 길라잡이 11.02 15
92 제이쿼리 불투명 배경 레이어 띄우기 길라잡이 10.30 10
91 워드프레스 본문 특성이미지 숨기기 테마별 소스 삭제 길라잡이 10.22 9
90 워드프레스 글 제목에 HTML 태그 사용하기 길라잡이 10.19 13
89 제이쿼리 검은배경 팝업창 길라잡이 10.16 14
88 워드프레스 반지하 링크파일 차단 해제 길라잡이 10.11 16
87 특정 IP 접속 차단 또는 이동 방법 길라잡이 10.11 13
86 워드프레스 구글 사이트맵 길라잡이 09.27 12
85 윈도우 10 작업표시줄 미리 보기 끄는 방법 길라잡이 08.08 21
84 윈도우10 파일 확장자 변경하기 길라잡이 06.25 18
83 [CentOS7] PHP 7.3 to 7.2 downgrade (PHP 다운그레이드) 방법 길라잡이 06.17 38
82 CENTOS 7 / RHEL 7 LINUX 시스템에 PHP 7.3을 설치하는 방법 길라잡이 06.17 41
열람중 CentOS 6, CentOS 7에서 nginx 1.14.2, mysql 8.0.15, php 7.3.4 설… 길라잡이 06.17 36
80 Yum repo 제거 길라잡이 06.16 24
79 CentOS 7에서 PHP 7.3을 설치하는 방법 길라잡이 06.16 101
78 PHP 7.3.4 Stable Source 설치 길라잡이 06.15 32
77 CentOS 6에 PHP 5.3 설치 (yum) 길라잡이 06.15 23
76 [Linux] phpMyAdmin 오류 생길때 (The mbstring extension is missing… 길라잡이 06.15 25
75 워드프레스 멀티사이트 만들기 길라잡이 06.13 29
74 특정 IP에서만 보기 길라잡이 06.13 99
73 [PHP 5 / 7] php.ini 설정 변경 길라잡이 06.13 34
72 CentOS7 + PHP7 + SQL Server 연결 길라잡이 06.13 39
71 [CentOS 7] PHP 5.4 to PHP 7.1 업그레이드 길라잡이 06.13 35
70 당신의 숨겨진 재능을 알아보는 행동 심리테스트 길라잡이 05.03 41
69 생활 속의 재활용 아이디어 길라잡이 05.02 33
68 파일이름 일괄변경 DarkNamer 프로그램 길라잡이 03.12 31
67 워드프레스의 속도 향상을 위한 W3 Total Cache 플러그인 사용법 및 설정 방법 길라잡이 02.24 34


 

페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유