1 准备工作
保证系统已安装gcc、g++,没有安装的话通过以下命令安装:
yum install gcc gcc-c++
2 安装nginx
安装nginx依赖包,如Rewrite模块和HTTP核心模块会使用到的PCRE正则表达式解析、需要使用gzip压缩、安全套接字层SSL:
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载openssl的源码包并解压
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -zxvf openssl-1.1.0h.tar.gz
下载nginx包并解压
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
编译安装到/usr/local/nginx
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --with-openssl=../openssl-1.1.0h
make
make install
创建并设置nginx运行账号
groupadd nginx
useradd -M -g nginx -s /sbin/nologin nginx
修改/usr/local/nginx/conf/nginx.conf,设置user参数如下,其他配置参数暂时无需改动。
user nginx nginx
设置nginx为系统服务,新建/lib/systemd/system/nginx.service,内容如下:
[Unit]
Description=nginx
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 stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置nginx开机自启动
systemctl enable nginx.service
开启nginx服务:
systemctl start nginx.service
查看nginx是否启动成功:
ps aux | grep nginx
防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
3 安装MySQL
下载 mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz,并解压到/usr/local/mysql下
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.22 /usr/local/mysql
建立mysql相关的用户和组,-s /sbin/nologin用于阻止用户登录
groupadd mysql
useradd -M -s /sbin/nologin -g mysql mysql
chown -R mysql .
chgrp -R mysql .
初始化数据
cd /usr/local/mysql
bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost 账号;--secure-file-priv 指定密码文件夹位置 对应文件夹下就会有 .mysql_secret 文件。
配置mysql服务
cp support-files/mysql.server /etc/init.d/mysqld
cp support-files/my-default.cnf /etc/my.cnf
在/etc/init.d/mysqld和/etc/my.cnf中都添加
basedir = /usr/local/mysql/
datadir = /usr/local/mysql/data
启动mysql服务
service mysqld start
******
另外一种配置mysql服务的方法是,新建文件 /lib/systemd/system/mysql.service,内容如下:
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecRestart=/usr/local/mysql/support-files/mysql.server restart
ExecReload=/usr/local/mysql/support-files/mysql.server reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置mysql服务开机自启动
systemctl enable mysql.service
启动mysql
systemctl start mysql.service
查看mysql状态
systemctl status mysql.service
如果启动失败,直接执行/usr/local/mysql/support-files/mysql.server restart,可以看到详细错误原因。
******
登录mysql,修改root用户密码
mysql -u root -p
SET PASSWORD = PASSWORD('123456');
4 安装PHP
安装php依赖包
yum 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 readline readline-devel libxslt libxslt-devel
下载php包并解压
tar -zxvf php-7.2.8.tar.gz
编译安装(到/usr/local/php目录)
cd php-7.2.0
./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --enable-zip --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/tmp/mysql/mysql.sock --without-pear --enable-bcmath
(注意:php7不再使用mysql的库来支持mysql的连接,而是启用了mysqlnd来支持,所以php7的编译已经不再使用--with-mysql参数指定mysql的安装位置了,若想支持mysql,需要设置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd参数,--with-mysql-sock指定的是mysql的UNIX套接字文件的位置)
make
make install
将php包解压目录中的配置文件放置到正确位置(configure命令中的--with-config-file-path设置的位置)
cp php.ini-production /etc/php.ini
设置php-fpm运行账号,统一使用nginx的账号,如果用其他账号会有权限问题,解决起来比较麻烦。
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d
cp www.conf.default www.conf
搜索“user”设置运行账号:
user=nginx
group=nginx
配置nginx支持php,修改/usr/local/nginx/conf/nginx.conf,启用rewrite:
修改完成之后记得重启nginx服务:
systemctl start nginx.service
设置php-fpm为系统服务,新建文件 /lib/systemd/system/php-fpm.service,文件内容如下:
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
PrivateTmp=True
[Install]
WantedBy=multi-user.target
设置php-fpm服务开机自启动:
systemctl enable php-fpm.service
启动php-fpm:
systemctl start php-fpm.service
查看是否启动成功:
ps aux | grep php-fpm
编写phpinfo.php脚本测试nginx是否已支持php,php是否已支持mysql。
<?php
phpinfo();
?>
至此,LNMP搭建完成!