centos7編譯安裝LNMP(nginx-1.16.0,mysql8.0.16,php-7.3.6)常見問題報錯及解決方法
- 2019 年 10 月 18 日
- 筆記
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!