编译安装LNMP

软件:MySQL-5.7.2、PHP-7.1.5、Nginx-1.14.2

安装mysql:
卸载系统自身mariadb:
[ ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[ ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps

安装依赖包:
[ ~]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel perl-Data-Dumper boost boost-doc boost-devel

创建源码目录:
[ ~]# mkdir /home/tools && cd /home/tools

解压源码包:
[ tools]# mv /root/mysql-boost-5.7.22.tar.gz .
[ tools]# ll
total 47840
-rw-r--r--. 1 root root 48985783 Jan 1 02:12 mysql-boost-5.7.22.tar.gz
[ tools]# tar zxvf mysql-boost-5.7.22.tar.gz
[ tools]# cd mysql-5.7.22/

创建目录:
[ mysql-5.7.22]# mkdir /usr/local/mysql
[ mysql-5.7.22]# mkdir /usr/local/mysql/mydata
[ mysql-5.7.22]# mkdir /usr/local/mysql/conf
[ mysql-5.7.22]# groupadd mysql
[ mysql-5.7.22]# useradd -s /sbin/nologin -g mysql -M mysql
[ mysql-5.7.22]# chown -R mysql:mysql /usr/local/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_ZLIB:STRING=bundled \
-DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost

注意:---------------------------------------------------------------
-DWITH_SYSTEMD=1 ------>是否支持systemd方式管理MySQL
-DDOWNLOAD_BOOST=1 ------>自动下载boost支持
-DWITH_BOOST=./boost ------>本地boost目录
为了简化本地连接MySQL,提供一种封装形式的TCP/IP协议。
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock

编译:
[ mysql-5.7.22]# make
[ mysql-5.7.22]# make install

初始化:
[ mysql-5.7.22]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql/mydata --basedir=/usr/local/mysql

修改配置文件:
[ ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/mydata
socket=/usr/local/mysql/mysql.sock
log_error=/var/log/mysql.log
user=mysql
[client]
socket=/usr/local/mysql/mysql.sock

创建日志文件:
[ ~]# touch /var/log/mysql.log
[ ~]# chown -R mysql:mysql /var/log/mysql.log

更新启动脚本:
[ ~]# vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemd管理启动:
[ ~]# systemctl start mysqld

配置环境变量:
[ ~]# echo ‘export PATH=/usr/local/mysql/bin:$PATH‘ >>/etc/profile
[ ~]# source /etc/profile

密码配置:
[ ~]# mysqladmin -uroot password 000000
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: NO)‘

#################解决方法########################
在/etc/my.cnf中添加skip-grant-tables
然后重启mysql
[ ~]# mysql
mysql> update mysql.user set authentication_string=password("000000") where user="root";
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
####新版的mysql数据库下的user表中已经没有Password字段了。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
然后去掉my.cnf配置文件添加的那句,重启mysql
[ ~]# mysql -uroot -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.22 Source distribution

Copyright (c) 2000, 2018, 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>

安装PHP
创建用户:
[ ~]# groupadd nginx
[ ~]# useradd -s /sbin/nologin -g nginx -M nginx -u 122gin -u 122 -M nginx

安装依赖包:
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt-devel libicu-devel
##在Centos默认yum源里没有libmcrypt-devel,需要安装第三方yum源
[ ~]# wget http://www.atomicorp.com/installers/atomic
[ ~]# sh ./atomic
[ ~]# yum install libmcrypt-devel

解压PHP包:
[ ~]# cd /home/tools/
[ tools]# mv /root/php-7.1.5.tar.gz .
[ tools]# tar zxvf php-7.1.5.tar.gz
[ tools]# cd php-7.1.5

预编译:
./configure --prefix=/usr/local/php-7.1.5 \
--with-config-file-path=/usr/local/php-7.1.5/etc \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--enable-fpm \
--with-fpm-user=nobody \
--with-fpm-group=nobody \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--with-mcrypt \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--enable-opcache \
--with-xsl

编译安装:
[ php-7.1.5]# make
[ php-7.1.5]# make install

优化处理配置:
[ ~]# ln -s /usr/local/php-7.1.5 /usr/local/php
[ php-7.1.5]# cp php.ini-development /usr/local/php/lib/php.ini
[ php-7.1.5]# vi /usr/local/php/lib/php.ini
##修改以下内容
mysqli.default_socket = /usr/local/mysql/mysql.sock //将php与mysql关联
date.timezone = Asia/Shanghai //设置时区
pdo_mysql.default_socket=/usr/local/mysql/mysql.sock //修改mysql.sock文件路径

验证安装的模块:
[ php-7.1.5]# /usr/local/php/bin/php -m

配合fpm模块:
[ php-7.1.5]# cd /usr/local/php/etc/
[ etc]# cp php-fpm.conf.default php-fpm.conf
[ etc]# cd /usr/local/php/etc/php-fpm.d/
[ php-fpm.d]# cp www.conf.default www.conf
[ php-fpm.d]# vim /usr/local/php/etc/php-fpm.conf
##修改以下内容
pid = run/php-fpm.pid //分号去掉

配置systemd管理:
[ php-fpm.d]# vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.
conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target
[ php-fpm.d]# systemctl daemon-reload

启动fpm模块:
[ php-fpm.d]# systemctl start php-fpm.service
[ php-fpm.d]# systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

默认9000端口提供服务

安装nginx:
安装依赖包:
[ ~]# yum -y install pcre* openssl-devel

解压源码包:
[ ~]# cd /home/tools/
[ tools]# mv /root/nginx-1.14.2.tar.gz .
[ tools]# tar zxvf nginx-1.14.2.tar.gz

预编译:
[ tools]# cd nginx-1.14.2
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module --with-http_stub_status_module \
--with-http_stub_status_module --with-pcre

编译:
[ nginx-1.14.2]# make && make install

检查是否安装成功:
[ nginx-1.14.2]# /usr/local/nginx/sbin/nginx -t
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

备份并修改配置文件:
[ nginx-1.14.2]# cd /usr/local/nginx/conf/
[ conf]# cp nginx.conf nginx.conf.bak
[ conf]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for" ‘;
access_log logs/access.log main;

server {
    listen       80;
    server_name  192.168.10.130;
    location / {
        root   html/www;
        index  index.php index.html index.htm;
    }
    location ~ .*\.(php|php5)?$ {
        root   html/www;  #PHP程序访问的站点数据信息
        fastcgi_pass  127.0.0.1:9000; #9000代表就是PHP服务程序
        fastcgi_index index.php; #指定动态请求的默认首页文件
        include fastcgi.conf;
    }
}

}

加入systemd管理:
[ conf]# vim /etc/systemd/system/nginx.service
[Unit]
Description=nginx server daemon
Documentation=man:nginx(8)
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[ conf]# systemctl daemon-reload
[ conf]# systemctl start nginx
[ conf]# systemctl enable nginx

默认站点目录:
[ conf]# cd /usr/local/nginx/html/

测试文件添加:
测试PHP文件:
[ conf]# cd /usr/local/nginx/html/
[ html]# mkdir www
[ html]# echo ‘<?php phpinfo(); ?>‘ > www/phpinfo.php
测试Mysql文件:
[ html]# vim www/mysql.php
<?php
$link=mysqli_connect(‘localhost‘,‘root‘,‘000000‘);
if($link) echo "<h1>Database connection successful</h1>";
else echo "Fail!!";
?>

浏览器访问:

相关推荐