CentOS6.9編譯安裝LNMP環境php
今天嘗試一下用編譯的方式來搭建lnmp運行環境。全部軟件都採用當前最新版本,除了CentOS。這是因爲目前企業大多數應該都還在使用CentOS6的緣故,而且CentOS7目前還在迭代中。雖然說不會有大的改動,但也算不上徹底穩定下來吧。html
那麼開始吧,此次也是邊裝邊寫的方式。java
運行環境和軟件版本python
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。mysql
Nginx、PHP、MySQL使用當前最新版本的 nginx-1.12.0 php-7.1.4 mysql-5.7.18 。linux
安裝步驟nginx
1.下載要安裝的軟件包c++
我這裏是直接在虛擬機上用wget工具下載,命令以下:git
1 wget http://nginx.org/download/nginx-1.12.0.tar.gz -O /usr/local/src/nginx-1.12.0.tar.gzweb
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-34compat-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,頗有必要。