1. 程式人生 > >centos7編譯安裝LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常見問題報錯及解決方法

centos7編譯安裝LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常見問題報錯及解決方法

LNMP的安裝與配置

nginx-1.16.0安裝及配置:

第一步:前往官網下載nignx原始碼包

 

 

下載完畢後上傳至伺服器(先安裝lrzsz)

yum -y install lrzsz

安裝完畢後執行:

rz

找到nginx包後點擊確定,即可上傳成功

 

第二步:

解壓:

tar zxvf nginx-1.16.0.tar.gz

進入:

cd nginx-1.16.0/

建立使用者、使用者組:

groupadd nginx

useradd -g nginx nginx -s /sbin/nologin

 

第三步:編譯安裝

1、檢查環境

./configure --prefix=/usr/local/nginx

報錯1:提示無PCRE(此步驟忘記截圖,下邊的報錯都有截圖,記住關鍵字PCRE即可)

yum -y install pcre-devel pcre

安裝完畢後再次執行以上命令檢查環境,無報錯

 

2、安裝

make && make install

 

3、安裝完畢後開啟服務

cd /usr/local/nginx/sbin

./nginx     開啟成功

 

4、檢視80埠是否啟用

netstat -tunlp | grep 80

 

80埠開啟就說明成功

 

5、建立自啟動指令碼,以後每次開機就可自動啟動nginx

cd /lib/systemd/system/

vim nginx.service

新增以下資訊:

[Unit]

Description=nginx service

After=network.target

 

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s quit

PrivateTmp=true

 

[Install]

WantedBy=multi-user.target

 

 

6、開啟開機自啟

systemctl enable nginx.service

重啟nginx服務

systemctl restart nginx.service

執行:

systemctl list-unit-files | grep nginx

nginx服務變為enabled即為成功開啟開機自啟

 

 

7、以上並沒有對nginx的配置檔案進行修改配置,有何需求自己可上網查閱資料進行修改!

 

mysql8.0.16安裝及配置:

第一步:前往mysql官網下載原始碼包https://dev.mysql.com/downloads/mysql/

最好下載帶boost的,安裝時不需要再去單獨下載

 

 

 

 

第二步:建立mysql使用者、組 及data目錄

groupadd mysql

useradd -g mysql mysql -s /sbin/nologin

 

第三步:建立好使用者後將原始碼包上傳至虛擬機器中(使用lrzsz,若沒有yum安裝即可)

解壓:

tar zxvf mysql-boost-8.0.16.tar.gz

進入:

cd mysql-boost-8.0.16

安裝一些所需環境:

yum install gcc gcc-c++ cmake ncurses-devel bison

 

開始cmake檢查環境(開始了報錯之旅,我只將我的報錯列出)

注意:每報一次錯,都要刪除CMakeCache.txt檔案,然後重新cmake

 

cmake -DMYSQL_USER=mysql -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DINSTALL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=/root/mysql-8.0.16/boost

 

報錯1:cmake版本過低,安裝高版本,自己找原始碼包裝一下,最好裝跟自己系統匹配的版本,比如我的是3.10.0的核心,就找3.10.0的cmake

 

 

網址:https://cmake.org/files/v3.10/    選擇這個就ok

 

 

 

 

下載完畢後,上傳至伺服器,將bin目錄下的所有檔案複製到/usr/bin下

 

然後cmake -version 檢視版本,升級到cmake-3.10.0即可,然後重新cmake檢查環境。

 

報錯2:根據提示,引數中加入 DFORCE_INSOURCE_BUILD=1 即可,但是要rm -rf mysql-8.0.16/CMakeCache.txt,接下來的報錯也一樣,每報一次錯,都要刪除CMakeCache.txt檔案,然後重新cmake

 

 

報錯3:gcc版本太低,需要升級到高版本

 yum install centos-release-scl

 yum install devtoolset-6

 scl enable devtoolset-6 bash  #臨時修改至6版本

 gcc -v  #檢視版本

 echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile  #永久修改

 

報錯4:缺少Git   yum -y install git

 

 

報錯5:沒有指定boost,下載boost後引數中指定路徑即可。(boost是一個可移植、提供原始碼的c++庫,作為標準庫的後備,是C++標準化程序的開發引擎之一。)

 

 

報錯6:未安裝openssl-devel報錯,執行yum -y install openssl-devel

 

 

報錯7:提示未指定這幾個引數,無大礙,只要不是error就ok

 

 

環境終於檢查沒問題了,可以進行編譯安裝了。。。

make -j 4 && make install

估計要等好久。。我編譯安裝半小時。。

 

第四步:

1、安裝成功

 

2、將mysql下所有目錄及檔案的所有者所屬組改為mysql

chown -R mysql:mysql /usr/local/mysql/

 

3、複製啟動檔案:

cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

加入系統服務:

chkconfig --add mysqld

開機自啟:

chkconfig mysqld on

將/usr/local/mysql/bin加入到PATH目錄中:

vim /etc/profile

新增如下幾行

 

然後儲存退出,執行ssource /etc/profile   使其生效

 

4、進入配置檔案修改為下圖所示(紅框為修改後的內容)

vim /etc/my.cnf

 

其中log檔案要自己先建立好,初始化不會自動生成,其他暫且不用

mkdir -p /var/log/mariadb/

touch /var/log/mariadb/mariadb.log

chown -R mysql:mysql /var/log/mariadb/

 

5、進入啟動檔案(紅框為修改後的內容)

vim /etc/init.d/mysqld

 

 

 

6、初始化mysql

cd /usr/local/mysql/bin/

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

此條執行成功後在倒數第三行左右會出現一個mysql的初始密碼,記下它後邊登入用(每個人的都不一樣)

 

初始化成功後啟動./mysqld_safe --user=mysql(注意此時目錄及所有檔案的使用者及使用者屬組必須是mysql)

 

7、配置完畢後,開始啟動

service mysqld start

ps:沒錯同志們,我沒有報錯,不知道你們有沒有~

 

8、沒有報錯並不是代表完成了。。。

使用root使用者登入mysql

mysql -uroot -p

 

 

 

what!找不到/tmp/mysqld.sock

突然想到在/etc/my.cnf檔案下socket的目錄,於是vim進去發現

vim /etc/my.cnf

 

 

 

之前的名字寫的是mysql.sock,把mysql.sock名字改為mysqld.sock即可

然後service mysqld restart重啟

再次嘗試mysql -uroot -p,輸入初始密碼後成功登陸!

 

 

9、登陸成功後第一件事就是更改初始密碼

ALTER user 'root'@'localhost' IDENTIFIED BY 'Pwd_2018';

 

 

 

Pwd_2018為新密碼,可以自己隨意更改

mysql中命令最後要加  ;  號,一定要注意!

終於算是安裝完畢了mysql8,下邊就是小夥伴們根據自己的需求修改配置檔案了。

 

php-7.3.6編譯安裝:

官網下載php原始碼包,我下載的是tar.bz2的,不知為何tar.gz的下載不下來

rz    上傳至伺服器

然後解壓

tar jxvf php-7.3.6.tar.bz2

再進入目錄

cd php-7.3.6/

 

先裝以下依賴包:

yum -y install libxml2-devel bzip2-devel curl-devel libjpeg-devel libpng-devel freetype-devel libxslt-devel libzip-devel

1、建立使用者使用者組

groupadd www

useradd -g www www -s /sbin/nologin

 

2、開始檢查環境:

./configure --prefix=/usr/local/php --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip

 

總結了一些引數含義,可供參考:

    --prefix=/usr/local/php \ [php安裝的根目錄]    --exec-prefix=/usr/local/php \ [php執行檔案所在目錄]    --bindir=/usr/local/php/bin \ [php/bin目錄]    --sbindir=/usr/local/php/sbin \ [php/sbin目錄]    --includedir=/usr/local/php/include \ [php包含檔案所在目錄]    --libdir=/usr/local/php/lib/php \ [php/lib目錄]    --mandir=/usr/local/php/php/man \ [php/man目錄]    --with-config-file-path=/usr/local/php/etc \ [php的配置目錄]    --with-mysql-sock=/var/run/mysql/mysql.sock \ [php的Unix socket通訊檔案]    --with-mcrypt \ [是php裡面重要的加密支援擴充套件庫,linux環境下該庫在預設情況下不開啟]    --with-mhash \ [Mhash是基於離散數學原理的不可逆向的php加密方式擴充套件庫,其在預設情況下不開啟]    --with-openssl \ [OpenSSL 是一個安全套接字層密碼庫]    --with-mysqli=shared,mysqlnd \ [php依賴mysql庫]    --with-pdo-mysql=shared,mysqlnd \ [php依賴mysql庫]    --with-gd \ [gd庫]                                                    --with-iconv \ [關閉iconv函式,種字符集間的轉換]                            --with-zlib \ [zlib是提供資料壓縮用的函式庫]    --enable-zip \ [開啟對zip的支援]    --enable-inline-optimization \ [優化執行緒]    --disable-debug \ [關閉除錯模式]    --disable-rpath \ [關閉額外的執行庫檔案]    --enable-shared \ [啟用動態庫]    --enable-xml \ [開啟xml擴充套件]    --enable-bcmath \ [開啟圖片大小調整,用到zabbix監控的時候用到了這個模組]    --enable-shmop \ [共享記憶體]    --enable-sysvsem \ [記憶體共享方案]    --enable-mbregex \ [開啟多位元組正則表示式的字元編碼。]    --enable-mbstring \ [開啟多位元組字串函式]    --enable-ftp \ [開啟ftp]    --enable-gd-native-ttf \ [開啟gd庫原有字型]    --enable-pcntl \ [PHP的程序控制支援實現了Unix方式的多程序建立]            --enable-sockets \ [開啟套節字]    --with-xmlrpc \ [開啟xml-rpc的c語言]    --enable-soap \ [開啟簡單物件訪問協議簡單物件訪問協議]    --without-pear \ [開啟php擴充套件與應用庫]    --with-gettext \ [開戶php在當前域中查詢訊息]    --enable-session \ [允許php會話session]    --with-curl \ [允許curl擴充套件]    --with-jpeg-dir \ [指定jpeg安裝目錄yum安裝過後不用再次指定會自動找到]    --with-freetype-dir \ [指定freetype安裝目錄yum安裝過後不用再次指定會自動找到]    --enable-opcache \ [開啟使用opcache快取]    --enable-fpm \ [開啟fpm]    --with-fpm-user=nginx \ [php-fpm的使用者]    --with-fpm-group=nginx \ [php-fpm的使用者組]    --without-gdbm \ [資料庫函式使用可擴充套件雜湊和類似於標準UNIX dbm的工作]    --enable-fast-install \ [為快速安裝優化]    --disable-fileinfo \    --with-php-config=/usr/local/bin/php-config \  [pdo_mysql擴充套件]    --with-pdo-mysql=mysqlnd \    --enable-maintainer-zts [開啟執行緒安全] (根據自身需要是否選擇該項)

 

報錯1:checking for libzip... configure: error: system libzip must be upgraded to version >= 0.11

 

 

 

版本太低,讓我將libzip升級到0.11版本以上

升級步驟:

先解除安裝舊版本:yum -y remove libzip

在下載新版本:wget https://libzip.org/download/libzip-1.5.1.tar.gz

tar -zxvf libzip-1.5.1.tar.gz

cd libzip-1.5.1

mkdir build

cd build

cmake ..

make && make install

 

libzip新版本安裝完畢後,重新檢查環境,ok沒問題,執行

make -j 4 && make install

-j 4 表示最多允許四個編譯命令同時執行,cpu要求雙核即可

 

3、安裝完成開始配置

將服務服務放置相對目錄下

cd /root/php-7.3.6/sapi/fpm

cp php-fpm.service /usr/lib/systemd/system/

 

複製配置檔案

cd /root/php-7.3.6

cp  php.ini-production /usr/local/php/etc/php.ini

 

由於nginx呼叫的是php-fpm進行工作,故把php-fpm.conf.default更名為php-fpm.conf,不然無法識別

cd /usr/local/php/etc/

mv php-fpm.conf.default php-fpm.conf

 

同樣將此檔案也更名為.conf檔案

cd /usr/local/php/etc/php-fpm.d/

cp -a www.conf.default www.conf

 

4、我並沒有對配置檔案進行修改,如需修改請按照個人口味。

然後開始啟動php-fpm,設定開機自啟

systemctl start php-fpm.service

systemctl enabled php-fpm.service

 

5、下邊修改一下nginx的配置檔案,使nginx與php可以連線使用

vim /usr/local/nginx/conf/nginx.conf

 

這裡新增上以.php結尾的檔名,上邊的html表示在html目錄下的檔案

 

再將下邊php這一段的註釋去掉,將紅框內的路徑修改為自己的根路徑(如果步驟是跟我上邊的來的,則修改為與我的相同即可)

 

 

6、編輯index.php檔案

cd /usr/local/nginx/html/

vim index.php

 

 

然後wq儲存退出

開啟瀏覽器輸入  [ip]/index.php

 

跳轉到此介面就說明php安裝完畢,nice!

&n