创建mysql目录 mkdir -p /usr/local/src/mysql
安装编译环境依赖包 yum -y install gcc gcc-c++ glibc automake autoconf libtool make
开始编译工作
1 2 3 4 5 6
| cd /usr/local/src/mysql
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39.tar.gz
|
编译安装cmake包(本人直接安装依赖包,可选)
1 2 3 4 5 6 7
| wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
tar -zxvf cmake-3.14.5.tar.gz cd cmake-3.14.5 ./bootstrap gmake gmake install
|
直接安装mysql依赖包
1 2 3 4 5 6 7 8 9 10 11
| yum install ncurses-devel cmake -y
解压好boost tar xf boost_1_59_0.tar.gz -C /usr/local/ mv /usr/local/boost_1_59_0 /usr/local/boost
mkdir -p /database/mysql/{data,tmp,binlog,logs} tree -L 2 /database/
groupadd mysql useradd mysql -s /sbin/nologin -M -g mysql
|
开始正式的编译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| tar xf mysql-5.7.39.tar.gz cd mysql-5.7.39
cmake . -DCMAKE_INSTALL_PREFIX=/database/mysql \ -DMYSQL_DATADIR=/database/mysql/data \ -DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \ -DWITH_ZLIB=bundled \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_DEBUG=0 \ -DWITH_BOOST=/usr/local/boost
make && make install
|
mysql配置文件说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 编译参数 说明 - DCMAKE_INSTALL_PREFIX=/database/mysql-5.7.27 设定mysql安装目录 -DMYSQL_DATADIR=/database/mysql-5.7.27/data 设定mysql数据文件目录 -DMYSQL_UNIX_ADDR=/database/mysql-5.7.27/tmp/mysql.sock 设定mysql.sock路径 -DDEFAULT_CHARSET=utf8 设定默认的字符集为utf8 -DDEFAULT_COLLATION=utf8_general_ci 设定默认排序规则 -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 启用额外的字符集类型 -DENABLED_LOCAL_INFILE=ON 启用本地数据导入支持 -DWITH_INNOBASE_STORAGE_ENGINE=1 启用存储引擎;若想启用某个引擎的支持, -DWITHSTORAGEENGINE=1; 若想禁用某个引擎的支持, -DWITHOUT_STORAGE_ENGINE=0 -DWITH_FEDERATED_STORAGE_ENGINE=1 启用存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 启用存储引擎 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 启用存储引擎 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 启用存储引擎 -DWITH_ZLIB=bundled 启用zlib库支持 -DWITH_EMBEDDED_SERVER=1 编译嵌入式服务器支持 -DWITH_DEBUG=0 禁用debug(默认为禁用) -DWITH_BOOST=/usr/local/boost 启用boost库支持,MySQL 5.7版本编译安装需要依赖boost库
|
链接mysql目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| echo 'export PATH=/database/mysql/bin:$PATH' >>/etc/profile
source /etc/profile chown -R mysql:mysql /database/mysql/
mv /etc/my.cnf /etc/my.cnf.bak touch /etc/my.cnf chown mysql:mysql /etc/my.cnf nano /etc/my.cnf
cd /database/mysql/ ./bin/mysqld --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
cd /database/mysql/ ./bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data cd /database/mysql/data/ chown mysql:mysql /etc/my.cnf chmod +r server-key.pem
cd .. cp support-files/mysql.server /etc/init.d/mysqld systemctl daemon-reload chkconfig mysqld on /etc/init.d/mysqld start
|
my.cnf配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [client] port = 3306 socket = /database/mysql/tmp/mysql.sock default-character-set = utf8 [mysqld] port = 3306 user = mysql basedir = /database/mysql datadir = /database/mysql/data pid-file = /database/mysql/mysqld.pid socket = /database/mysql/tmp/mysql.sock tmpdir = /database/mysql/tmp character_set_server = utf8 server-id = 1 max_connections = 100 max_connect_errors = 10 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES log-bin = /database/mysql/binlog/mysql-bin log-error = /database/mysql/logs/mysql_5_7_39.err
|
配置文件说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| [client]
port = 3306
socket = /database/mysql/tmp/mysql.sock
default-character-set = utf8 5、初始化 MySQL 数据库
设定mysql工作目录 [mysqld]
port = 3306
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
pid-file = /database/mysql/mysqld.pid
socket = /database/mysql/tmp/mysql.sock
tmpdir = /database/mysql/tmp
character_set_server = utf8
server-id = 1
max_connections = 100
max_connect_errors = 10
这个之后就可以正常插入为0的数据了
MOD(X,0)),则产生错误(否则为警告)。如果未给出该模式,被零除时MySQL返回NULL
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
log-bin = /database/mysql/binlog/mysql-bin
log-error = /database/mysql/logs/mysql_5_7_27.err
|
安装编译nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-devel perl-ExtUtils-Embed gd-devel
mkdir -p /usr/local/src/nginx cd /usr/local/src/nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz useradd -s /sbin/nologin -M nginx mkdir -p /var/tmp/nginx/client/ cd /usr/local/src/nginx
tar zxvf nginx-1.22.1.tar.gz cd nginx-1.22.1 ./configure \ --user=nginx \ --group=nginx \ --prefix=/usr/local/nginx \ --conf-path=/etc/nginx/nginx.conf \ --sbin-path=/usr/sbin/nginx \ --error-log-path=/var/log/nginx/nginx_error.log \ --http-log-path=/var/log/nginx/nginx_access.log \ --pid-path=/usr/local/nginx/run/nginx.pid \ --lock-path=/usr/local/nginx/lock/nginx \ --with-http_image_filter_module \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-http_perl_module \ --with-mail \ --with-mail_ssl_module \ --with-pcre \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi make && make install
|
配置文件说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| ./configure --user=nginx \ --group=nginx \ --prefix=/usr/local/nginx \ 都要依赖于改选项 --conf-path=/etc/nginx/nginx.conf \ 将会通过这里指定的路径,Nginx将会去那里查找它的配置文件 --sbin-path=/usr/sbin/nginx \ 有指定,那么这个路径会依赖于--prefix选项 --error-log-path=/var/log/nginx/nginx_error.log \ 其中写入错误日志文件,除非有其他配置 --http-log-path=/var/log/nginx/nginx_access.log \ --pid-path=/usr/local/nginx/run/nginx.pid \ 程的pid,通常在/var/run下 --lock-path=/usr/local/nginx/lock/nginx \ --with-http_ssl_module \ (使支持 https 请求,需已安装openssl) --with-http_realip_module \ 持(这个模块允许从请求标头更改客户端的 IP 地址值,默认为关) --with-http_addition_module \ 支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求) --with-http_sub_module \ (允许用一些其他文本替换nginx 响应中的一些文本) --with-http_dav_module \ PUT,DELETE,MKCOL:创建集合,COPY 和 MOVE 方法)默认情况下为关闭,需编译开启 --with-http_flv_module \ (提供寻求内存使用基于时间的偏移量文件) --with-http_gzip_static_module \ ngx_http_gzip_static_module 支持(在线实时压缩输出数据流) --with-http_stub_status_module \ 支持(获取nginx自上次启动以来的工作状态) --with-http_perl_module \ 个选项启用这个模块(然而使用这个模块会降低性能) --with-mail \ 没有被激活 --with-mail_ssl_module \ 的mail,激活该模块 --with-pcre \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ 设置的目录用于作为请求体零食存放的目录,如果WebDAV模块启用,那么推荐设置该路径为同一文件系统 上的目录作为最终的目的地 --http-proxy-temp-path=/var/tmp/nginx/proxy \ 时文件路径 --http-fastcgi-temp-path=/var/tmp/nginx/fcgi \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi
|
设置nginx开机启动项
1 2 3 4 5 6 7 8 9 10 11 12 13
| vim /lib/systemd/system/nginx.service
[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/usr/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| ./configure \ --prefix=/usr/local/php7 \ --with-config-file-path=/usr/local/php7 \ --with-config-file-scan-dir=/usr/local/php7/php.d \ --enable-mysqlnd \ --with-mysqli \ --with-pdo-mysql \ --enable-fpm \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --enable-gd \ --with-iconv \ --with-zlib \ --enable-xml \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --enable-mbregex \ --enable-mbstring \ --enable-ftp \ --with-openssl \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --with-zip \ --enable-soap \ --without-pear \ --with-gettext \ --enable-session \ --with-curl \ --with-jpeg \ --with-freetype \ --enable-opcache
|