风一样的回忆

新浪微薄腾讯微薄

最新碎语:最近开始学习俄语!!!

您的位置:风一样的回忆 >php> 【原创】纯手动打造CentOS6.7 + Nginx1.14 + MySql5.6 + Php7.2

【原创】纯手动打造CentOS6.7 + Nginx1.14 + MySql5.6 + Php7.2

好长时间没亲自手动编译过lnmp环境了,一般开发使用一键安装环境包。难得今天我有空,亲自手动打造LNMP环境练手。下面安装教程100%安装成功!!!

一、准备工作,先查看当前系统位数(本人安装的32位Centos6)

getconf LONG_BIT
32

二、安装MySql5.6

1、下载安装mysql

cd /usr/local/src/
wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-i686.tar.gz
mv mirror mysql-5.6.43-linux-glibc2.12-i686.tar.gz
tar -zxvf mysql-5.6.43-linux-glibc2.12-i686.tar.gz
mv mysql-5.6.43-linux-glibc2.12-i686 /usr/local/mysql
useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld

2、编辑配置文件,并修改为以下配置。

vim /etc/my.cnf 

[client]
port = 3306  
socket = /data/mysql/mysql.sock

[mysql]
#这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。
no-auto-rehash

[mysqld]
user = mysql  
port = 3306  
socket = /data/mysql/mysql.sock 
basedir = /usr/local/mysql  
datadir = /data/mysql/  
open_files_limit = 10240

back_log = 600  
max_connections = 3000  
max_connect_errors = 6000  
external-locking = FALSE  
max_allowed_packet = 32M  
sort_buffer_size = 2M  
join_buffer_size = 2M  
thread_cache_size = 8  
#默认38
#设置规则如下:1GB 内存配置为8,2GB配置为16,3GB配置为32,4GB或更高内存,可配置更大。
#thread_concurrency = 4  
query_cache_size = 64M  
query_cache_limit = 4M  
#指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_min_res_unit = 2k  
default-storage-engine = InnoDB
#default_table_type = InnoDB #开启失败
thread_stack = 192K  
transaction_isolation = READ-COMMITTED  
# 设定默认的事务隔离级别.可用的级别如下:READ UNCOMMITTED-读未提交 READ COMMITTE-读已提交 REPEATABLE READ -可重复读 SERIALIZABLE -串行
tmp_table_size = 256M  
# tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。如果超过该值,则会将临时表写入磁盘。
max_heap_table_size = 256M

expire_logs_days = 7  
key_buffer_size = 128M  
#批定用于索引的缓冲区大小,增加它可以得到更好的索引处理性能,对于内存在4GB左右的服务器来说,该参数可设置为256MB或384MB。

read_buffer_size = 256K  
#默认128K
read_rnd_buffer_size = 8M  
bulk_insert_buffer_size = 32M  
#批量插入数据缓存大小,可以有效提高插入效率,默认为8M
myisam_sort_buffer_size = 128M  
# MyISAM表发生变化时重新排序所需的缓冲 默认8M
myisam_max_sort_file_size = 1G  
# MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)

#myisam_repair_threads = 1   默认为1
# 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.
# 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.

myisam_recover  
#自动检查和修复没有适当关闭的 MyISAM 表
skip-name-resolve  
lower_case_table_names = 1  
server-id = 1

innodb_additional_mem_pool_size = 16M  
#这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。

innodb_buffer_pool_size = 1024M  
# 这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了

#innodb_data_file_path = ibdata1:1024M:autoextend 设置过大导致报错,默认12M观察
#表空间文件 重要数据

#innodb_file_io_threads = 4   不明确,使用默认值
#文件IO的线程数,一般为 4,但是在 Windows 下,可以设置得较大。

innodb_thread_concurrency = 8  
#服务器有几个CPU就设置为几,建议用默认设置,一般为8.

innodb_flush_log_at_trx_commit = 2  
# 如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。

#innodb_log_buffer_size = 16M   使用默认8M
#此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间

#innodb_log_file_size = 128M  使用默认48M
#此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间

#innodb_log_files_in_group = 3   使用默认2
#为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M

#innodb_max_dirty_pages_pct = 90  使用默认75观察
#推荐阅读 http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html
# Buffer_Pool中Dirty_Page所占的数量,直接影响InnoDB的关闭时间。参数innodb_max_dirty_pages_pct 可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸运的是innodb_max_dirty_pages_pct是可以动态改变的。所以,在关闭InnoDB之前先将innodb_max_dirty_pages_pct调小,强制数据块Flush一段时间,则能够大大缩短 MySQL关闭的时间。

innodb_lock_wait_timeout = 120  
#默认为50秒 

innodb_file_per_table = 0  
#默认为No
#独享表空间(关闭)

[mysqldump]
quick  
# max_allowed_packet = 32M

[mysqld_safe]
log-error=/data/mysql/mysql_oldboy.err  
pid-file=/data/mysql/mysqld.pid

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

上述配置适用1G内存的VPS优化

3、结束mysql服务,修改默认密码

killall mysqld
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
use mysql;
 delete from user where user='';   删除空用户
 update user set password=password("123456") where user="root";
 flush privileges;
 exit;
 killall mysqld
 service mysqld start

三、安装PHP7.2.15 

1、更新环境

 yum -y install openssl openssl-devel curl-devel 
 yum -y install libxml2 libxml2-devel libjpeg-devel 
 yum -y install libpng libpng-devel freetype freetype-devel

2、下载并编译php

wget http://120.52.51.19/cn2.php.net/distributions/php-7.2.15.tar.gz
tar -zxvf php-7.2.15.tar.gz
cd php-7.2.15
./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-mysqli=/usr/local/mysql/bin/mysql_config \\
--with-pdo-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 \\
--enable-soap \\
--enable-ftp \\
--enable-mbstring \\
--enable-exif \\
--with-pear \\
--with-curl  \\
--with-openssl

make && make install

3、配置php.ini

cp php.ini-production /usr/local/php-fpm/etc/php.ini
启动php-fpm
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

4、修改php-fpm配置文件

vim  /usr/local/php-fpm/etc/php-fpm.conf

[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

5、将php-fpm加入系统环境变量

vi ~/.bash_profile
PATH=$PATH:$HOME/bin
改为:
PATH=$PATH:$HOME/bin:/usr/local/php-fpm/bin
sh ~/.bash_profile

四、安装Nginx

1、准备环境

yum -y install pcre-devel

2、下载Nginx ,并编译安装

wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx \\
--with-http_ssl_module \\
--with-http_stub_status_module
make && make install

3、配置启动文件

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
}
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

4、配置nginx

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;
        }
    }
}

5、启动nginx

chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on 

service nginx restart
service nginx php-fpm restart

五、测试

curl localhost/test.php
显示test


---

转载请注明本文标题和链接:《【原创】纯手动打造CentOS6.7 + Nginx1.14 + MySql5.6 + Php7.2

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交