CentOS6.9编译安装LNMP环境

CentOS6.9编译安装LNMP环境

今天尝试一下用编译的方式来搭建lnmp运行环境。所有软件都采用当前最新版本,除了CentOS。这是由于目前企业大多数应该都还在使用CentOS6的缘故,并且CentOS7目前还在迭代中。虽说不会有大的改动,但也算不上完全稳定下来吧。

那么开始吧,这次也是边装边写的方式。

运行环境和软件版本

CentOS是运行在Virtual Box虚拟机上的 CentOS 6.9 x86_64 minimal 版本。宿主机是Windows10家庭普通版64位,这一点关系不大,姑且说明一下。在安装好系统后依次运行了 yum update  yum groupinstall "development tools"  yum install vim  yum install wget 来更新系统、安装开发者环境包、安装vim和wget。

Nginx、PHP、MySQL使用当前最新版本的 nginx-1.12.0  php-7.1.4  mysql-5.7.18 。

安装步骤

1.下载要安装的软件包

我这里是直接在虚拟机上用wget工具下载,命令如下:

1 wget http://nginx.org/download/nginx-1.12.0.tar.gz -O /usr/local/src/nginx-1.12.0.tar.gz
1 wget http://am1.php.net/distributions/php-7.1.4.tar.gz -O /usr/local/src/php-7.1.4.tar.gz
1 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.18.tar.gz -O /usr/local/src/mysql-boost-5.7.18.tar.gz

当然你也可以在其它地方下载好再传到虚拟机上,随意。

注意文件访问权限,有些文件夹非root用户是不能访问的。还有,之所以选择mysql-boost-5.7.18.tar.gz这个安装包是因为mysql5.7编译安装需要用到boost,所以干脆选择了带boost的版本。虽然我也不太明白boost是个啥,好像是编译器的一种?

下载完毕:

接下来就开始编译安装了。

2.编译安装Nginx

就先从nginx开始吧。首先解压:

1 tar -zxv -f /usr/local/src/nginx-1.12.0.tar.gz -C /usr/local/src/

解压完成:

然后进入解压目录:

1 cd /usr/local/src/nginx-1.12.0

通过 ls 命令可以查看解压结果里包含了哪些文件。通过 ./configure --help | less 命令查看编译选项,按 q 退出。 

不过我这里只会安装 --with-http_ssl_module 、 --with-http_stub_status_module 、 --with-http_auth_request_module 、 --with-http_perl_module 、 --with-mail 、 --with-stream 、 --with-pcre 这几个模块。

安装模块需要环境的支持,考虑到我之前已经安装了development tools,应该没问题的。如果缺的话,报错了再补。

然后,需要创建nginx运行账号和nginx安装目录,命令如下:

1 useradd nginx -s /sbin/nologin -M
2 mkdir /usr/local/nginx-1.12.0

可以通过 cat /etc/passwd 和 ls /usr/local 查看创建的账号和目录。

接下来执行预编译脚本,如下:

 1 ./configure \
 2 --prefix=/usr/local/nginx-1.12.0 \
 3 --user=nginx \
 4 --group=nginx \
 5 --with-select_module \
 6 --with-poll_module \
 7 --with-http_ssl_module \
 8 --with-http_stub_status_module \
 9 --with-http_auth_request_module \
10 --with-http_perl_module \
11 --with-mail \
12 --with-stream \
13 --with-pcre

然后报错了:

1 ./configure: error: the HTTP rewrite module requires the PCRE library.
2 You can either disable the module by using --without-http_rewrite_module
3 option, or install the PCRE library into the system, or build the PCRE library
4 statically from the source with nginx by using --with-pcre=<path> option.

看来是缺少pcre支持,那么补上: yum install pcre-devel pcre-static ,然后再执行一次。

这次是缺少openssl:

1 ./configure: error: SSL modules require the OpenSSL library.
2 You can either do not enable the modules, or install the OpenSSL library
3 into the system, or build the OpenSSL library statically from the source
4 with nginx by using --with-openssl=<path> option.

执行 yum install openssl-devel openssl-perl openssl-static ,然后再执行一次。

又又报错了:

1 checking for perl
2  + perl version: v5.10.1 (*) built for x86_64-linux-thread-multi
3 Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
4 BEGIN failed--compilation aborted.
5 
6 ./configure: error: perl module ExtUtils::Embed is required

好像又是少了什么东西,搜索了一下,大概是要装这个: yum install perl-ExtUtils-Embed 。那么,再再执行一次吧。

这次没报错,执行预编译脚本成功。

可以编译安装了,分别执行 make 和 make install 吧。

等执行完毕,用 ls /usr/local/nginx-1.12.0 命令可以看到安装目录下有文件生成,接下来执行nginx命令查看是否成功安装。

执行 /usr/local/nginx-1.12.0/sbin/nginx -t ,结果如下:

说明安装成功。接着执行 /usr/local/nginx-1.12.0/sbin/nginx 就可以启动nginx服务。

执行 curl http://localhost 可以看到如下结果:

默认的主页html文件内容被获取了,说明服务确实成功启动。

为了不影响接下来的操作,执行 /usr/local/nginx-1.12.0/sbin/nginx -s quit 关闭nginx服务。

接下来安装PHP。

3.编译安装PHP

先解压: tar -zxv -f /usr/local/src/php-7.1.4.tar.gz -C /usr/local/src/ 。

创建安装目录: mkdir /usr/local/php-7.1.4 。

进入安装包目录: cd /usr/local/src/php-7.1.4 ,可以通过执行预编译脚本 ./configure --help | less 来查看有哪些安装选项。

可以看到php的安装选项众多,扩展数量多也是php的强大之处。

考虑到常用的功能和特性,还有php可以在安装后安装扩展,现在还是尽可能少的选择安装选项吧。

 1 ./configure \
 2 --prefix=/usr/local/php-7.1.4 \
 3 --enable-fpm \
 4 --with-fpm-user=nginx \
 5 --with-fpm-group=nginx \
 6 --with-mysqli \
 7 --with-pdo-mysql \
 8 --with-zlib \
 9 --with-gd \
10 --with-curl \
11 --with-mcrypt \
12 --enable-mbstring \
13 --enable-soap \
14 --enable-zip \
15 --enable-ftp \
16 --with-openssl

稍微查了一下,暂且按上述选项编译吧。

报错了:

1 configure: error: xml2-config not found. Please check your libxml2 installation.

望文生义貌似是libxmls的缺少造成的。那么执行 yum install libxml2 libxml2-devel libxml2-static 补上我猜可能必要的开发环境。然后接着执行上述的预编译脚本。

又报错了:

1 configure: error: Please reinstall the libcurl distribution -
2     easy.h should be in <curl-dir>/include/curl/

这次是libcurl,补上 yum install libcurl libcurl-devel ,再来。

又又报错了:

 1 checking for GD support... yes
 2 checking for the location of libwebp... no
 3 checking for the location of libjpeg... no
 4 checking for the location of libpng... no
 5 checking for the location of libXpm... no
 6 checking for FreeType 2... no
 7 checking whether to enable truetype string function in GD... no
 8 checking whether to enable JIS-mapped Japanese font support in GD... no
 9 If configure fails try --with-webp-dir=<DIR>
10 If configure fails try --with-jpeg-dir=<DIR>
11 configure: error: png.h not found.

这次是和GD库又关,因为是和图像处理有关的扩展,所以jpeg、png、gif等图像开发环境是必要的。

但是我想尽可能少安装,所以先试试 yum install gd gd-devel 。然后执行预编译脚本。

gd库的检测通过了,但是出现了新的错误:

1 configure: error: mcrypt.h not found. Please reinstall libmcrypt.

这次是mcrypt库的问题,问题是CentOS6.9的yum库已经不支持mcrypt的安装,改用gcrypt了。没办法,自己下载吧。

根据php的官方文档:

需求

这些函数需要使用 » mcrypt 库。 请从 » http://mcrypt.sourceforge.net/ 下载 libmcrypt-x.x.tar.gz, 并按以下指导完成安装。

从 PHP 5.0.0 开始,你需要使用 libcrypt 2.5.6 或更高版本。

PHP 5.2 的 Windows 二进制发行版中已经包含了本库。 PHP 5.3 的 Windows 二进制发行版中开始使用 MCrypt 静态库, 所以不再需要 DLL。

如果使用 libmcrypt 2.4.x 或更高版本链接编译 PHP,支持以下附加的分组加密算法: CAST,LOKI97,RIJNDAEL,SAFERPLUS,SERPENT, 以及以下流密码:ENIGMA(加密), PANAMA,RC4 和 WAKE。 如果使用 libmcrypt 2.4.x 或更高版本,那么还支持 nOFB 密码模式。

可以知道php所需要的mcrypt库的下载地址和安装方法,照做就可以了。

先下载 wget https://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz -O /usr/local/src/libmcrypt-2.5.8.tar.gz ,然后解压 tar -zxv -f /usr/local/src/libmcrypt-2.5.8.tar.gz -C /usr/local/src/ ,创建安装目录 mkdir /usr/local/libmcrypt-2.5.8 ,进入解压生成的目录 cd /usr/local/src/libmcrypt-2.5.8 ,执行预编译脚本 ./configure --prefix=/usr/local/libmcrypt-2.5.8 ,编译和安装 make && make install 。到此,libmcrypt的安装就完成了。接着进入php安装包解压生成的目录执行php的预编译脚本。

执行后发现还是报和之前一样的错误,可能是安装libmcrypt时自定义了安装路径的原因。这里需要修改一下php的预编译脚本的编译选项:

 1 ./configure \
 2 --prefix=/usr/local/php-7.1.4 \
 3 --enable-fpm \
 4 --with-fpm-user=nginx \
 5 --with-fpm-group=nginx \
 6 --with-mysqli \
 7 --with-pdo-mysql \
 8 --with-zlib \
 9 --with-gd \
10 --with-curl \
11 --with-mcrypt=/usr/local/libmcrypt-2.5.8 \
12 --enable-mbstring \
13 --enable-soap \
14 --enable-zip \
15 --enable-ftp \
16 --with-openssl

注意第11行, --with-mcrypt 选项指明了安装路径。再次执行php的预编译脚本,这次没有报错,执行成功。

接着只要依次执行 make 和 make install 就可以了,当然也可以放在一起执行 make && make install 。

一般在编译和安装的过程中是不会出什么问题,我也从来没在这出过问题,所以也没有解决的经验。

然后就是简单配置一下看看能不能用。

根据预编译选项 --prefix 和帮助信息,得知php.ini文件应该放在[PREFIX]/lib目录下。那么我们就在该目录下生成一个配置文件吧: cp /usr/local/src/php-7.1.4/php.ini-development /usr/local/php-7.1.4/lib/php.ini 。我记得不用改什么吧。

然后是php-fpm。首先 cp /usr/local/php-7.1.4/etc/php-fpm.conf.default /usr/local/php-7.1.4/etc/php-fpm.conf ,大概看了一下,还需要 cp /usr/local/php-7.1.4/etc/php-fpm.d/www.conf.default /usr/local/php-7.1.4/etc/php-fpm.d/www.conf 。内容不用改,反正是试运行。

还需要配置一下nginx并启动,执行 vim /usr/local/nginx-1.12.0/conf/nginx.conf :

将65行至71行的注释去掉,并将69行的内容按上图改动,接着保存退出。

生成一个测试用的php脚本 vim /usr/local/nginx-1.12.0/html/index.php :

注意文件位置。

启动nginx服务: /usr/local/nginx-1.12.0/sbin/nginx 。或者在启动前检查一下配置文件是否出错: /usr/local/nginx-1.12.0/sbin/nginx -t 。

启动php-fpm: /usr/local/php-7.1.4/sbin/php-fpm 。

关闭iptables: service iptables stop 。

然后在宿主机的浏览器内输入 http://192.168.31.222/index.php 。前面的ip地址因人而异,可以通过 ifconfig 命令查看。显示如下页面说明成功了:

可以通过 ps -aux | grep "php-fpm" 命令查看php-fpm的主进程号,然后通过 kill -quit 2505 来关闭服务。注意这个2505是我的虚拟机上运行的php-fpm的主进程号,这个号码一般都是不同的。

4.编译安装MySQL

5.7版本的MySQL编译和初始化都挺麻烦的,尤其是要自定义安装路径和选项。走到这一步我也不确定能否顺利安装好,姑且按照文档走一步算一步吧。

通过文档的2.9 Installing MySQL from Source这一章节可以知道,cmake工具在编译时是必要的。此外,还需要安装boost。如果安装的是development source tree这一版本,还需要安装git和bison。

那么先准备安装环境吧。执行 yum install cmake 来安装cmake。虽然不知道development source tree是什么,但是为了以防万一还是把git和bison也装上吧: yum install bison git 。

解压安装包: tar -zxv -f /usr/local/src/mysql-boost-5.7.18.tar.gz -C /usr/local/src/ 。通过 ls /usr/local/src/mysql-5.7.18/ 命令可以看到解压生成的目录中附带了boost。

一层层的看进去发现并不是安装文件,更像是已经安装好的文件,那我们就不用再安装boost了。反正根据文档,boost只是在编译的时候用到。

那么现在查看文档看看安装的步骤吧。

首先要创建MySQL服务运行时的账户 useradd mysql -s /sbin/nologin -M 。然后创建安装目录 mkdir /usr/local/mysql-5.7.18 。

接着进入解压生成的目录 cd /usr/local/src/mysql-5.7.18/ 。可以通过 ls 命令查看目录下的文件。还可以通过 cmake . -LAH | less 来查看帮助和安装选项。

发现通过上述命令获取的帮助信息不好懂且没有调理,还是得看文档2.9.4 MySQL Source-Configuration Options。研究了一下,编译选项如下:

1 cmake . \
2 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.18 \
3 -DWITH_BOOST=/usr/local/src/mysql-5.7.18/boost

打算偷个懒,就这样预编译试试看吧。 

啊,报错了:

 1 -- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) 
 2 CMake Error at cmake/readline.cmake:64 (MESSAGE):
 3   Curses library not found.  Please install appropriate package,
 4 
 5       remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
 6 Call Stack (most recent call first):
 7   cmake/readline.cmake:107 (FIND_CURSES)
 8   cmake/readline.cmake:197 (MYSQL_USE_BUNDLED_EDITLINE)
 9   CMakeLists.txt:488 (MYSQL_CHECK_EDITLINE)
10 
11 
12 -- Configuring incomplete, errors occurred!
13 See also "/usr/local/src/mysql-5.7.18/CMakeFiles/CMakeOutput.log".
14 See also "/usr/local/src/mysql-5.7.18/CMakeFiles/CMakeError.log".

查了一下,好像是缺ncurses组件。那就补上吧: yum install ncurses ncurses-devel ncurses-libs ncurses-static 。之后再次执行预编译。

再次执行却以更快的速度报一样的错,仔细一看原来少执行了一步操作: remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. 。好吧,删掉目录下的CMakeCache.txt文件 rm CMakeCache.txt ,然后再次执行。

这次顺利预编译完了:

接下来依次执行 make 和 make install 就行了。

编译的过程相当之慢,我去做其他事情好了。

编译过程中报了这个错误,不知道有什么影响没有。话说这和boost有关吧?难道是我的boost没好好安装的原因?

阿西吧,终于编译完了,中间我洗了个澡还看了集动漫。接着执行 make install 。

我擦,报错了:

1 CMake Error at libmysqld/examples/cmake_install.cmake:44 (FILE):
2   file INSTALL cannot copy file
3   "/usr/local/src/mysql-5.7.18/libmysqld/examples/CMakeFiles/CMakeRelink.dir/mysql_client_test_embedded"
4   to "/usr/local/mysql-5.7.18/bin/mysql_client_test_embedded".
5 Call Stack (most recent call first):
6   cmake_install.cmake:122 (INCLUDE)
7 
8 
9 make: *** [install] Error 1

算了算了,时间不早了。先睡觉,明天再说吧。

我回来了。

查了一下,上述错误是由缺少gcc和gcc-c++引起的,那就干脆补上所有有关的: yum install gcc gcc-c++ gcc-java gcc-gnat libgcc compat-gcc-34 compat-gcc-34-c++ compat-gcc-34-g77 gcc-objc gcc-objc++ 。

我勒个擦,虚拟机的硬盘满了:

 1 Running rpm_check_debug
 2 Running Transaction Test
 3 
 4 
 5 Transaction Check Error:
 6   installing package gcc-objc-4.4.7-18.el6.x86_64 needs 11MB on the /usr filesystem
 7   installing package ecj-1:4.5.2-3.el6.x86_64 needs 21MB on the /usr filesystem
 8   installing package libgnat-devel-4.4.7-18.el6.x86_64 needs 46MB on the /usr filesystem
 9   installing package libgnat-4.4.7-18.el6.x86_64 needs 50MB on the /usr filesystem
10   installing package gcc-gnat-4.4.7-18.el6.x86_64 needs 73MB on the /usr filesystem
11   installing package jpackage-utils-0:1.7.5-3.16.el6.noarch needs 73MB on the /usr filesystem
12   installing package compat-gcc-34-c++-3.4.6-19.el6.x86_64 needs 162MB on the /usr filesystem
13   installing package gcc-java-4.4.7-18.el6.x86_64 needs 172MB on the /usr filesystem
14   installing package compat-gcc-34-3.4.6-19.el6.x86_64 needs 185MB on the /usr filesystem
15   installing package compat-libf2c-34-3.4.6-19.el6.x86_64 needs 185MB on the /usr filesystem
16   installing package libgcj-devel-4.4.7-18.el6.x86_64 needs 203MB on the /usr filesystem
17   installing package gcc-objc++-4.4.7-18.el6.x86_64 needs 213MB on the /usr filesystem
18   installing package java_cup-1:0.10k-5.el6.x86_64 needs 214MB on the /usr filesystem
19   installing package compat-gcc-34-g77-3.4.6-19.el6.x86_64 needs 220MB on the /usr filesystem
20   installing package sinjdoc-0.5-9.1.el6.x86_64 needs 223MB on the /usr filesystem
21   installing package libobjc-4.4.7-18.el6.x86_64 needs 223MB on the /usr filesystem
22   installing package java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 needs 223MB on the /usr filesystem
23 
24 Error Summary
25 -------------
26 Disk Requirements:
27   At least 223MB more space needed on the /usr filesystem.

这叫老夫如何是好,网上查查怎么加硬盘或者重新分区之类的吧。实在不行只能重装了。

网上看了看,可能要用到fdisk和Virtual Box Manager。我都不太熟而且好麻烦QAQ,算了算了,重装一个虚拟机吧orz

这次分30G给/usr/local,总没问题了吧。

等等等等,仔细看了一下,发现容量都是被下载的软件包和解压包给占据了,只要把它们删掉就好。

总之,删掉就好了。

啊~不用重装了,被救赎。

继续吧,运行 yum install gcc gcc-c++ gcc-java gcc-gnat libgcc compat-gcc-34 compat-gcc-34-c++ compat-gcc-34-g77 gcc-objc gcc-objc++ 。

考虑到之前编译MySQL的过程中好像报了boost相关的warning,决定还是老老实实的安装boost吧。

首先下载安装包:

1 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18.tar.gz -O /usr/local/src/mysql-5.7.18.tar.gz
1 wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz -O /usr/local/src/boost_1_59_0.tar.gz

这次换不带boost的MySQL版本,然后按文档里说的,boost必须是1.59版本。

用wget下载boost实在太慢了,最后我上了迅雷,下载好后传到了虚拟机上。

解压boost tar -zxv -f /usr/local/src/boost_1_59_0.tar.gz -C /usr/local/src/ 。创建安装目录 mkdir /usr/local/boost-1.59.0 。进入解压生成的目录 cd /usr/local/src/boost-1.59.0 。执行预编译脚本 ./bootstrap.sh --prefix=/usr/local/boost-1.59.0 。然后执行 ./b2 ,这一步必较久,等着吧。报了一些看不懂的错误,查了一下还要安装依赖什么的,那就装上吧 yum install gcc gcc-c++ bzip2 bzip2-libs bzip2-devel python python-devel 。删掉解压的目录前面的步骤再执行一次。接着执行 ./b2 install 就ok了。

接下来重新编译安装MySQL。

删除之前的安装生成文件 rm -rf /usr/local/mysql-5.7.18/* 。解压新的安装文件 tar -zxv -f /usr/local/src/mysql-5.7.18.tar.gz -C /usr/local/src/ 。进入解压生成的目录 cd /usr/local/src/mysql-5.7.18 。执行预编译命令 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.18 -DWITH_BOOST=/usr/local/boost-1.59.0 。

啊,报错了:

 1 CMake Error at cmake/boost.cmake:81 (MESSAGE):
 2   You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
 3 
 4   This CMake script will look for boost in <directory>.  If it is not there,
 5   it will download and unpack it (in that directory) for you.
 6 
 7   If you are inside a firewall, you may need to use an http proxy:
 8 
 9   export http_proxy=http://example.com:80
10 
11 Call Stack (most recent call first):
12   cmake/boost.cmake:167 (COULD_NOT_FIND_BOOST)
13   CMakeLists.txt:460 (INCLUDE)
14 
15 
16 -- Configuring incomplete, errors occurred!
17 See also "/usr/local/src/mysql-5.7.18/CMakeFiles/CMakeOutput.log".
18 See also "/usr/local/src/mysql-5.7.18/CMakeFiles/CMakeError.log".

想想应该是预编译时boost的包含路径有问题,应该包含安装生成文件里的include目录。那么,依次执行  rm CMakeCache.txt 和 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.18 -DWITH_BOOST=/usr/local/boost-1.59.0/include 。

结果ok。接下来执行 make 和 make install 就可以了。

漫长的等待过程,去干点别的吧。

终...终于好了。

接下来就是初始化了。

按照文档,要先修改安装目录和文件所属组和所属用户 chgrp -R mysql /usr/local/mysql-5.7.18  chown -R mysql /usr/local/mysql-5.7.18 。

接下来创建一个放数据库文件、socket文件、pid文件和配置文件的目录,就放在/var目录下好了

1 mkdir /var/local/mysql-5.7.18
2 mkdir /var/local/mysql-5.7.18/data
3 mkdir /var/local/mysql-5.7.18/run
4 mkdir /var/local/mysql-5.7.18/log
5 mkdir /var/local/mysql-5.7.18/etc

生成一个配置文件 vim /var/local/mysql-5.7.18/etc/my.cnf ,内容为:

[client]
port=3306
socket=/var/local/mysql-5.7.18/run/mysql.sock[mysql]
no-auto-rehash[mysqld]
basedir=/usr/local/mysql-5.7.18
datadir=/var/local/mysql-5.7.18/data
user=mysql
port=3306
socket=/var/local/mysql-5.7.18/run/mysql.sock
pid-file=/var/local/mysql-5.7.18/run/mysql.pid

网上抄来的,似懂非懂。

把上述目录和文件都修改所属 chgrp -R mysql /var/local/mysql-5.7.18  chown -R mysql /var/local/mysql-5.7.18 。

然后执行初始化命令:

1 /usr/local/mysql-5.7.18/bin/mysqld \
2 --defaults-file=/var/local/mysql-5.7.18/etc/my.cnf \
3 --initialize \
4 --character_set_server=utf8 \
5 --collation_server=utf8_general_ci

虽然报了一些看不懂的警告,但是初始化好像是成功了,还生成了随机密码:

1 2017-04-24T10:27:35.480795Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2 2017-04-24T10:27:36.378470Z 0 [Warning] InnoDB: New log files created, LSN=45790
3 2017-04-24T10:27:36.557201Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
4 2017-04-24T10:27:36.666538Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a2c08f2f-28d8-11e7-b53a-08002728b6d3.
5 2017-04-24T10:27:36.673556Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
6 2017-04-24T10:27:36.676216Z 1 [Note] A temporary password is generated for root@localhost: jyJoLj>9G_!-

接下来试着启动服务 /usr/local/mysql-5.7.18/bin/mysqld --defaults-file=/var/local/mysql-5.7.18/etc/my.cnf & ,按 Ctrl + C 退出控制台占用,执行 /usr/local/mysql-5.7.18/bin/mysql --defaults-file=/var/local/mysql-5.7.18/etc/my.cnf -u root -p ,之后要输入密码。后面的密码来自之前初始化后成功的提示的最后一行。

5.8版本规定进入MySQL后并不能执行任何操作,必须先改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 。且密码必须大于8位,包含字符数字字母,真是烦死了。

如图,终于成功了。接下来可以执行 exit 退出。再接着可以执行 /usr/local/mysql-5.7.18/bin/mysqladmin --defaults-file=/var/local/mysql-5.7.18/etc/my.cnf shutdown -u root -p 后输入密码来结束服务。

至此,MySQL5.7.18终于他喵的装好了。 

5.测试Nginx、PHP和MySQL协同工作

接下来就是让这三个软件协同工作,成为一个可以跑php代码的环境。

首先启动所有服务:

1 /usr/local/nginx-1.12.0/sbin/nginx
2 /usr/local/php-7.1.4/sbin/php-fpm
3 /usr/local/mysql-5.7.18/bin/mysqld --defaults-file=/var/local/mysql-5.7.18/etc/my.cnf &

记得关闭iptables服务 service iptables stop 。

在数据库中创建一个test数据库。

创建一个测试用的PHP脚本 vim /usr/local/nginx-1.12.0/html/mysql.php  vim /usr/local/nginx-1.12.0/html/mysql.php ,其内容为:

 1 <?php
 2 echo "hello world";
 3 echo "<br>";
 4 echo "MySQLi<br>";
 5 $mysqli=new mysqli("127.0.0.1","root",'!@#123qwe',"test");
 6 if($mysqli->connect_error){
 7     echo "数据库连接失败!";
 8 }else{
 9     echo "数据库连接成功!";
10 }
11 echo "<br>";
12 echo "PDO<br>";
13 try{
14     $dbc=new PDO("mysql:host=127.0.0.1;dbname=test","root","!@#123qwe");
15 }catch(PDOExtension $e){
16     echo "数据库连接失败:".$e->getMessage();
17 }
18 echo "数据库连接成功!";
19 ?>

然后访问这个脚本 http://192.168.31.222/mysql.php ,结果如下:

OK~没有问题~

总结

一步步操作下来,发现环境搭配对萌新来说一点都不友好。所以我觉得志不在运维的同学还是用集成环境吧,那个多省事的。

还有半吊子就不要参与运维了,会给人添麻烦的。

这还只是配了个能跑的环境,还没考虑性能的优化,MySQL主从这些蛋疼的东西。所以运维还是得交给专业的来。

有空的话多学学MySQL,很有必要。

转载于:https://www.cnblogs.com/zxj2017/p/6744859.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物,AI,心理:目前的大脑/认知/意识/AGI/DRL模型

来源&#xff1a;人工智能前沿讲习一 基于生物和经验的模型首先是 2012 年的 Spaun&#xff0c;基于生物基础&#xff08;脑图谱&#xff09;&#xff0c;类生物神经元&#xff08;尖峰放电 SNN&#xff09;。在训练后可完成多种识别和生成和反应任务。map the visual hierar…

java 使用nullable_Java Stream ofNullable(T)用法及代码示例

如果此流不为null&#xff0c;则ofNullable(T)方法将返回包含单个元素的顺序Stream&#xff0c;否则该方法将返回空Stream。它有助于处理空流和NullPointerException。用法:static Stream ofNullable(T t)参数&#xff1a;此方法接受单个参数t&#xff0c;该参数t是要返回其Str…

python数据标注工具_数据标注工具大全汇总,有了这些工具再也不用自己开发了...

数据标注工具大全汇总&#xff0c;有了这些工具再也不用自己开发了。 做数据标注三年了&#xff0c;总是遇到各种各样的需求&#xff0c;总是想找一款最高效&#xff0c;最快速&#xff0c;最好用的标注工具&#xff0c;最重要的是免费&#xff0c;经过三年的收集&#xff0c;大…

决策智能(Decision Intelligence)二三事

来源&#xff1a;https://www.zhihu.com/people/wang-jing-28-89-94什么是决策智能&#xff1f;大家看到这四个字&#xff0c;大多数人心里的发问会是”什么是决策智能“呢&#xff1f;别说你没想&#xff0c;别骗我了。那么什么是决策智能呢&#xff1f;以下是维基的定义&…

python基础——面向对象的程序设计

python基础——面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程&#xff0c;过程即解决问题的步骤&#xff0c;面向过程的设计就好比精心设计好一条流水线&#xff0c;考虑周全什么时候处理什么东西。 优点是&#xff1a;极大的降低了程序的复杂…

移动端 h5如何生成快捷方式_削微整理了几个经常在H5移动端开发遇到的东西

不用说我也知道&#xff0c;此类文章太多太多了&#xff0c;常见的譬如&#xff1a;viewport、强制浏览器全屏、IOS的Web APP模式、可点击元素出现阴影&#xff08;这个我觉得真没必要去掉&#xff0c;用户点击是需要反馈的&#xff0c;而这个背景色刚刚好提供了一种反馈&#…

SCI至上只是结果,而不是原因

来源&#xff1a;赵斌科学网博客我从来不认为SCI一无是处&#xff0c;相反&#xff0c;我们大多数科研人员应该感谢它。中国科研评价体系中的的问题&#xff0c;不是破四唯&#xff0c;破SCI至上&#xff0c;而是打破特权、消除歧视。近日&#xff0c;教育部和科技部联合发文&a…

spark mysql 交互_Spark - 直接操作数据源 MySQL

如果我们的Mysql服务器性能不咋滴&#xff0c;但是硬盘很够&#xff0c;如何才能做各种复杂的聚合操作&#xff1f;答案就是使用spark的计算能力的&#xff0c;我们可以将mysql数据源接入到spark中。读取val mysqlDF spark.read.format("jdbc").option("driver…

maven+SSM框架工程搭建

1.百度下载 maven 和 tomcat 安装 配置环境变量 2.使用最新版eclipse 集成maven maven conf文件夹下的settings.xml文件配置存放maven仓库的位置&#xff0c;D:\hongzhimei\repository 为存放路径 3.新建工程 项目原型选择webapp项目 在buildPath中选择Edit更改为工作空间默认的…

flask session_Flask干货:Flask数据交换——Session的使用

上一次我们学习了Cookie&#xff0c;知道Cookie是保存在客户端的。那么有的小伙伴就问了&#xff0c;难道只有客户端能保存&#xff1f;服务器就不可以保存吗&#xff1f;&#xff01;当然可以&#xff01;Session就是另一种记录用户状态的机制。Flask的Session是基于Cookie实现…

神经科学中的数学之美

来源&#xff1a;数学中国“不偏袒地讲&#xff0c;数学&#xff0c;不但掌握着真理&#xff0c;还是至美之物。”——罗素关于美学最新的神经学研究显示&#xff0c;视觉、听觉和道德上的美感体验都与“情绪化大脑”的同一个区域有关&#xff1a;内侧眶额叶皮层&#xff08;me…

手机端富文本编辑器_谷歌Pixel系列手机每月更新无痛刷机技巧

本文适合小白&#xff0c;高手可以关闭。&#xff08;以下技巧基本为Pixel3操作&#xff0c;window7平台&#xff0c;Pixel系列手机大同小异&#xff09;谷歌Pixel系列手机属于小众手机&#xff0c;当中刷机有技巧&#xff0c;本人也是小白&#xff0c;经过无数次的实践经验得出…

什么是数据中台?全面解读数据中台

来源&#xff1a;与数据同行伴随着云计算、大数据、人工智能等IT技术迅速发展及与传统行业实现快速融合&#xff0c;一场由数字化和智能化转型带来的产业变革正在孕育。随着企业规模不断扩大、业务多元化——中台服务架构的应运而生。“中台”早期是由美军的作战体系演化而来的…

add结果 bigdecimal_java.math.BigDecimal.add(BigDecimal augend)方法

全屏java.math.BigDecimal.add(BigDecimal augend)方法java.math.BigDecimal.add(BigDecimal augend) 返回一个BigDecimal&#xff0c;其值为(this augend)&#xff0c;其标度为 max(this.scale(), augend.scale())。声明以下是java.math.BigDecimal.add()方法的声明public Bi…

python导出oracle数据到excel_【python】 python 查询oracle数据生成excel

接上篇安装好了cx_Oracle.msi MySql.msi 下载安装 xlwt-0.7.5.tar.gz&#xff0c; 到安装目录下 命令窗口cmd下执行 python setup.py install即可 被引用的文件&#xff1a; # coding: utf-8 # xlswriter.py # http://pypi.python.org/pypi/xlwt import xlwt class XLSWriter(o…

指挥控制系统中的自然智能和人工智能

来源&#xff1a;人机与认知实验室【编者按&#xff1a;为什么美军的“深绿系统”不好用&#xff1f;并常常被指挥员所诟病。但这是指控系统智能化的关键之所在&#xff01;你也许会简单地说&#xff1a;“是人、机、环境系统失调造成的”&#xff0c;若进一步问“那是怎样失调…

Sublime Text 3 搭建 React.js 开发环境

Sublime有很强的自定义功能&#xff0c;插件库很庞大&#xff0c;针对新语言插件更新很快&#xff0c;配合使用可以快速搭建适配语言的开发环境。 1. babel-sublime 支持ES6&#xff0c; React.js, jsx代码高亮&#xff0c;对 JavaScript, jQuery 也有很好的扩展。关于 babel 的…

AI造假 vs AI打假 终结“猫鼠游戏”不能只靠技术

来源&#xff1a;和讯网人脸识别作为生物识别中的重要手段&#xff0c;成为了近年身份识别中最热门的领域。但与人脸识别技术共同发展的&#xff0c;还有借助机器学习系统、图像视频和音频内容&#xff0c;更改人脸、物体或环境呈现方式的深度伪造技术。随着这一技术的日趋成熟…

你好AI丨重读图灵经典之作,九条反驳意见引人深思

来源&#xff1a; AI科技评论编译 | 丛末、蒋宝尚当一台计算机能够骗过人类&#xff0c;让他们相信它就是一个人的时候&#xff0c;就能够被称作智能。编者按&#xff1a;对于艾伦图灵&#xff0c;相信大家都并不陌生&#xff0c;作为人工智能鼻祖&#xff0c;图灵的诸多观点即…

java 比较源文件_Beyond Compare比较Java源代码文件的操作方法

今天小编就带大家来共同学习BeyondCompare如何比较Java源代码文件希呢?望可以帮助到有需要的小伙伴哦&#xff0c;下面就是详细完整的操作步骤。打开BeyondCompare&#xff0c;在主页面左侧目录下选择文本比较会话&#xff0c;打开会话操作界面。分别单击比较会话界面“打开文…