LNMP (Linux+nginx+MySQL+php) environment configuration

1. MySQL installation (source package analysis and installation)

directory to install

cd /usr/local/src/
ls

Install some required tools (yum source installation)

yum install -y vim net-tools tree

unzipMySQL

tar -zxvf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz

Change the decompressed MySQL to another directory

mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql

Create a MySQL user (cannot log in), only required for startup

useradd -s /sbin/nologin mysql

Enter the MySQL directory

cd /usr/local/mysql/

Create a directory for data storage and set permissions

mkdir -p /data/mysql #data storage directory
chown -R mysql:mysql #set permissions

Install MySQL environment dependencies

yum install -y perl-Module-Install

Compile the source code of MySQL

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/

Copy to the configuration file my.cnf

cp support-files/my-default.cnf /etc/my.cnf
#Whether to cover y
vim /etc/my.cnf
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
server_id = 29
socket = /tmp/mysql.sock

Configure the startup file

cp support-files/mysql.server /etc/init.d/mysqld
chmod 777 /etc/init.d/mysqld #set permissions
vim /etc/init.d/mysqld
basedir=/usr/local/mysql #It is commented out, remove the comment symbol #to modify
datadir=/data/mysql #It is commented out, remove the comment symbol #to modify
# Finally save wq! 

Add the service of MySQL startup file to chkconfig (management system service)

chkconfig --add mysqld #Make it start automatically at boot
chkconfig mysql on #Enable startup script service

Start the MySQL service

service mysqld start

View Process Services

netstat -ntlp

2. PHP installation and configuration (source package)

cd /usr/local/src/
ls

install dependencies

yum install -y gcc libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype freetype-devel eplel-release libmcrypt-devel libcurl-devel libjpeg-devel
#If the yum source cannot find some packages, try to switch the yum source or copy the package name to search for the yum installation code online

Unzip the source package

tar -zxf php-5.6.30.tar.gz

cd php-5.6.30

Compile the source package

#Pay attention to check whether there is a php-fpm path in the feedback information. If it is not, it will easily cause php-fpm to fail to compile, resulting in inability to operate without fpm. (Recompile or delete the source package and upload again)

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user =php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir -- with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap -- enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl

make & amp; & amp; make install 

After executing make & amp; & amp; make install, a make *** does not specify the target and cannot find the makefile. Stop error reporting (Linux command detailed explanation (3)./configure, make, make install command – Tinywan – Blog Garden (cnblogs.com)) has a detailed introduction,

Solution

./configure #Enter this command first
#In progress make & amp; & amp; make install 

Finally check if there is an error in compilation

echo $?
0

Configure php

Copy and modify the configuration file

cp php.ini-production /usr/local/php-fpm/etc/php.ini #copy configuration file
vim /usr/local/php-fpm/etc/php-fpm.conf #Modify configuration file
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

Create php-fpm user

useradd -s /sbin/nologin php-fpm
/usr/local/php-fpm/sbin/php-fpm -t

Prepare to start

cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm #Give permissions
service php-fpm start #login
chkconfig php-fpm on #Start chkconfig service (boot start)
ps aux |grep php-fpm #View process

3. Install and configure nginx (source package)

cd /usr/local/src/
ls

Unzip the nginx source code archive

tar zxf nginx-1.17.8.tar.gz
cd nginx-1.17.8
./configure --prefix=/usr/local/nginx #Compile the nginx source package
make & amp; & amp; make install
echo $?

Configure nginx file

vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
./etc/init.d/functions
#Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL

chmod 755 /etc/init.d/nginx #Give permission
chkconfig --add nginx
chkconfig nginx on #boot self-start
> /usr/local/nginx/conf/nginx.conf

Configure the main configuration file of nginx

vim /usr/local/nginx/conf/nginx.conf
user nobody nobody;
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 6000;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}

start service

service nginx start

view progress

ps aux | grep nginx

test nginx

curl localhost

Finally test whether nginx can parse php

vim /usr/local/nginx/html/1.php
<?php
        echo "test php scripts"
?>

Test success