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  jason@"%" 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文件

猜你喜欢

转载自blog.csdn.net/qq_29627497/article/details/81840897