vmware workstation 14(Ubuntu 16.04.5)LNMP環境搭建
NGINX 編譯安裝
NGINX 版本:1.11.3
參考地址:https://www.cnblogs.com/piscesLoveCc/p/5794926.html
一、安裝Nginx依賴庫
1、安裝gcc g++的依賴庫
apt-get install build-essential
apt-get install libtool
2、安裝 pcre依賴庫(http://www.pcre.org/)
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
3、安裝 zlib依賴庫(
apt-get install zlib1g-dev
問題一:
E: 無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用)
E: 無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程序正佔用它?
解決方法:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
問題二:
E: dpkg 被中斷,您必須手工執行 ‘sudo dpkg --configure -a’ 解決此問題。
解決方法:
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update
sudo apt-get upgrade
4、安裝ssl依賴庫
apt-get install openssl
二、安裝Nginx(http://nginx.org)
1、下載最新版本
wget http://nginx.org/download/nginx-1.11.3.tar.gz
2、解壓
tar -zxvf nginx-1.11.3.tar.gz
3、進入解壓目錄
cd nginx-1.11.3
4、配置
./configure --prefix=/usr/local/nginx
5、編譯
make
注意:這裡可能會報錯,提示“pcre.h No such file or directory”,具體詳見:
http://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory
需要安裝 libpcre3-dev,命令為:sudo apt-get install libpcre3-dev
6、安裝nginx
make install
9、啟動nginx
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置檔案的路徑,不加的話,nginx會自動載入預設路徑的配置檔案,可以通過 -h檢視幫助命令。
10、檢視nginx程序
ps -ef|grep nginx
11、Nginx常用命令
# 啟動Nginx
/usr/local/nginx/sbin/nginx
# 停止 Nginx
/usr/local/nginx/sbin/nginx -s stop
# 重新載入Nginx配置
/usr/local/nginx/sbin/nginx -s relaod
# 指定配置檔案
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 檢視 Nginx 版本
/usr/local/nginx/sbin/nginx -v 或者 /usr/local/nginx/sbin/nginx -V
# 檢查配置檔案是否正確
/usr/local/nginx/sbin/nginx -t
# 顯示幫助資訊
/usr/local/nginx/sbin/nginx -h
12、設定專門的配置檔案目錄
mkdir vhost
vim nginx.conf
在http選項的末尾新增“include vhost/*.conf;”
cd vhost
vim test.conf
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
13、配置檔案備用一份
server {
listen 80; # 埠,一般http的是80
server_name we.smallzhou.cn; # 一般是域名,本機就是localhost
index index.php index.html; # 預設可以訪問的頁面,按照寫入的先後順序去尋找
root /usr/local/nginx/html; # 專案根目錄
# 防止訪問版本控制內容
location ~ .*.(svn|git|cvs) {
deny all;
}
# 此處不是必須的,需要時候配置
location / {
# Laravel 5.4 Url 重寫
try_files $uri $uri/ /index.php?$query_string;
}
# 下面是所有關於 PHP 的請求都轉給 php-fpm 去處理
location ~ \.php {
# 注意: unix sock 和 ip ,兩種方式只能選擇一種
# 基於unix sock 訪問,Ubuntu Apt 方式安裝的PHP預設是以sock方式啟動
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# 基於IP訪問
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
fastcgi_intercept_errors on;
# 日誌儲存目錄,一般按照專案單獨儲存, 開發環境可以關閉
#access_log logs/localhost_access.log access;
access_log off;
}
14、常見錯誤
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
解決方法:killall -9 nginx
================================================================
無法訪問PHP檔案
解決方法:監測nginx和php-fpm是否啟動!
MYSQL編譯安裝
MYSQL 版本 5.7.23
1、系統安裝條件
①cmake:MySQL使用cmake跨平臺工具預編譯原始碼,用於設定mysql的編譯引數。
sudo apt-get install cmake
②bison:Linux下C/C++語法分析器
sudo apt-get install bison
③ncurses:字元終端處理庫
sudo apt-get install libncurses5-dev
④gcc:GCC是Linux下的C語言編譯工具,mysql原始碼編譯完全由C和C++編寫。Ubuntu預設已裝
⑤Boost1.59.0:mysql原始碼中用到了C++的Boost庫,要求必須安裝boost1.59.0
下載Boost1.59.0原始碼,並解壓到/usr/local/目錄下:
# wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
# tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
2、下載MySQL原始碼
從github上下載mysql的原始碼:https://github.com/mysql/mysql-server.git
3、編譯MySQL原始碼
①新增Mysql使用者
# groupadd mysql
# useradd -r -g mysql mysql
②建立Mysql安裝程式的目錄和資料檔案的目錄
# mkdir /usr/local/mysql
# mkdir /home/MysqlData
# chown -R mysql:mysql /user/local/mysql
# chown -R mysql:mysql /home/MysqlData
③解壓縮Mysql5.7原始碼,並編譯
# cd /root
# tar -zxvf mysql-server-5.7.zip
# cd mysql-server-5.7
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/MysqlData -DWITH_BOOST=/usr/local/boost_1_59_0 -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all
# make
# make install
4、安裝配置MySQL
①* 初始化Mysql資料庫*
# cd /usr/local/mysql
# ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/MysqlData
# 5.7.6之後版本初始系統資料庫指令碼(本文使用後面方式)
# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/MysqlData
# ./bin/mysql_ssl_rsa_setup
注意:如果使用–initialize引數初始化系統資料庫之後,會在~/.mysql_secret檔案中生成root使用者的一個臨時密碼,同時也在初始化日誌中打印出來了
②配置Mysql服務
由於Ubuntu沒有chkconfig命令,用update-rc.d命令將Mysql服務加入到系統服務中
# cp support-files/mysql.server /etc/init.d/mysql
# update-rc.d mysql defaults
# update-rc.d mysql start 2 3 4 5 . stop 0 1 6
③配置mysql環境變數
# vim /etc/profile
# export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile
④啟動Mysql服務
# /etc/init.d/mysql start
# /etc/init.d/mysql stop
5、注意事項
1、如果中途編譯失敗了,需要刪除cmake生成的預編譯配置引數的快取檔案和make編譯後生成的檔案,再重新編譯。
# cd mysql-server-5.7
# rm -f CMakeCache.txt
# make clean
6、新建新使用者並賦權
# grant all privileges on *.* to [email protected]"%" identified by "123456" with grant option;
# flush privileges;
7、必要說明
1、support-files/my-default.cnf 該版本檔案不存在
2、初次登入,需要修改root使用者密碼:SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);有可能root使用者密碼為空,回車直接登入
3、錯誤:php: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
解決方法:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib
8、pdo_mysql的擴充套件安裝
# sudo su
# cd
# cd php-7.2.6
# cd ext
# cd pdo_mysql
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql //mysql的安裝路徑
問題一:
這邊可能會提示autoconf不存在,解決方法:apt-get install autoconf
# make
# make install
# cd /usr/local/php/lib
# vim php.ini
# 開啟pdo_mysql.so擴充套件或者新新增
# 重啟php-fpm 和nginx
# 檢視擴充套件:php -m
# 問題二:專案連線資料庫提示could not find drive
解決方法:make clean後重新編譯
PHP 編譯安裝
php版本:7.2.6
1、獲取原始碼包
http://php.net/=====>download====>php-7.2.6.tar.bz2 (sig)=====>隨便選擇某個下載地址
2、php安裝
# sudo su
# cd
# tar -xjvf php-7.2.6.tar.bz2
# cd php-7.2.6
問題一:configure: error: libxml2 not found. Please check your libxml2 installation
解決方法:
# apt-get install libxml2-dev
# # ./configure --prefix=/usr/local/php --enable-fpm --disable-fileinfo
# make
# make install
3、php.ini配置
# cp /root/php-7.2.6/php.ini-development /usr/local/php/etc/
# cd /usr/local/php/etc
# mv php.ini-development php.ini
# /usr/local/php/bin/php -i | grep php.ini,返回:Configuration File (php.ini) Path => /usr/local/php/lib
# mv php.ini /usr/local/php/lib
# 設定php全域性變數
# cp /usr/local/php/bin/php /usr/sbin
# 檢視php依賴,包含php-fpm版本
# apt show php7.0
4、啟動 php-fpm
# cp /usr/local/php/etc/php-fpm.conf.default php-fpm.conf
# /usr/local/php/sbin/php-fpm
問題一:
[28-May-2018 15:25:18] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/*.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[28-May-2018 15:25:18] ERROR: No pool defined. at least one pool section must be specified in config file
[28-May-2018 15:25:18] ERROR: failed to post process the configuration
[28-May-2018 15:25:18] ERROR: FPM initialization failed
解決方法:
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
問題二:
[28-May-2018 15:30:03] ERROR: [pool www] cannot get gid for group 'nobody'
[28-May-2018 15:30:03] ERROR: FPM initialization failed
解決方法:# vim /usr/local/php/etc/php-fpm.d/www.conf
將user和group設定成當前登入這的使用者名稱和組名,非root使用者
# /usr/local/php/sbin/php-fpm //啟動
#關閉php-fpm
ps -ef | grep php-fpm //檢視程序ID
kill PID
記憶體不足,解決辦法
參考地址:https://blog.csdn.net/qq_32642039/article/details/78070813
# dd if=/dev/zero of=/home/swap bs=64M count=16
# sudo mkswap /home/swap
# sudo swapon /home/swap
用完關閉:
# sudo swapoff /home/swap
# sudo rm /home/swap
使用過程中經常出現的問題
問題一:
Uncaught Error: Call to undefined function Aliyun\Core\Http\curl_init()
解決方法:
# cd /php7.2.6/ext/curl
# /usr/local/php/bin/phpize
# ./configure -with-curl=/usr/local/curl -with-php-config=/usr/local/php/bin/php-config
出現問題:
ubuntu 安裝 libcurl
# sudo apt-get install libcurl4-openssl-dev
# make
# make install
# 編輯php.ini,新增擴充套件
# extension = curl
# 重啟NGINX
徹底解除安裝MYSQL5.7
刪除mysql前 先刪除一下 /var/lib/mysql 還有 /etc/mysql
#下面命令依次執行
sudo rm /var/lib/mysql/ -R # 刪除資料庫目錄
sudo rm /etc/mysql/ -R #刪除啟動指令碼、配置檔案等
sudo apt-get autoremove mysql* --purge # 解除安裝mysql所有檔案
sudo apt-get remove apparmor # 這個apparmor是在裝mysql-server時裝上的,和安全有關
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理殘餘mysql檔案