实验背景:
前提,关闭selinux和防火墙
虚拟机server1(172.25.8.1) 搭建lnmp架构
真机(172.25.8.250) 测试
mysql模块
mysql源码编译时要求虚拟机的硬盘大小不能小于20G,否则后边的编译过程可能会出问题,而且会很漫长,为了提升速度我们应该增加CPU核数和内存。
1.在官网和paks.org获得一些所需的安装包和依赖,解压安装 mysql
2.创建mysql用户
useradd -s /sbin/nologin -M mysql
-M:不要自动建立用户的登入目录
3.mysql的编译命令是cmake,因此需要安装cmake
4.进入mysql包的目录,开始检测环境
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装位置
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #指定套接字文件位置
> -DEXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8 \ #默认字符集
> -DDEFAULT_COLLATION=utf8_general_ci \ #默认字符校对
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装 myisam 存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb 存储引擎
> -DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装 memory 存储引擎
> -DWITH_READLINE=1 \ #支持 readline 库
> -DENABLED_LOCAL_INFILE=1 \#启用加载本地数据
> -DMYSQL_USER=mysql \ #指定 mysql 运行用户
> -DMYSQL_TCP_PORT=3306 #指定 mysql 端口
> -DWITH_BOOST=boost/boost_1_59_0/
5.根据提示解决依赖性问题
yum install gcc gcc-c++ ncurses-devel openssl-devel -y
6.进行重新编译前,需要清除原来的对象文件和缓存信息,否则会报错
make clean
rm -fr CmakeCache.txt'
7.出现报错
解决:
重新编译成功
8.make && make install (过程较长) ##如果 make 还有问题,删除原来的目录,重新解压编译
10.安装成功
配置mysql
进入lnmp目录,可以看到生成了mysql目录
(1)修改权限
cd /usr/local/lnmp/mysql
mkdir data
chown -R root .
chown -R mysql data
ln -s /usr/local/lnmp/mysql/bin/* /usr/local/bin/
只把data目录的权限给mysql用户
(2)复制配置文件
cd /usr/local/lnmp/mysql/mysql-test/include
cp default_my.cnf /etc/my.cnf
cd /usr/local/lnmp/mysql/support-files
cp -a mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on #设置mysql开机自启动
systemctl status mysqld
复制目录后其文件属性会发生变化,想要使得复制之后的目录和原目录完全一样包括文件权限,可以使用cp -a dirname destdir
生成mysql的启动脚本,给权限
先备份一下mysql服务的配置文件,再复制一份模版
1)
2)
如果在做后面的步骤时,报错data目录有数据,就把它清空。
(3)安全初始化
利用初始密码登录数据库,发现只有改了密码之后才可以查看数据库
mysqld --user=mysql --initialize (以 mysql 用户身份初始化)初始化会生成一个临时密码,用于登录 mysql(要记住此密码)
启动 mysql:systemctl start mysqld
进入 mysql:mysql -uroot -p(刚才的密码: #使用刚才的临时密码执行:show databases; 会报错
需要执行:mysql_secure_installation,然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求剩余全部选 y
设置好密码之后,就可以登陆了
在登录mysql时,忘记了超户的密码怎么办?
1.停止mysqld
2.清空data文件数据,重新初始化mysqld,会重新生成一个新的密码
3.启动mysqld
4.拿新的密码进行安全初始化
5.拿自己设置的密码登录mysql就可以
php模块
1.在获得php的压缩包之后在(放在/lnmp目录中),解压它:tar zxf php-7.4.1.tar.gz
2.进入解压目录,开始检测安装的环境,进行编译
./configure --prefix=/usr/local/lnmp/php
--with-config-file-path=/usr/local/lnmp/php/etc
--with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config
# 定义了php怎么去连接mysql,以及php用到的一些库文件
--enable-soap --enable-mbstring=all --enable-sockets
--with-pdo-mysql=/usr/local/lnmp/mysql
--enable-gd --without-pear --enable-fpm
出现报错
解决报错,再次直接编译
又出现报错,解决报错
出现报错,显示缺少sqlite,安装sqlite就可以
出现报错,yum install -y oniguruma-* 这个包需要去官网找,yum源没有
注意,编译时,根据报错提示安装需要的就可以。
最后,编译成功
最后安装,过程会比较长
安装好之后,进行php的配置
1.拷贝更改配置文件
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf #复制一份配置文件模版
vim php-fpm.conf #辑fastcgi的进程管理文件
打开 pid = run/php-fpm.pid
2.拷贝子配置文件
cd /usr/local/lnmp/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf
user = nginx group = nginx
php是个解析程序,需要nginx去启动php
3.拷贝更改 php 主配置文件
cd /lnmp/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
vim /usr/local/lnmp/php/etc/php.ini
修改时区:date.timezone = Asia/Shanghai
4.拷贝 php 启动脚本至/etc/init.d/
cd /root/lnmp/php-7.4.1/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
添加执行权限:chmod +x /etc/init.d/php-fpm
useradd -u 900 nginx
9) 启动 /etc/init.d/php-fpm start
添加完用户之后
注意:
#FastCGI = Fast Common Gateway Interface(快速通用网关接口) #HTTP 服务器与你的或其它机器上的程序进行“交谈”的一种工具启动报错可能因为没有 nginx 用户,需要手动创建
nginx模块
2) 进入 nginx 解压包:
vim src/core/nginx.h
修改:#define NGINX_VER "nginx/"
(将此行末尾显示 nginx 版本号的配置删除,可以加强安全性,更加保密
vim auto/cc/gcc 修改:
# debug 关闭编译的debug模式
#CFLAGS="$CFLAGS -g" (将这 2 行注释调,关闭 debug,这样安装的就会小一点
3)编译安装 nginx
./configure --prefix=/usr/local/lnmp/nginx
--with-http_ssl_module
--with-http_stub_status_module
--user=nginx --group=nginx
根据提示解决依赖性 ##此处应该还需要安装 pcre-devel
再次编译就成功了
4)安装
5)修改 nginx 配置文件,开启 php 模块
将第一行的用户改为user nginx nginx
(添加 php 页面)
6)将 nginx 启动脚本链接到/usr/local/sbin/
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin
把nginx服务的启动脚本做软连接,方便管理nginx服务
nginx -t检测配置文件的语法是否存在错误
nginx 开启nginx服务
查看nginx服务开启的端口,默认是80端口7)编写nginx服务的默认发布页面 默认发布目录添加 index.php
cd /usr/local/lnmp/nginx/html
vim index.php
<?php
phpinfo()
?>
8).在浏览器中访问,可以看到 php 的默认页面
至此,lnmp架构搭建完成