CentOS6.9編譯安裝LNMP環境

CentOS6.9編譯安裝LNMP環境

今天嘗試一下用編譯的方式來搭建lnmp運行環境。全部軟件都採用當前最新版本,除了CentOS。這是因爲目前企業大多數應該都還在使用CentOS6的緣故,而且CentOS7目前還在迭代中。雖然說不會有大的改動,但也算不上徹底穩定下來吧。php

那麼開始吧,此次也是邊裝邊寫的方式。html

運行環境和軟件版本

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。java

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

安裝步驟

1.下載要安裝的軟件包

我這裏是直接在虛擬機上用wget工具下載,命令以下:mysql

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

固然你也能夠在其它地方下載好再傳到虛擬機上,隨意。linux

注意文件訪問權限,有些文件夾非root用戶是不能訪問的。還有,之因此選擇mysql-boost-5.7.18.tar.gz這個安裝包是由於mysql5.7編譯安裝須要用到boost,因此乾脆選擇了帶boost的版本。雖然我也不太明白boost是個啥,好像是編譯器的一種?nginx

下載完畢:c++

接下來就開始編譯安裝了。git

2.編譯安裝Nginx

就先從nginx開始吧。首先解壓:web

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,頗有必要。

相關文章
相關標籤/搜索