源码编译搭建LNMP
什么是LNMP
LNMP 环境是指在 Linux 系统下,由 Nginx + MySQL/MariaDB + PHP 组成的网站服务器架构。
源码安装LNMP
# 安装各种依赖包
yum -y install apr* autoconf automake numactl bison bzip2-devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na* bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-devel gmp-devel --skip-broken
# 源码包请自行准备好
# 解压
tar -xvf lnmp.tar.xz
# 切换目录
cd lnmprpcsvc-proto操作
# 解压 rpcsvc-proto 源码包(tar.gz 格式)
tar xzvf rpcsvc-proto-1.4.tar.gz
# 切换到解压后的源码目录
cd rpcsvc-proto-1.4/
# 运行配置脚本,检测系统环境并生成 Makefile
./configure
# 编译源码,生成可执行文件/库文件
make
# 安装编译好的文件到系统目录(通常需要 root 权限)
make install
# 返回上级目录(即回到执行解压时的初始目录)
cd .配置Nginx服务
创建用于管理网站服务的系统账户
# 创建账户
useradd nginx -M -s /sbin/nologin
# 确认用户信息
id nginx
## 可能存在账户存在情况
## 如果确认无重要文件,可以删除并重建
userdel nginx
useradd nginx -M -s /sbin/nologin编译安装Nginx网站服务程序
# 解压 Nginx 源码包(.tar.gz 格式,z 表示 gzip 压缩,x 表示解压,v 表示显示过程,f 指定文件)
tar zxvf nginx-1.31.0.tar.gz
# 切换到解压后的 Nginx 源码目录
cd nginx-1.31.0/
# 运行配置脚本,检测系统环境并生成 Makefile(添加用户和SSL模块)
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
# 编译源码,将 C 代码编译成可执行的二进制文件
make
# 安装编译好的文件到指定目录(/usr/local/nginx)
make install
# 返回上级目录(回到执行解压时的初始目录)
cd ..配置文件
# 编辑配置文件
vim /usr/local/nginx/conf/nginx.conf
# 修改位置
## 把第2行的注释符(#)删除 假设由nginx用户及nginx用户组负责管理网站服务
user nginx nginx;
## 修改第43行的首页文件名称 在里面添加index.php的名字
## 这个文件也是让用户浏览网站时第一眼看到的文件,也叫首页文件。
41 location / {
42 root html;
43 index index.php index.html index.htm;
44 }
## 删除第61~69行前面的注释符(#)来启用虚拟主机功能
## 然后将第67行后面对应的网站根目录修改为/usr/local/nginx/html
## 其中的fastcgi_script_name参数用于指代脚本名称
## 也就是用户请求的URL。只有信息填写正确了,才能使Nginx服务正确解析用户请求。
## 否则访问的页面会提示“404 Not Found”的错误。
61 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
62 #
63 location ~ \.php$ {
64 root html;
65 fastcgi_pass 127.0.0.1:9000;
66 fastcgi_index index.php;
67 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
68 include fastcgi_params;
69 }systemctl命令所管理
# 编辑配置文件
vim ~/.bash_profile
# 配置文件内容
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin
export PATH
# 刷新生效
source ~/.bash_profile
# 启动Nginx
nginx 配置Mysql服务
# 创建用户
useradd mysql -M -s /sbin/nologin
# 解压MySQL安装软件包
tar xvf mysql-8.0.18.tar.xz
# 重命名
mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
# 移动到/usr/local目录下
mv mysql /usr/local
# 切换目录
cd /usr/local/mysql
# 创建存储数据库文件
mkdir data初始化MySQL服务程序
# 对目录进行授权
chown -R mysql:mysql /usr/local/mysql
# 进入目录
cd bin
# 数据库初始化(获取临时密码)
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 让服务器每次重启后都能自动启动数据库,并给予可执行权限。
cd /usr/local/mysql
# 复制文件
cp -a support-files/mysql.server /etc/init.d/mysqld
# 赋予权限
chmod a+x /etc/init.d/mysqld
# 修改MySQL配置文件
vim /etc/my.cnf
# 添加以下内容
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 执行MySQL数据库服务启动文件
/etc/init.d/mysqld start
# 安装兼容库
yum install ncurses-compat-libs -y
# 登录MySQL(输入初始化密码)
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 切换数据库
use mysql;
# 并使用 mysql_native_password 加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
# 创建WordPress网站系统的数据库
create database linuxcool;
# 退出数据库
exit配置php服务
# 切换目录
cd ~/lnmp
# 解压
tar xvf php-7.3.5.tar.gz
# 切换目录
cd php-7.3.5/
# 编译安装 PHP
./configure --prefix=/usr/local/php --enable-fpm --with-mysqli --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd --enable-mbstring --with-gd
# 生成二进制文件(时间大约为10~20分钟,耐心等待即可)
make -j$(nproc)
# 进行安装
make install
# 将生成的php服务配置文件复制到安装目录中(/usr/local/php/)
cp php.ini-development /usr/local/php/lib/php.ini
# 切换目录
cd /usr/local/php/etc/
# 重命名
mv php-fpm.conf.default php-fpm.conf
# 复制一个模板文件到php-fpm.d的目录中,用于后续控制网站的连接性能
mv php-fpm.d/www.conf.default php-fpm.d/www.conf
# 把php服务加入到启动项中,使其重启后依然生效
cd ~/lnmp/php-7.3.5
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
# 配置文件(视情况修改)
vim /usr/local/php/lib/php.ini
# 文件内容
307 ; This directive allows you to disable certain functions for security reasons.
308 ; It receives a comma-delimited list of function names.
309 ; http://php.net/disable-functions
310 disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
# 启动
/etc/init.d/php-fpm start搭建Wordpress博客
# 切换目录
cd ..
# 把Nginx服务程序根目录的内容清空
rm -f /usr/local/nginx/html/*
# 解压
tar xzvf wordpress.tar.gz
# 将WordPress解压后的网站文件复制进去
mv wordpress/* /usr/local/nginx/html/
# 为了能够让网站文件被Nginx服务程序顺利读取,应设置目录所有权的身份及可读写的权限
chown -Rf nginx:nginx /usr/local/nginx/html
chmod -Rf 777 /usr/local/nginx/html
# 切换目录
cd /usr/local/nginx/html/
# 编辑配置文件
vim wp-config.php
# 把提示内容粘贴进去保存退出
# 本机IP地址访问WordPress网站的首页面
原创
源码编译搭建LNMP
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法