CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17

目录

一、安装nginx-1.5.11

二、安装Mysql-5.7.22

二、安装mysql-5.7.25 (二者选其一即可)

三 、安装PHP-7.2.17


一、安装nginx-1.5.11

1、安装依赖包

# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*

//下载并解压pcre-8.42.zip  (上面已经包含了 pcre*,这里也可以不安装)
# cd /mydata
# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.zip
//解压到 /usr/local/src/
# unzip pcre-8.42.zip -d /usr/local/src/    //-d参数表示按原名称创建一个包

2、下载并解压nginx
官网:http://nginx.org/en/download.html   
Mainline version为开发版本、 Stable version为稳定版本,我们下载稳定版

# wget http://nginx.org/download/nginx-1.16.0.tar.gz
# tar -zxvf nginx-1.16.0.tar.gz
// 创建nginx用户,
# useradd -M -s /sbin/nologin nginx   创建用户nginx,并且没有登录权限 -M 不创建家目录
# cat /etc/passwd 
# cat /etc/group

3、编辑配置项生成安装文件 Makefile

# cd nginx-1.16.0/
# ls -al
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42

--prefix=/usr/local/nginx  定义安装路径
--user=nginx    指定用户
--group=nginx  指定用户组
--with-pcre=/usr/local/src/pcre-8.42    #这个是可选项,和上面解压到的路径一致,如果yum安装了依赖包这里也可以不用(例如上面已经安装了pcre*系列)
最后出现如图:
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第1张图片
编辑完成后:再次  # ls -al ,此时就多了一个 Makefile的文件 (还有一个objs目录,),如果出错,解决错误后将这两个删除再重新执行即可。

4、编辑安装nginx

# make 
出现如下:
...
objs/ngx_modules.o \
-ldl -lpthread -lcrypt /usr/local/src/pcre-8.42/.libs/libpcre.a -lssl -lcrypto -ldl -lpthread -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
        -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
        -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
        -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
        < man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/mydata/nginx-1.16.0'

//继续 
# make install 
出现如下:
...
test -d '/usr/local/nginx/logs' \
        || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
        || cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
        || mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory `/mydata/nginx-1.16.0'

OK 完成

最后 在 /usr/local/下有nginx目录生成。并且里面包含以下几个目录
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第2张图片
说明已经成功安装了 nginx

5、Nginx的启动与停止  
        nginx安装完成后启动文件为/usr/local/nginx/sbins/nginx ,此为一个二进制文件。在没有设置启动文件和环境变量之前,只能通过此文件进行启动、停止等
(1)启动nginx  

启动nginx
# cd /usr/local/nginx/sbin/
# ./nginx                          //启动nginx

浏览器访问:http://118.24.241.124/  出现

CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第3张图片
OK默认站点可以方法,nginx服务已经启动

(2)查看nginx的运行状态

查看nginx的运行状态
# ps aux | grep nginx                //ps aux  列出系统所有的进程
出现如下:
root      3228  0.0  0.0  46088  1136 ?        Ss   01:21   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     3229  0.0  0.0  48628  1996 ?        S    01:21   0:00 nginx: worker process
root      3231  0.0  0.0 112708   980 pts/0    S+   01:21   0:00 grep --color=auto nginx
说明启动成功,(此时http://106.12.2.195/就可以访问默认站点了)
其中第一行为nginx的主进程(master) 进程PID为3228

查看端口占用情况
# netstat -tlnp
出现
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3228/nginx: master
也说明nginx正常工作

(3)停止nginx

# /usr/local/nginx/sbin/nginx -s top        //强制停止 立即停止
# /usr/local/nginx/sbin/nginx -s quit        //从容停止,在完成当前任务后再停止
# kill  3228                            //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx                        //杀死进程平滑停止

(4)重启nginx

# /usr/local/nginx/sbin/nginx -s reload   //平滑重启,必须在nginx已经启动的状态下才能执行。

6、添加环境变量
到此,我们每次启动nginx,必须使用/usr/local/nginx/sbin/nginx   输入太繁琐,把这个nginx加入到环境变量里,在任何地方通过nginx 就可以直接启动了。

# /usr/local/nginx/sbin/nginx -t                    #检查nginx配置文件的语法是否正确
出现:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

// 编辑添加到环境变量
# vim /etc/profile                        #添加环境变量
把 export PATH=$PATH:/usr/local/nginx/sbin  添加到此文件的最后
# source /etc/profile       //立即生效
查看
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin  添加进来了

# nginx   直接启动

# netstat -antup|grep nginx      //查看端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      27452/nginx: master

OK nginx服务已经运行了

测试:

//现在重启系统
#shutdown -r now 
#[root@localhost ~]# netstat -antup | grep nginx  //下面什么都没有,站点http://118.24.241.124/也无法访问

[root@localhost ~]# nginx   //使用我们设置的好的环境变量启动nginx,现在http://118.24.241.124/可以访问了
#[root@localhost ~]# netstat -antup | grep nginx  可以出现端口信息了

7、设置可执行文件、加入开启重启
(更多请见 https://blog.csdn.net/fsx2550553488/article/details/81039796)

# vim /etc/init.d/nginx
# ======================== 粘贴内容 start ========================

#!/bin/bash
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve

#加载函数库
. /etc/rc.d/init.d/functions

#加载网络配置文件
. /etc/sysconfig/network

#检查网络是否启动
[[ "$NETWORKING" = "no" ]] && exit 0

#定义变量
nginx=/usr/local/nginx/sbin/nginx
prog=$(basename $nginx)
NGINX_CONFIG_NAME="/usr/local/nginx/conf/nginx.conf"
#LOCKFILE="/var/lock/nginx/nginx.lock"

#测试nginx主配置文件是否有语法错误
configtest() {
    $nginx -t
}

#启动函数
start() {
    configtest
    #-x:检测nginx的二进制系统文件是否存在,如果不存在直接退出
    test -x $nginx || exit 5
    #-f:检测nginx的主配置文件是否存在,如果不存在直接退出
    test -f $NGINX_CONFIG_NAME || exit 6

    #如果不存在pid目录、lock目录,则创建
    mkdir -p /var/run/nginx
    mkdir -p /var/lock/nginx
    #输出提示语句,表明nginx服务即将启动
    echo -n $"Starting $prog :"
    #使用nginx二进制系统文件启动nginx服务
    daemon $nginx -c $NGINX_CONFIG_NAME
    #获取nginx启动的返回状态值,存入变量retval
    retval=$?
    echo
    #如果返回状态值为0.表示启动成功,并创建锁文件
    test $retval -eq 0 && touch $LOCKFILE
    return $retval
}

#停止函数
stop() {
    #输出提示语句,表示nginx服务即将关闭
    echo "Stoping $prog :"
    #使用functions文件中定义的killproc函数,杀死nginx对应的进程
    killproc $prog  -QUIT
    #获取nginx关闭的返回状态值,存入变量retval(就是上一条命令执行是否成功的值)
    retval=$?
    echo
    #如果返回状态值为0表示关闭成功,删除锁文件
    [ $retval -eq 0 ] && rm -f $LOCKFILE
    return $retval
}

#重启函数
restart() {
    configtest || return $?
    stop
    sleep 3
    start
}

#热加载
reload() {
    configtest || return $?
    echo -n $"Reloading $prog :"
    #同stop,参数不同,这个表示重启进程
    killproc $nginx -HUP

    retval=$?
    echo
}

#强制重启
force_reload() {
    restart
}

#状态查询
rt_status() {
    #functions中的status函数,获取对应进程的状态
    status $prog
    #如果获取状态为runing,则显示配置文件检测结果,更加细化
    [ $? -eq 0 ] && echo -n `configtest`
    }

case $1 in
    status)
        rt_status
        ;;
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    reload)
        reload
        ;;
    force_reload)
        force_reload
        ;;
    *)
        #如果输入的$1不是上面的,则输出提示信息
        echo "Usage:$prog {start|stop|status|reload|force_reload|restart}"
        exit 1
        ;;
esac

# ======================== 粘贴内容  end =========================

// 赋予脚本执行权限。
# chmod +x /etc/init.d/nginx

加入开机重启

// 添加至服务管理列表,设置开机自启。
# chkconfig --add nginx
# chkconfig  nginx on
// 启动nginx
# service nginx start

// 重启服务器测试:
# shutdown -r now  

OK 开机重启完成。

nginx常用命令

//初始安装后没有加载环境变量前只能使用
# /usr/local/nginx/sbin/nginx 来启动服务
# /usr/local/nginx/sbin/nginx -s stop  停止服务
# /usr/local/nginx/sbin/nginx -s reload  平滑重启(必须在开启的状态下才可以)


//设置环境变量后,直接通过
# nginx  来启动即可

//设置启动脚本,并且通过chkconfig --add nginx 加到service服务后,可以通过
# service nginx start     (systemctl start nginx.service)
# service nginx stop        (systemctl stop nginx.service)
# service nginx restart    (systemctl restart nginx.service)
# service nginx status    (systemctl status nginx.service)
来操作

也可以使用:
# /etc/init.d/nginx start
# /etc/init.d/nginx stop
# /etc/init.d/nginx restart
# /etc/init.d/nginx status

#netstat -antup      //查看所有端口
#netstat -antup|grep nginx      //查看nginx端口

二、安装Mysql-5.7.22

1、删除系统自带的 mariadb

# find / -name mariadb*
# yum -y remove mariadb* boost-*

2、安装依赖

# yum -y install make gcc gcc-c++ cmake bison  bison-devel  ncurses  ncurses-devel

3、创建用户和安装目录

//创建msyql用户
# useradd -M -s /sbin/nologin mysql

//创建安装目录
# mkdir /usr/local/mysql     mysql安装目录
# mkdir /usr/local/mysql/data   (数据库目录)
# mkdir /usr/local/mysql/log    (日志目录)
# touch /usr/local/mysql/log/mysqld.log    创建mysql日志文档

//改变mysql的属组
# chown -R mysql:mysql /usr/local/mysql/ 
或者下面两句
# chown -R mysql /usr/local/mysql/
# chgrp -R mysql /usr/local/mysql/

4、下载并解压

# cd /mydata 
# wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.22.tar.gz

注意:下载完整的包大小为:48985783

# 解压
# tar -zxvf mysql-boost-5.7.22.tar.gz    //注意解压出来的目录名为 mysql-5.7.22 

5、编译,生成makefile 

# cd mysql-5.7.22
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/usr/local/mysql/data  -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/mydata/mysql-5.7.22/boost/boost_1_59_0  -DSYSCONFDIR=/etc  -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_MEMORY_STORAGE_ENGINE=1  -DWITH_ARCHIVE_STORAGE_ENGINE=1  -DWITH_FEDERATED_STORAGE_ENGINE=1  -DWITH_BLACKHOLE_STORAGE_ENGINE=1  -DWITH_PARTITION_STORAGE_ENGINE=1  -DWITH_READLINE=1  -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock  -DMYSQL_TCP_PORT=3306  -DENABLED_LOCAL_INFILE=1  -DENABLE_DTRACE=0  -DEXTRA_CHARSETS=all  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DMYSQL_USER=mysql

配置项解析:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \   #[MySQL安装的根目录]
-DMYSQL_DATADIR=/usr/local/mysql/data  \ #[MySQL数据库文件存放目录]
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/mydata/mysql-5.7.22/boost/boost_1_59_0       #[指定boost安装路径]  注意这里换成你自己的路径
-DSYSCONFDIR=/etc                          #[MySQL配置文件my.cnf所在目录]
-DWITH_MYISAM_STORAGE_ENGINE=1  
-DWITH_INNOBASE_STORAGE_ENGINE=1  
-DWITH_MEMORY_STORAGE_ENGINE=1  
-DWITH_ARCHIVE_STORAGE_ENGINE=1  
-DWITH_FEDERATED_STORAGE_ENGINE=1  
-DWITH_BLACKHOLE_STORAGE_ENGINE=1  
-DWITH_PARTITION_STORAGE_ENGINE=1  
-DWITH_READLINE=1  
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock       #[MySQL的sock文件目录]
-DMYSQL_TCP_PORT=3306    #[MySQL的监听端口]
-DENABLED_LOCAL_INFILE=1    #[启用加载本地数据]
-DENABLE_DTRACE=0  
-DEXTRA_CHARSETS=all     #[使MySQL支持所有的扩展字符]
-DDEFAULT_CHARSET=utf8    #[设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci  #[设置默认字符校对]  
-DMYSQL_USER=mysql \   #[指定mysql用户]
-DWITH_SYSTEMD=1                                    #[用systemd管理mysql
... 更多CMAKE参数 见 https://blog.csdn.net/d_o_n_g2/article/details/76586691

最后出现:

...
...
CMake Warning:
  Manually-specified variables were not used by the project:

    MYSQL_USER
    WITH_MEMORY_STORAGE_ENGINE
    WITH_READLINE
-- Build files have been written to: /mydata/mysql-5.7.22

OK 配置编译成功

如果失败 ,删除 申城的CMAKECache.text 

6、make && make install  安装数据库

# make      #此过程时间过长大约45分钟,也可以指定参数 make -j 2   j 表示指定cpu核数 能加快编译 

最后出现:   
...
Linking CXX executable mysql_embedded
[ 99%] Built target mysql_embedded
Scanning dependencies of target mysqltest_embedded
[ 99%] Building CXX object libmysqld/examples/CMakeFiles/mysqltest_embedded.dir/__/__/client/mysqltest.cc.o
Linking CXX executable mysqltest_embedded
[ 99%] Built target mysqltest_embedded
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
Linking CXX executable my_safe_process
[100%] Built target my_safe_process

OK 编译成功
继续

# make install   
最后出现:
...
-- Installing: /usr/local/mysql/./COPYING-test
-- Installing: /usr/local/mysql/./README-test
-- Up-to-date: /usr/local/mysql/mysql-test/mtr
-- Up-to-date: /usr/local/mysql/mysql-test/mysql-test-run
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server

OK 安装完成

再次修改 安装目录的属主权限  
# chown -R mysql:mysql /usr/local/mysql/     --------  很重要,一定要修改

注意: 如果你的服务器是1G内容的话,在make 编译的时候可能会报以下错误:

。。。
[ 36%] Building CXX object sql/CMakeFiles/sql.dir/item_func.cc.o
[ 36%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc.cc.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,       内存不足
with preprocessed source if appropriate.
See  for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 4
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

内存不足,mysql5.6.9以上的版本,编译安装需要1G内存以上,而我的云主机刚好1G内存。解决方案内存不足当然加内存,加内存太贵?用硬盘创建虚拟内存

# dd if=/dev/zero of=/data/swap_add bs=1M count=2048   //创建一个名为swap_add的虚拟内存,大小为2048MB  即为2G
# mkswap /data/swap_add
# swapon /data/swap_add
# swapon -s

再次执行 # make 即可。

7、 创建配置my.cnf文件

# vim /etc/my.cnf
# ======================== 粘贴内容 start ========================
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
user=mysql
symbolic-links=0
lower_case_table_names=1
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
 
[client]
port=3306
 
[mysqld_safe]
pid-file=/usr/local/mysql/mysqld.pid
log-error=/usr/local/mysql/log/mysqld.log

# ======================== 粘贴内容  end ========================

//设置此文件可执行权限
# chmod 644 /etc/my.cnf

8、配置MySQL启动脚本 

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                      #复制启动脚本到/etc/init.d

#修改变量
# vim /etc/init.d/mysqld
给以下两个变量赋值
basedir=/url/local/mysql/
datadir=/url/local/mysql/data

# chmod +x /etc/init.d/mysqld    (其实不执行这里也可以,默认已经用可执行权限了)

# 添加到环境变量
# vim /etc/profile
  在此文件最后添加如下内容:(因为之前已经添加过nginx的环境变量了)

PATH="$PATH:/usr/local/nginx/sbin:/usr/local/mysql/bin"
export PATH

//立即生效
# source  /etc/profile
# echo $PATH

9、初始化数据库 并设置开机自启动

初始化之前确保/usr/local/mysql/data/下没有任何文件、/var/lock/subsys/下没有mysql的锁定文件, 如果有就删除。
--initialize 会生成一个随机密码, 
--initialize-insecure 不会生成密码,在MySQL安全配置向导mysql_secure_installation设置密码时,可自由选择 mysql 密码等级。 

# 初始化命令
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data      

出现以下内容:
。。。
2019-04-21T19:54:56.222409Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5638d763-646f-11e9-b272-fa163ed3ecd0.
2019-04-21T19:54:56.225336Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-21T19:54:56.226647Z 1 [Note] A temporary password is generated for root@localhost: xMqCw&*d65Qh     <------这个xMqCw&*d65Qh就是初始密码

OK初始化完成

//启动MySQL
# /etc/init.d/mysqld start  
Starting MySQL. SUCCESS!    --- 启动成功

//修改密码
# mysql -u root -p
Enter password:   <------这里输入上面生成的密码 xMqCw&*d65Qh  

mysql>set PASSWORD = PASSWORD("niu123456");    <------设置新密码  或者使用 alter user 'root'@'localhost' identified by '123456';     
mysql> flush privileges;        // 使用flush privileges在插入之后刷新系统权限相关表
mysql>quit;
用新密码重新登陆

OK 新密码设置成功

# 设置开启启动
# chkconfig --add mysqld                #添加到开机启动项
# chkconfig mysqld on                   #添加开机自启动

# shutdown -r now  //重启服务器 。。。 
# /etc/init.d/mysqld status;
SUCCESS! MySQL running (4312)   开机重启设置成功

(也可以配置安全向导  [root@qinser data]# mysql_secure_installation  详细 https://blog.csdn.net/harryxxxxx/article/details/81135222)

10、设置远程连接

mysql> use mysql; 
mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
3 rows in set (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'%' identified by 'niu123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements  -- 提示密码太难简单
mysql> 
mysql> set global validate_password_policy=0;    //降低密码复杂度
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on *.* to 'root'@'%' identified by 'niu123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select user,host from user;     
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

OK可以访问了
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第4张图片

二、安装mysql-5.7.26 (免编译包安装)

1、准备:

1、 卸载系统自带的mariadb*
# rpm -qa|grep mariadb   
 mariadb-libs-5.5.60-1.el7_5.x86_64 
# rpm -e --nodeps  mariadb-libs-5.5.60-1.el7_5.x86_64  删除此

或者使用yum命令删除
# yum -y remove mariadb* boost-*

2、检查mysq用户、用户组是否存在,不存在就创建
[root@localhost /]# cat /etc/group | grep mysql
[root@localhost /]# cat /etc/passwd | grep mysql
[root@localhost /]# 
[root@localhost /]# useradd -s /sbin/nologin mysql   //创建名为mysq的用户并且没有登录权限 (不指定 -g默认创建了同名mysql的用户组)

3、删除my.cnf mysql (若存在)
[root@localhost /]# rm -f /etc/my.cnf
[root@localhost /]# rpm -qa | grep mysql

2、下载、解压
获取下载地址:
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第5张图片   进入CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第6张图片   CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第7张图片
选择如下:

CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第8张图片  进入CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第9张图片 
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第10张图片

复制此链接地址,即可拿到下载地址https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-el7-x86_64.tar.gz

// 下载
# cd /mydata
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-el7-x86_64.tar.gz
# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-el7-x86_64.tar.gz

// 解压到 /usr/local/mysql/   (即安装目录)
# mkdir -p /usr/local/mysql 
# tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz
# mv /mydata/mysql-5.7.25-el7-x86_64/* /usr/local/mysql/      //移动到安装目录
# mkdir /usr/local/mysql/data   (数据库目录)
# mkdir /usr/local/mysql/log    (日志目录)
# touch /usr/local/mysql5.7/log/mysqld.log

//改变mysql的属组
# chown -R mysql:mysql /usr/local/mysql/ 
或者下面两句
# chown -R mysql /usr/local/mysql/
# chgrp -R mysql /usr/local/mysql/

3、安装

# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

此版本采用mysql_install_db 进行安装,不再使用cmake 编译安装
# /usr/local/mysql/bin/mysql_install_db     //安装命令
--initialize                                                  //生成默认密码   
--user=mysql                                             //指定mysql用户
--basedir=/usr/local/mysql/                       //安装目录
--datadir=/usr/local/mysql/data/                // 数据库目录
出现:

2019-04-27T20:02:12.604239Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-27T20:02:13.774448Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-27T20:02:13.942098Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-27T20:02:14.014011Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 59a509a7-6927-11e9-bd28-fa163ed3ecd0.
2019-04-27T20:02:14.016530Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-27T20:02:14.017196Z 1 [Note] A temporary password is generated for root@localhost: _C)iHy)78QJO

 

OK 安装成功

注意最后的  _C)iHy)78QJO  表示默认密码。移动要牢记
如果报错: /usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
是因为有个依赖包没有安装:解决办法:

 

# yum remove libnuma.so.1
# yum -y install numactl.x86_64

再次执行  OK

查看数据库目录 /usr/local/mysql/data/ 有如下生成:
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第11张图片

并且

4、创建配置文件my.cnf

# vim /etc/my.cnf

# ======================== 粘贴内容 start ========================
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
lower_case_table_names=1
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
 
[client]
port=3306
 
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log

# ======================== 粘贴内容  end ========================

//设置此文件可执行权限
# chmod 644 /etc/my.cnf

5、启动并添加到环境变量

#创建驱动文件
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

#修改变量
# vim /etc/init.d/mysqld
给以下两个变量赋值
basedir=/url/local/mysql/
datadir=/url/local/mysql/data

# chmod +x /etc/init.d/mysqld
# service mysqld start                //启动

出现
my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Starting MySQL.my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
my_print_defaults: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Logging to '/usr/local/mysql/data/qinser.com.err'.
.                                                          [  OK  ]
OK 启动成功

# 添加到环境变量
# vim /etc/profile
  在此文件最后添加如下内容:
# MYSQL
export PATH="$PATH:/usr/local/mysql/bin"

//立即生效
# source  /etc/profile
# echo $PATH

6、获取初始密码,连接mysql,更改默认密码,允许远程访问

// 获取初始密码
# cat /root/.mysql_secret
# Password set for user 'root@localhost' at 2019-04-21 03:02:13 
Kkxii!:fvS.a      <------这个就是初始密码

//修改密码
[root@qinser mydata]# mysql -u root -p
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.    (这里是忽略文件,提示/etc/my.cnf的权限过大,设置成644就没有有这个提示了)
Enter password:     <------这里输入上面的初始密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.25

mysql> set PASSWORD = PASSWORD('niu123456');   <----- 新密码 niu123456
mysql> flush privileges;        // 使用flush privileges在插入之后刷新系统权限相关表
Query OK, 0 rows affected (0.00 sec)
OK 新密码设置成功

7、设置开启启动

方法一:(推荐)
# chkconfig  --add mysqld   //加入系统中,可以是使用 systemctl status mysqld.service 命令了
# chkconfig mysqld on     //开机自启动

方法二:
[root@VMTest mysql]# chkconfig --level 35 mysqld on
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# chkconfig --add mysqld
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# service mysqld status

8、设置远程访问

# mysql -u root -p
Enter password:

mysql> use mysql;     --选择mysql数据库

mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
3 rows in set (0.00 sec)

mysql> 
mysql> create user 'root'@'%' identified by 'niu123456';          //% 代表所有主机,如果只允许特点主机访问,可以设置对应的ip地址 
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
4 rows in set (0.00 sec)

mysql> 

OK 可以远程连接了CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第12张图片

Mysql5.7.26 安装全部完成

 

三 、安装PHP-7.2.17

1、下载安装包

# cd /mydata
# wget https://www.php.net/distributions/php-7.2.17.tar.gz

注意:一定要下载完整,不能有报错。

2、安装依赖

# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

3、编辑安装php

# tar -zxvf php-7.2.17.tar.gz
# cd php-7.2.17/
# 编辑PHP的配置项
# ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir  --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache --disable-fileinfo

注意这里配置了PHP的安装目录、PHP的用户为nginx、用户组为nginx 。和上面安装的nginx的用户、用户组一定要相同。
如果出现如下报错:configure: WARNING: unrecognized options: --with-mcrypt, --enable-gd-native-ttf
说明此版本不再支持 --with-mcrypt, --enable-gd-native-ttf 这两个选项, 直接删除,重新编辑即可。

4、make && make install 

[root@localhost php-7.2.17]# make
最新出现
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1  
是因为服务器内存不足1G。只需要在配置命令中添加 --disable-fileinfo即可。
再次执行
[root@localhost php-7.2.17]# ./configure .....  --disable-fileinfo

再次执行
[root@localhost php-7.2.17]# make

。。。 
最后出现
invertedregexiterator.inc
pharcommand.inc
directorytreeiterator.inc
directorygraphiterator.inc
clicommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

继续:

# make install

最后出现:

CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第13张图片

安装成功!

5、添加环境变量到PHP中

# vim /etc/profile

在此文件的最后添加如下两行
PATH=$PATH:/usr/local/php/bin
export PATH

# source /etc/profile  使配置立即生效

再次检查:# php  -v
# echo  $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/bin:/root/bin

OK  已经配置成功

6、配置PHP-fpm 并设置开启重启
进入php的安装包(注意是解压出来的那个安装包,而不是安装目录)
# cd /mydata/php-7.2.17/
# ls -al
可以找到两个 php.ini-development(测试配置文件) php.ini-production生产环境配置文件
复制以下四个文件。

# cp php.ini-production /etc/php.ini      //设置PHP启动文件
# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  //把php-fpm放入系统管理配置项中
# chmod +x /etc/init.d/php-fpm    //为其添加可执行权限

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

添加到环境系统启动项
# chkconfig --add php-fpm             //添加到开机重启

查看是否添加成功
# chkconfig --list 
......
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off  --- php-fpm 添加成功



启动 php-fpm
# chkconfig php-fpm on            //启动php-fpm
# /etc/init.d/php-fpm start
出现 Starting php-fpm  done 
# /etc/init.d/php-fpm  status     //查看PHP(也就是php-fpm)运行状态
php-fpm (pid 2306) is running...   运行成功

7、常用命令(启动PHP 也就是 php-fpm)

/etc/init.d/php-fpm  start    开启服务
/etc/init.d/php-fpm  stop    停止服务
/etc/init.d/php-fpm  status    查看状态
/etc/init.d/php-fpm  restart    重启服务

 8、PHP安装路径

# netstat -ntpl     查看9000端口是否开启(PHP使用的是9000端口)
/etc/init.d/php-fpm    php启动文件
/usr/local/php    PHP安装目录
/usr/local/php/bin/  可执行目录
/etc/php.ini      PHP配置文件

9、让nginx支持php

(1)在默认站点目录下创建 index.php
# vim /usr/local/nginx/html/index.php 
内容如下:
        phpinfo();
?>

(2)修改默认站点的配置文件

# vim /usr/local/nginx/conf/nginx.conf

修改如下两处
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第14张图片
Nginx中的PHP是以fastcgi扩展的方式结合起来的,也可以理解为Nginx代理了php的fastcgi,因此还需要开放下面的配置,(把前面的#号去掉)

(3)重启nginx 

访问:http://118.24.241.124/index.php
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第15张图片

OK PHP可以正常在nginx服务器运行了

10、让PHP支持mysql

(1)把phpmyadmin.tar.gz 上传到 /usr/share/nginx/html/   并解压  # tar -zxvf phpinfomyadmin.tar.gz

(2)http://118.24.241.124/phpmyadmin/index.php  输入用户名root  密码niu123456 登录,出现如下:
CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第16张图片

现在报错 mysqli_real_connect(): (HY000/2002): No such file or directory,错误原因默认php中配置的mysqli没有与实际的mysql.sock对应正确;

首先找我们配置的/etc/my.cnf 文件找到mysql.sock的正确路径:

# vim /etc/my.cnf  大约8行:   socket对应的路径为:   /usr/local/mysql/mysql.sock  

#vim /etc/php.ini

大约1040行

大约1186行

重启php

# /etc/init.d/php-fpm  restart;

再次登录 http://118.24.241.124/phpmyadmin/index.php  

CentOS7.3源码包安装nginx-1.16.0+mysql-5.7.25+php-7.2.17_第17张图片

OK 成功
到此, 整个LNMP 全部安装配置完成!!

你可能感兴趣的:(PHP,Linux,Mysql,Nginx)