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
總結
以上是生活随笔為你收集整理的CentOS6.9编译安装LNMP环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 4819: [Sdoi2017
- 下一篇: SQL基础--同义词