## PHP 설치 전 필수 조건
cd /usr/local/src/
yum install -y wget vim epel-release
얌 설치 -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
얌 업데이트 -y
## CentOS 7의 기본 환경 변수 설정
에코 ” ” >> /etc/profile
echo “####default PATH#####” >> /etc/profile
echo “내보내기 경로=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:” >> /etc/profile
에코 “#####################” >> /etc/profile
## 소스 설치를 위한 패키지 환경 설치
yum 설치 -y libdb-devel enchant-devel libxslt libxslt-devel net-snmp-devel readline-devel readline aspell-devel unixODBC unixODBC-devel libicu-devel icu libicu libc-client libc-client-devel libc-client-2007f freetype- devel freetype* freetype libXpm libXpm-devel libpng-devel libpng* libvpx-devel libvpx libcurl libcurl-devel curl* curl-devel curl tcp_wrappers-devel libzip 환경 모듈 uw-imap-utils uw-imap-devel uw-imap uw-imap -정적 pam-devel libldb-devel openldap-devel cyrus-sasl-devel bzip2-devel bzip2 bzip2-libs ncurses-devel ncurses mysql-devel libjpeg-devel libjpeg* libjpeg-devel openssl-devel openssl* openssl-libs libxml* libxml2 libxml2 -devel libmcrypt libmcrypt-devel libmcrypt* mcrypt mhash* mhash mhash-devel libmhash libmhash-devel expat-devel expat expat* gmp* gmp gmp-devel krb5* krb5-devel db4 db4-devel wget make cmake libtool* pcre* gdbm* gdbm gdbm-devel libtiff* libtiff libtiff-devel 플렉스 zlib* zlib-devel zlib gd* gd gd-devel 패치 t1lib t1lib-devel readline l ibe dit-devel libtidy libtidy-devel gcc* gcc gcc-c++ libtermcap-devel dialog sqlite-devel oniguruma oniguruma-devel libzip5 mod_ssl postgresql-devel lcov systemtap-sdt-devel mod_ldap elfutils-devel libwebp-devel libwebp git gzip libnghttp2-devel valgrind * mod_proxy* editline editline-devel patchelf systemd-devel ImageMagick-devel libzstd-devel libffi libffi-devel libraqm-devel libraqm libsodium libsodium-devel
## CentOS 6 이하용 라이브러리 설정
mkdir /usr/kerberos
ln -s /usr/lib64 /usr/kerberos/lib
## PHP imap 관련 모듈 64비트 32비트 라이브러리 호환성 설정
ln -s /usr/lib64/libc-client.a /usr/lib/libc-client.a
/usr/include/db.h를 분리합니다.
ln -s /usr/include/libdb4/db.h /usr/include/db.h
ln -s /usr/include/sqlext.h /usr/local/include/sqlext.h
ln -s /usr/lib64/libgdbm_compat.so /usr/local/lib64/libdbm.so
## OpenLDAP 호환
\cp -arpf /usr/lib64/libldap* /usr/lib/
ln -sf /usr/lib64/libm.so /usr/lib/libm.so
ln -sf /usr/lib64/libssl.so /usr/lib/libssl.so
## libXpm 모듈 32비트 호환
ln -s /usr/lib64/libXpm.so /usr/lib/
ln -s /usr/lib64/libXpm.so.4 /usr/lib/
ln -s /usr/lib64/libXpm.so.4.11.0 /usr/lib/
## PHP 이미지 모듈 64비트 32비트 라이브러리 호환성 설정
ln -s /usr/lib64/libjpeg.so /usr/lib
ln -s /usr/lib64/libpng.so /usr/lib
## cmake 버전 업그레이드(libzip 설치 작업 중)
냠 제거 -y cmake
cd /usr/local/src/APM_Setup
wget https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0.tar.gz
tar zxvf cmake-3.26.0.tar.gz
CD cmake-3.26.0
./bootstrap –prefix=/usr/local
할 -j
설치를 하다
소스 /etc/profile
## pcre2 최신 버전 설치
cd /usr/local/src/APM_Setup
https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
tar zxvf pcre2-10.42.tar.gz
cd pcre2-10.42
./configure –prefix=/usr/local/pcre2 –enable-pcre2-8 –enable-pcre2-16 –enable-pcre2-32 –enable-jit –enable-jit-sealloc –enable- pcre2grep-jit –enable-pcre2grep-callout –enable-pcre2grep-callout-fork –enable-unicode –enable-pcre2grep-libz –enable-pcre2grep-libbz2 –enable-pcre2test-libreadline –enable-valgrind –enable-fuzz-support –enable-percent-zt –with-gnu-ld –with-pcre2grep-bufsize=20480 –with-pcre2grep-max-bufsize=1048576 –with-link-size=2 –with-parens-nest-limit=250 –with-heap-limit=20000000 –with-match-limit-depth=MATCH_LIMIT
할 -j
설치를 하다
## pcre2 연결 환경 변수 설정
echo “내보내기 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig” >> /etc/profile
sed -i “s/export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig/export PKG_CONFIG_PATH=/usr/local/pcre2 /lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig: /usr/local/lib64/pkgconfig: /usr/lib64/pkgconfig:/usr/lib/pkgconfig/g” /etc /프로필
## 최신 버전의 libzip 설치
cd /usr/local/src/APM_Setup
wget https://libzip.org/download/libzip-1.9.2.tar.gz
tar zxvf libzip-1.9.2.tar.gz
mkdir libzip-1.9.2/빌드
cd libzip-1.9.2/빌드
cmake ../\
-DCMAKE_INSTALL_PREFIX=/usr/local\
-DENABLE_BZIP2=1 \
-DENABLE_COMMONCRYPTO=1 \
-DENABLE_GNUTLS=1 \
-DENABLE_LZMA=1 \
-DENABLE_MBEDTLS=1 \
-DENABLE_OPENSSL=1 \
-DENABLE_ZSTD=1 \
-DLIBZIP_DO_INSTALL=1 \
-DSHARED_LIB_VERSIONNING=1
할 -j
설치를 하다
## 최신 버전의 libgd 설치
cd /usr/local/src/APM_Setup
wget https://github.com/libgd/libgd/releases/download/gd-2.3.2/libgd-2.3.2.tar.gz
tar zxvf libgd-2.3.2.tar.gz
CD libgd-2.3.2
./configure –prefix=/usr/local –with-pic –with-aix-soname=both –with-x –with-gnu-ld –with-libiconv-prefix –with-zlib – -with-png –with-freetype –with-raqm –with-fontconfig –with-jpeg –with-xpm –with-tiff –with-webp
할 -j
설치를 하다
## PHP 다운로드 및 배포
cd /usr/local/src/APM_Setup
wget https://www.php.net/distributions/php-8.2.4.tar.gz
wget https://mirror.cogentco.com/pub/php/php-8.2.4.tar.gz
wget http://ftp.ntu.edu.tw/pub/php/distributions/php-8.2.4.tar.gz
wget https://www.php.net/distributions/php-8.2.33.tar.gz
wget https://mirror.cogentco.com/pub/php/php-8.2.33.tar.gz
wget http://ftp.ntu.edu.tw/pub/php/distributions/php-8.2.33.tar.gz
타르 zxvf php-8.2.4.tar.gz
cd php-8.2.4
타르 zxvf php-8.2.33.tar.gz
cd php-8.2.33
## PHP 컴파일 설정
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –enable-fpm –with-fpm-user=nobody –with-fpm-group =nobody –with-fpm-systemd –with-config-file-path=/usr/local/apache/conf –disable-debug –with-external-pcre=/usr/local/pcre/bin/pcre -config –enable-phpdbg –enable-phpdbg-debug –enable-phpdbg-readline –enable-dom –enable-bcmath –enable-cli –enable-cgi –enable-gcov –with- iconv –enable-sigchild –with-openssl –with-openssl-dir –with-system-ciphers –with-pcre-jit –with-zlib –with-zlib-dir –enable-opcache – -enable-opcache-jit –enable-ctype –with-bz2 –enable-calendar –with-curl –enable-dba –enable-pcntl –with-pspell –with-zip –with- dbm –with-gdbm –enable-exif –with-ffi –enable-fileinfo –enable-filter –enable-ftp –enable-gd –with-external-gd –enable-gd-jis -conv –with-avif –with-webp –with-jpeg –with-xpm –with-freetype –enable-shmop –with-imap –with-imap-ssl –with-kerberos – -활성화-mbstring–활성화-mregex–활성화 -huge-c ode-pages –enable-sockets –enable-sysvmsg –enable-sysvsem –enable-sysvshm –with-tidy –enable-tokenizer –with-xsl –enable-soap –with -ldap-sasl –with-ldap –enable-intl –with-mhash –with-gmp –with-gettext –with-enchant –enable-phar –enable-posix –enable-libgcc – -with-snmp –with-libedit –with-readline –with-pear –with-libxml –enable-xmlwriter –enable-simplexml –enable-xml –enable-xmlreader –enable-session – -enable-pdo –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd –with-mysql-sock=/tmp/mysql.sock –enable-maintainer-zts –enable- zts –활성화 -roxen-zts
## lber 라이브러리를 참조할 수 없으므로 강제 포함
sed -i ‘s/-lm -lcrypt/-lm -lcrypt -llber/g’ /usr/local/src/APM_Setup/php-8.2.4/Makefile
sed -i ‘s/-lm -lcrypt/-lm -lcrypt -llber/g’ /usr/local/src/APM_Setup/php-8.2.33/Makefile
할 -j
설치를 하다
## php.ini 구성 파일 변경
\cp -arpf php.ini-development /usr/local/apache/conf/php.ini
sed -i ‘s/;upload_tmp_dir =/upload_tmp_dir = \/tmp/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/upload_max_filesize=2M/upload_max_filesize=100M/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/post_max_size=8M/post_max_size=100M/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/memory_limit=128M/memory_limit=256M/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/allow_url_fopen = 켜기/allow_url_fopen = 끄기 /g’ /usr/local/apache/conf/php.ini
sed -i ‘s/expose_php=On/expose_php=Off/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/display_errors=Off/display_errors=On/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/log_errors=Off/log_errors=On/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/;error_log = syslog/error_log = syslog/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/short_open_tag=Off/short_open_tag=On/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/;date.timezone =/date.timezone = “아시아\/서울”/g’ /usr/local/apache/conf/php.ini
sed -i ‘s/session.gc_maxlifetime = 1440 /session.gc_maxlifetime = “3600”/g’ /usr/local/apache/conf/php.ini
## php-fpm 구성 파일 및 데몬 구성
\cp -f /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
\cp -f /usr/local/src/APM_Setup/php-8.2.4/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
\cp -f /usr/local/src/APM_Setup/php-8.2.33/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
\cp -f /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
chmod +x /etc/init.d/php-fpm
\cp -f /usr/local/src/APM_Setup/php-8.2.4/sapi/fpm/php-fpm.service /lib/systemd/system/
\cp -f /usr/local/src/APM_Setup/php-8.2.33/sapi/fpm/php-fpm.service /lib/systemd/system/
## 구성 파일 편집 /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;pid = 실행\/php-fpm.pid/pid = \/usr\/local\/php\/var\/run\/php-fpm.pid/g’ /usr/local/ php/etc/php-fpm.conf
sed -i ‘s/;error_log = log\/php-fpm.log/error_log = \/usr\/local\/php\/var\/log\/php-fpm.log/g’ /usr/local/ php/etc/php-fpm.conf
sed -i ‘s/;syslog.facility = 데몬/syslog.facility = 데몬/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;syslog.ident = php-fpm/syslog.ident = php-fpm/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;log_level = 통지/log_level = 경고/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;log_limit=4096/log_limit=4096/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;log_buffering = no/log_buffering = yes/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;emergency_restart_threshold = 0/emergency_restart_threshold = 5/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;emergency_restart_interval = 0/emergency_restart_interval = 30s/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;process_control_timeout=0/process_control_timeout=20/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/; process.max = 128/process.max = 1024/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/; process.priority = -19/process.priority = -19/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;daemonize=yes/daemonize=yes/g’ /usr/local/php/etc/php-fpm.conf
sed -i ‘s/;systemd_interval=10/systemd_interval=10/g’ /usr/local/php/etc/php-fpm.conf
## 구성 파일 편집 /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;listen.backlog=511/listen.backlog=65535/g’ /usr/local/php/etc/php-fpm.d/www.conf
echo “net.core.somaxconn=65535” >> /etc/sysctl.conf
sysctl-p
sed -i ‘s/;listen.owner=nobody/listen.owner=nobody/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;listen.group=nobody/listen.group=nobody/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;listen.mode=0660/listen.mode=0660/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/; process.dumpable = 예/process.dumpable = 예/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/pm=dynamic/pm=ondemand/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/pm=static/pm=ondemand/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/pm.max_children = 5/pm.max_children = 50/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;pm.process_idle_timeout/pm.process_idle_timeout/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;access.log = 로그/access.log = \/usr\/local\/php\/var\/log/g’ /usr/local/php/etc/php-fpm.d/ www.conf
sed -i ‘s/;access.format/access.format/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;slowlog/slowlog/g’ /usr/local/php/etc/php-fpm.d/www.conf
sed -i ‘s/;request_slowlog_timeout = 0/;request_slowlog_timeout = 30/g’ /usr/local/php/etc/php-fpm.d/www.conf
## Apache PHP-FPM FastCGI로 전환
-> mod_php(Apache2handler를 사용하는 경우 X 아래 부분으로 계속 진행)
에코”
###################################
프록시 요청
ProxyPreserveHost 켜기
ProxyErrorOverride 사용
ProxyTimeout 600
SetHandler “프록시:fcgi://localhost:9000”
##################################” >> /usr/local/apache/conf/httpd .conf
##prefork로 인해 php-fpm 미등록 런처
chkconfig –php-fpm 추가
chkconfig php-fpm
/etc/init.d/php-fpm 시작
## imagick 모듈 설치
cd /usr/local/src/APM_Setup
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0/
/usr/local/php/bin/phpize && ./configure –with-php-config=/usr/local/php/bin/php-config && make -j && make install
에코 “(imagick)” >> /usr/local/apache/conf/php.ini
echo “extension=imagick.so” >> /usr/local/apache/conf/php.ini
에코 ” ” >> /usr/local/apache/conf/php.ini
## mcrypt 모듈 설치
cd /usr/local/src/APM_Setup
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0/
/usr/local/php/bin/phpize && ./configure –with-php-config=/usr/local/php/bin/php-config && make -j && make install
에코 “(imagick)” >> /usr/local/apache/conf/php.ini
echo “extension=imagick.so” >> /usr/local/apache/conf/php.ini
에코 ” ” >> /usr/local/apache/conf/php.ini
## Apache PHP 모듈 확인 및 재시작
Apachectl -M | grep PHP
/etc/init.d/apachectl 재시작
## APM 환경 변수 설정
다음 구성에는 Apache, MySQL 및 PHP 부분이 포함되어 있습니다.
에코 ” ” >> /etc/profile
echo “APACHE_HOME=/usr/local/apache” >> /etc/profile
echo “MySQL_HOME=/usr/local/mysql” >> /etc/profile
echo “PHP_HOME=/usr/local/php” >> /etc/profile
에코 ” ” >> /etc/profile
에코 “내보내기 경로=”\$”APACHE_HOME/bin:”\$”MySQL_HOME/bin:”\$”PHP_HOME/bin:”\$”PHP_HOME/sbin”\$”{경로:+:”\$”{ 경로}}” >> /etc/프로필
소스 /etc/profile