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