CentOS7 configuration:
systemctl disable firewalld && systemctl stop firewalld
Install dependency package:
yum install wget unzip tar gcc gcc-c++ make \
bison ncurses perl pcre pcre-devel zlib-devel cmake \
gnutls openssl jemalloc libaio libaio-devel ncurses \
ncurses-devel libxml2 libxml2-devel \
openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel \
libpng libpng-devel libjpeg libjpeg-devel freetype freetype-devel libvpx libvpx-devel \
libmcrypt libmcrypt-devel -y
MySQL
Download and install MySQL:
cd /usr/src/ && wget https://files.x-speed.cc/link/8132351340035751 -O mysql.tar.gz && tar -xvf ./mysql.tar.gz && cd mysql-*
Complie MySQL:
cmake \
-DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DMYSQL_DATADIR=/opt/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/dev/shm/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make -j 8 && make install
Configuration MySQL permission:
useradd -M -r --shell /sbin/nologin --home-dir /opt/mysql mysql && chown -R mysql:mysql /opt/mysql
rm -rf /etc/my.cnf && cd /opt/mysql && ./scripts/mysql_install_db --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql
cp ./support-files/mysql.server /etc/init.d/mysqld && chmod +x /etc/init.d/mysqld && systemctl enable mysqld
echo -e '\n\nexport PATH=/opt/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile
vi /etc/my.cnf
Edit MySQL configuration file.
[client]
port = 3306
socket = /dev/shm/mysql.sock
[mysqld]
user = mysql
skip-innodb
default-storage-engine=MyISAM
skip-name-resolve
bind-address = 0.0.0.0
port = 3306
socket = /dev/shm/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout
Launch MySQL process:
systemctl start mysqld
Nginx
Download and install Nginx:
cd /usr/src/ && \
wget https://files.x-speed.cc/link/8132351340035753 -O nginx-ct.tar.gz && tar -xvf ./nginx-ct.tar.gz && \
wget https://files.x-speed.cc/link/8149821340045787 -O openssl.tar.gz && tar -xvf ./openssl.tar.gz && \
wget https://files.x-speed.cc/link/6132321318156618 -O nginx.tar.gz && tar -xvf ./nginx.tar.gz && cd nginx-*
Complie Nginx:
./configure --prefix=/opt/nginx --user=www --group=www --with-http_ssl_module --with-http_v2_module --with-stream --with-openssl=../openssl-1.0.2k --add-module=../nginx-ct-1.3.2
make -j 8 && make install
Edit Nginx service file:
vi /etc/init.d/nginx
#!/bin/sh
#
# nginx – this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /opt/nginx/conf/nginx.conf
# pidfile: /opt/nginx/logs/nginx.pid
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/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
Configuration Nginx permission and register service:
useradd -M -r --shell /sbin/nologin --home-dir /opt/nginx www && chown -R www:www /opt/nginx && \
chmod +x /etc/init.d/nginx && \
systemctl enable nginx && \
systemctl start nginx
PHP
Download and install PHP:
cd /usr/src/ && wget https://files.x-speed.cc/link/6132321318156617 -O php.tar.gz && tar -xvf ./php.tar.gz && cd php-*
Complie PHP:
./configure --prefix=/opt/php \
--with-config-file-path=/opt/php/etc \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-opcache \
--enable-fpm \
--with-fpm-user=www --with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-gd
make -j 8 && make install
Configuration php:
cp ./php.ini-production /opt/php/etc/php.ini && \
cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf && \
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && \
chmod +x /etc/init.d/php-fpm
Register php-fpm service:
systemctl enable php-fpm && systemctl start php-fpm
Configuration php-fpm(/opt/php/etc/php-fpm.conf
):
[global]
pid = run/php-fpm.pid
log_level = error
[www]
listen = 127.0.0.1:9000
user = www
group = www
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
request_terminate_timeout = 30
rlimit_files = 51200