1. 程式人生 > >vmware workstation 14(Ubuntu 16.04.5)LNMP環境搭建

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依賴庫(

http://www.zlib.net

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檔案