• 喜欢前端以及PHP的朋友们可以加PHP同好会QQ群 点击加入qq群
  • 最近在写一个项目---"小A微信托管平台",大家可以去帮忙测试一下!功能在不断完善中,敬请关注!点击进入
  • 本站使用了PHP8.1与HTTP2.0协议,速度简直超级快有木有?

centos7.0编译安装最新版本lnmp环境

Linux Mr.Adam 9年前 (2016-08-29) 3376次浏览 已收录 0个评论

centos7.0 编译安装最新版本 lnmp 环境
接触 linux 系统有段时间了,最近计划换台配置高点的 vps,今天就最小化安装一个 linux 下的 php 运行环境(php,nginx,mysql,均为最新版),为了将来能更快速度配置机器打下坚实的基础! :wink: (文采不行,大家勿喷)

OK,我们开始,第一步:配置网卡

虚拟机的安装就不再赘述了,网络配置如下:

vim /etc/resolv.conf  (指定 DNS 服务器) 
nameserver 208.67.222.222
nameserver 192.168.1.1

cd 进网络配置目录 ls 查看一下

cd /etc/sysconfig/network-scripts/
ls

本机网卡名称为 ifcfg-enp0s3 (每人可能都不一样,可能为 ifcfg-eth0)
然后 vim 打开

vim ifcfg-enp0s3

我的配置如下

HWADDR="08:00:27:49:97:40"
TYPE="Ethernet"
BOOTPROTO="static"
NAME="enp0s3"
UUID="68331808-a004-413a-8682-48cc3487e7b5"
ONBOOT="yes"
IPADDR=192.168.1.25
GATEWAY=192.168.1.1
NETMASK=255.255.255.0

其中 TYPE 为网卡类型,不需要修改
BOOTPROTO 默认为 dhcp 我们将它修改为 static
IPADDR,GATEWAY,NETMASK 可能没有,我们手工加上
其中 IPADDR 为本机 IP 地址,可以自己填上,其他随意(如果发现其中某项不存在可以不需要管)
然后保存退出,重启网络即可

service network restart

然后我们 ping 下百度

ping www.baidu.com

如果可以 ping 通,即表示网络已配置好了
然后我们可以使用 ssh 工具进行连接,或联网装一些软件进去

第二步,下载 nginx php mysql

网络配置 OK,接下来我们就把需要装的软件下载下来。
首先我们跳转到需要存放下载文件的目录中

cd /usr/local/src

接下来开始下载软件

wget http://nginx.org/download/nginx-1.10.1.tar.gz
wget http://cn2.php.net/get/php-7.0.10.tar.gz/from/this/mirror
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz

mysql 文件可能比较大(641MB),这会可以重新开一个窗口,先干其他事情
下载完成后发现没有 Php 文件(其实 mirror 就是 Php 文件)
我们将 php 文件名改过来

mv mirror php-7.0.10.tar.gz

接下来我们安装 nginx
安装 nginx 之前需要下载 pcre 库与 zlib 库
其中 zlib 我们用 yum 就可以了,顺便把 openssl 和 pcre 一起装了

yum install zlib zlib-devel pcre pcre-devel openssl openssl-devel gcc gcc-c++ automake autoconf libtool libevent libevent-devel 

接下来我们下载 pcre

wget http://ncu.dl.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.zip

下载之后解压

unzip pcre-8.39.zip

第三步:正式编译 nginx

cd nginx-1.10.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-debug --with-pcre=/usr/local/src/pcre-8.39

如果不报错我们就开始编译

make && make install

1-2 分钟后应该编译完成了,这时候我们启动 nginx

/usr/local/nginx/sbin/nginx

如果不报错就证明启动成功!
然后我们在浏览器里输入我们设置好的 ip 地址(192.168.1.25)敲回车,
能看到如下画面则证明成功安装!
centos7.0 编译安装最新版本 lnmp 环境
如果显示”无法访问”,可以在服务器上 ping 下自己电脑的 IP,如果可以 ping 通,可能是防火墙的问题
Centos 7 以下关闭防火墙输入以下命令:

service iptables stop

对于 Centos 7 输入以下命令关闭防火墙:

systemctl stop firewalld.service

之后再尝试应该就可以访问了.

第四步:编译安装 PHP

OK,重头戏来了,首先我们先 yum 安装一些”乱七八糟”的东西(yum 真是个好东西)

yum install libjpeg libjpeg-devel libxslt libxslt-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libaioso.1 libaio

因为 php 的 mcrypt 扩展无法从 yum 安装,我们去下载它的源码进行手动编译安装

cd /usr/local/src
wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make && make install

mcrypt 安装完成之后我们 CD 进 PHP 目录中执行以下语句

./configure --prefix=/usr/local/php \
--enable-fpm  \
--enable-mbstring \
--with-openssl \
--with-mysqli \
--with-gd \
--with-jpeg-dir \
--with-pdo-mysql=mysqlnd \
--with-curl \
--with-freetype-dir=/usr/share/freetype2 \
--with-mysql=mysqlnd \
--enable-mysqlnd \
--enable-gd-native-ttf \
--enable-sockets \
--with-zlib \
--enable-zip \
--with-bz2 \
--with-png-dir \
--enable-opcache \
--enable-xml \
--enable-libxml \
--enable-bcmath \
--with-xsl \
--with-mcrypt=/usr/local/libmcrypt \
--with-pear \
--enable-pcntl \
--enable-ftp \
--with-iconv

是不是感觉有点多? :roll: 可能还不够,PHP 扩展犹如汪洋大海,前期尽量把常用的装全了,免得以后再加(当然有单独编译扩展的方法,后面再说)
运行之后可能会报一些错,如果缺少某些库就随手 yum 安装上,warning 类型的可以不用理睬(比如 WARNING: unrecognized options: –with-mysql)
如果没错就可以进行安装了

make && make install

安装过程可能有点久(20-50 分钟不等,视机器配置决定)
OK,安装完成之后先不要高兴太早,我们得执行以下命令才能把 PHP 运行起来:

cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp /usr/local/src/php-7.0.10/php.ini-development ./lib/php.ini
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf      (php7 专用)

激动人心的时刻到了,我们运行 PHP 试试

./sbin/php-fpm

如果不报错,就是成功了!
现在我们去配置 Nginx,使 PHP 能真正跑的起来

cd /usr/local/nginx/conf
vim nginx.conf

找到

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts/$fastcgi_script_name;
            include        fastcgi_params;
        }

fastcgi_param  SCRIPT_FILENAME  /scripts/$fastcgi_script_name;

修改为

fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;

保存退出后 CD 到 nginx 目录中执行

./sbin/nginx -s reload

然后进入 nginx/html 目录中写一个 php 文件测试

cd html
vim a.php
<?php phpinfo();?>

保存退出,在地址栏输入(192.168.1.25/a.php)
查看 php 信息,发现缺少 zip 扩展(比较重要的一个扩展)
我们只能单独编译安装 zip 扩展
我们 cd 进 php 的源码目录中

cd /usr/local/src/php-7.0.10/ext/
ls

这个目录则是 php 源码包自有扩展库,如果以后需要用到某个库而没有编译可以在这里看有没有
我们 cd 进 zip 目录下执行

cd zip
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

一切 OK 之后,我们去编辑一下 php.ini

vim /usr/local/php/lib/php.ini

加入以下代码保存退出

extension=zip.so

重启 php 进程

pkill -9 php
/usr/local/php/sbin/php-fpm

然后查看(192.168.1.25/a.php)
是否已将 zip 安装完成
到此 PHP 的编译就已经完成了,这会 mysql 应该也已经下载完成了吧 :???:
OK,我们正式开始安装 mysql

第五步:编译安装 Mysql(mysql 5.7 与之前版本的安装有很大区别)

首先将 mysql 文件解压放到 /usr/local 下

cd /usr/local/src
tar zxvf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
cd ../
mv /usr/local/src/mysql-5.7.14-linux-glibc2.5-x86_64 ./mysql

5.7 版本 mysql 源码中没有 data 目录,因此我们需要手动给创建上

mkdir /usr/local/mysql/data

新建 mysql 用户组,mysql 用户

groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql

将文件全部‘送’给 mysql 用户及 mysql 组(注意此时位置在 mysql 目录下)

chown -R mysql .
chgrp -R mysql .

然后开始初始化安装 mysql

bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data

将 my.cnf 复制到 etc 下

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

vim 编辑 my.cnf

vim /etc/my.cnf

修改 basedir,datadir,socket

basedir =/usr/local/mysql
datadir =/usr/local/mysql/data
socket =/var/lib/mysql/mysql.sock

然后保存退出,启动 mysql

cd /usr/local/mysql/support-files
./mysql.server start

显示 Starting MySQL. SUCCESS! 则表示启动成功
5.7 最新版不许空密码登录,实际上有个初始化密码保存在/root/.mysql_secret 这个文件里面,
我们 cat 查看一下密码

cat /root/.mysql_secret

然后我们进入 mysql

bin/mysql -uroot -p

密码输入以上密码(例:tfLuiBOdV?qe)
登录可能遇到这种情况

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

这是因为 mysql 使用 localhost 登录时需要有个锁文件,该锁文件在 var/lib/mysql/mysql.sock
我们建立一个软连接过去

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 

重启启动 mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.14

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

OK,启动成功!
接下来我们把密码改了(不修改则报错)

set password = password('新密码');

5.6 及之前版本修改密码执行

UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ; 

5.7 之后为

UPDATE user SET authentication_string = password ( 'new-password' ) WHERE User = 'root' ; 

至此我们大功告成!
nginx,php,mysql 皆是最新版本!


小 A 空间 , 版权所有丨如未注明转载 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明centos7.0 编译安装最新版本 lnmp 环境
喜欢 (7)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址