LNMP的安装记录

Linux

可以使用虚拟机挂载使用Centos、Debian、Ubunto等的一些镜像,有条件的话可以使用阿里云的系统,本文使用的就是阿里云的 x86_64 x86_64 x86_64 GNU/Linux系统,虚拟机安装不做详解,可以自行搜索,或者有疑问可以提出一起探讨

安装PHP

1、下载解压
wget http://cn2.php.net/distributions/php-7.2.8.tar.gz
tar -xzf php-7.2.8.tar.gz
  • 错误提示
ERROR: The certificate of ‘www.python.org’ is not trusted.
ERROR: The certificate of ‘www.python.org’ hasn't got a known issuer.
  • 解决方案

–no-check-certificate

wget --no-check-certificate https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
2、编译安装
cd php-7.2.8
./configure --prefix=/usr/local/php7280 --with-curl  --with-jpeg-dir --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libxml-dir --with-mysqli=mysqlnd --with-openssl --with-pcre-regex --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --with-pdo-mysql --with-fpm-user=nginx --with-fpm-group=nginx --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap  --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-mysqlnd --enable-maintainer-zts

其中 –prefix=/usr/local/php7280 编译在此目录下,方便寻找

  • 遇到的问题
configure: error: Cannot find OpenSSL's <evp.h>
  • 解决方案

网上方法基本都是说安装openssl或者是说安装mysqlnd扩展报错的,需要在配置文件configure加

export PHP_OPENSSL_DIR=yes
./configure --with-php-config=/home/php/bin/php-config --enable-mysqlnd

我这边实际上是OpenSSL版本的问题

(sudo) yum downgrade openssl //降级
(sudo) yum install openssl-devel

其他遇到的的问题复制百度寻找答案即可基本上是服务器缺少对应的依赖

configure: error: libxml2 not found. Please check your libxml2 installation

解决

yum install libxml2-devel

然后执行如下命令

make && make install

以上php就安装好了,接下来进行配置

3、配置
  • 在编译执行configure的地方执行如下命令
cp php.ini-production /usr/local/php7/etc/php.inicd /usr/local/php7/etc/    //查看是否有了 php.ini
  • 在接着执行如下命令
cp php-fpm.conf.default php-fpm.conf
  • 在进入这个目录 cd php-fpm.d/ 在继续执行如下命令
cp www.conf.default www.conf
  • 最后在这个目录 /usr/local/php7/sbin 执行如下命令启动php
./php-fpm
  • 遇到问题
cannot get uid for user 'nginx'或者please specify user and group other
  • 解决方案

将配置文件www.conf中的user和group改成自己的系统名字或者不知道可以改成nobody即可

在这里插入图片描述

原因分析,在编译时指定了参数*–with-fpm-group=nginx* 前面可去除这参数

最后使用netstat -tunlp可看到php已成功启动

在这里插入图片描述

  • 设置全局php访问(否则需要指定目录才能访问)全局目录在*/usr/bin*
ln -s /usr/local/php7280/bin/php /usr/bin/php
  • 添加永久环境变量,影响范围所有用户
vim /etc/profile
  • 在文档最后,添加如下命令;sbin 为php-fpm 所在,bin 为php客户端所在
export PATH="/usr/local/php7/sbin:/usr/local/php7/bin:$PATH"  
  • 保持退出 然后运行
source /etc/profile

需要注意的点为PATH后面的等号不允许存在空格,否则会报错误

export `=' not a valid identifier
4、安装拓展

curl.so

  • 进入源码目录

在这里插入图片描述

  • 找到对应库的目录 curl 进入

  • 执行生成so文件编译模式

/usr/local/php7280/bin/phpize
  • 编译curl扩展
./configure --with-php-config=/usr/local/php7280/bin/php-config
  • 执行安装
make && make install
  • 进入生成的扩展陌路
/usr/local/php7280/lib/php/extensions/no-debug-zts-20170718
  • 最后编辑php.ini文件 增加extension=curl.so扩展即可

服务启动/重启/停止

service php-fpm start

可能出现的问题

Redirecting to /bin/systemctl start php-fpm.serviceFailed to start php-fpm.service: Unit not found.

原因分析

service启动是自动访问*/etc/init.d目录下的脚本,所以需要去安装目录下的sapi/fpm文件夹里面的init.d.php-fpm*拷贝一份到该目录下

可以查看该文件的位置(全局搜索)

find / -name 'init.d.php-fpm'

拷贝

cp /root/php-7.2.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

赋予权限(读和写权限)

ps: chmod 777 /etc/init.d/php-fpm 也是可以的

chmod a+x /etc/init.d/php-fpm

最后重启

可能又会发现问题

ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in useERROR: FPM initialization failed

解决方案

查看端口占用情况

netstat -tunlp | grep 9000

其实就是php本身进程,清除即可

ps: kill -9 php-fpm 也是可以的

killall php-fpm

启动/重启/停止

service php-fpm start|restart|stop

查看php 相关进程

ps aux | grep php

在这里插入图片描述

查看php版本

php -v

在这里插入图片描述

安装完成!

安装Nginx

1、建系统组别与用户
//添加nginx用户组groupadd nginx
//添加nginx用户useradd nginx -g nginx -s /sbin/nologin -M说明:-s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录。-M表示不创建用户主目录。-g表示指定用户的组名为nginx。
2、下载解压
wget http://nginx.org/download/nginx-1.15.8.tar.gztar zxf nginx-1.15.8.tar.gzcd nginx-1.15.8

编译前保证依赖库和编译软件的存在,没有最好需要提前安装

yum install gcc gcc-c++ glibc -yyum install pcre-devel -yyum install zlib-devel -yyum install openssl-devel -y
3、编译安装

相关指定的参数可复制百度搜索其意义,基本上是指定安装的路径和一些访问日志错误日志临时文件等的存放位置

./configure  --prefix=/usr/local/nginx  --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock  --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

输出nginx的配置信息

在这里插入图片描述

最后执行如下

make && make install

执行完成可查看配置信息
在这里插入图片描述

修改启动软连

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx 

查看是否能成功启动

nginx -t

此提示下则启动成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

若出现以下情况,自行创建对应文件夹即可

在这里插入图片描述

启动nginx服务

nginx -s reload

若出现有提示

nginx: [alert] kill(17615, 1) failed (3: No such process)

指定配置文件地址后再重启即可

/usr/bin/nginx -c /usr/local/nginx/conf/nginx.conf

安装Mysql

选用的版本是5.7.35

1、下载mysql安装包并解压

Mysql下载地址

由于在linux环境编译安装,因此选取的是源码-通用linux版本

在这里插入图片描述

2、安装boost

下载boost.1.59及以上版本(MySQL5.7所需)

wget https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

解压后执行(安装目录统一都在*/usr/local/src*)

tar -zxvf boost_1_59_0.tar.gzcd boost_1_59_0./bootstrap.sh./b2./b2 install
3、编译安装mysql
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/mydata -DSYSCONFDIR=/usr/local/mysql/conf -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_SSL=system -DWITH_ZLIB:STRING=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DWITH_BOOST=/usr/local/src

基本的参数说明

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 设置安装目录-DMYSQL_DATADIR=/usr/local/mysql/mydata 设置数据库存放目录-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock 设置UNIX socket 目录-DMYSQL_USER=mysql 设置运行用户-DDEFAULT_CHARSET=utf8 设置默认字符集,默认latin1-DEFAULT_COLLATION=utf8_general_ci 设置默认校对规则,默认latin1_general_ci-DWITH_INNOBASE_STORAGE_ENGINE=1 添加InnoDB引擎支持-DENABLE_DOWNLOADS=1 自动下载可选文件,比如自动下载谷歌的测试包-DMYSQL_TCP_PORT=3306 设置服务器监听端口,默认3306-DSYSCONFDIR=/usr/local/mysql/conf 设置my.cnf所在目录,默认为安装目录更多参数执行 # cmake . -LH 或者查看官方说明

可能出现的问题

1)Cannot find appropriate system libraries for WITH_SSL=system.Make sure you have specified a supported SSL version.解决方案yum install -y openssl openssl-devel //大致网上的解答都是这个 问题还未处理-DWITH_SSL=system //编译时增加此参数 问题处理2)CMake Error at cmake/boost.cmake:81 (MESSAGE)解决方案-DWITH_BOOST=/usr/local/src //编译是指定前面安装的boost依赖地址即可3)Package ‘libtirpc‘, required by ‘virtual:world‘, not found-- Checking for module ‘libtirpc‘-- Package ‘libtirpc‘, required by ‘virtual:world‘, not foundCMake Error at cmake/rpc.cmake:65 (MESSAGE):Could not find rpc/rpc.h in /usr/include or /usr/include/tirpcCall Stack (most recent call first)解决方案yum install -y libtirpc-devel4)Could not find rpcgenCMake Error at rapid/plugin/group_replication/rpcgen.cmake:93 (MESSAGE):Could not find rpcgenCall Stack (most recent call first):rapid/plugin/group_replication/CMakeLists.txt:29 (INCLUDE)解决方案(安装编译rpcsvc)wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.1/rpcsvc-proto-1.4.1.tar.xzxz -d rpcsvc-proto-1.4.1.tar.xztar -xvf rpcsvc-proto-1.4.1.tarcd rpcsvc-proto-1.4.1./configuremakemake instal5)-bash: cmake: command not found解决方案yum install cmake -y

编译与安装

make && make install
4、为了安全,需要创建mysql用户组 和mysql用户来运行mysql
 groupadd mysql useradd -r -g mysql -s /bin/false mysql   //不用登录 //或者 chown -R mysql:mysql /usr/local/mysql/
5、赋予相关权限
 mkdir -p /usr/local/mysql/mydata mkdir -p /usr/local/mysql/conf chown -R mysql:mysql /usr/local/mysql
6、将 mysql 的 bin 目录加入环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profilesource /etc/profile
7、初始化
mysqld --initialize --user=mysql 
8、初由于MySQL5.7 需要自己创建 my.cnf 文件夹, mysql 默认会启动 /etc/my.cnf 这里的文件。但是位置是可以调整的
[mysqld]basedir=/usr/local/mysqldatadir=/usr/local/mysql/datapid-file=/usr/local/mysql/data/mysqld.pidsocket=/usr/local/mysql/mysql.socklog_error=/usr/local/mysql/data/mysql.erruser=mysqlexplicit_defaults_for_timestamp=trueskip-grant-tables
9、复制启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlchmod +x /etc/init.d/mysql //增加权限
10、启动服务
service mysql start

可能存在的问题

启动失败Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysqld.pid).解决方案通过日志mysql.err进行分析如[ERROR] Can't start server: Bind on TCP/IP port: Address already in use[ERROR] Do you already have another mysqld server running on port: 3306?说明存在端口占用情况netstat -anp | grep 3306kill -s 9 端口号再重新启动即可Could not create unix socket lock file /usr/local/mysql/mysql.sock.lock.权限问题mkdir -p /usr/local/mysql/chown -R mysql:mysql /usr/local/mysql/ 即可解决

启动成功

Starting MySQL.                                            [  OK  ]

输入mysql即可使用

在这里插入图片描述
注:参考文章
https://www.cnblogs.com/dump/p/10329850.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值