企业最常用的两种web架构就是LAMP和LNMP,今天就用编译的方式介绍一下LNMP的安装步骤,使用wordpress的CMS做网站的内容管理器
LAMP=Linux+Apache+Mysql+PHP
LNMP=Linux+Nginx+Mysql+PHP
分为4个步骤,分别是:安装nginx、安装mysql、安装php、安装Wordpress
系统环境:CentOS7.9,我使用的是华为云服务器,根据自己的实际情况即可,虚拟机也是可以的
建议大家使用我的安装路径,因为内容比较多,任何小插曲都有可能造成平台部署失败
安装包放在文章末尾了,自取
先试用这个脚本做个预测试,必须全部达标才能往下进行
vim cs.sh
粘贴脚本,然后sh cs.sh运行
#!/bin/bash
#function:用户、网络、安全测试
#author:墨染-2022-10-7
if [ $USER != root ];then
echo "当前不是root用户,请切换至root用户再次运行脚本"
exit
fi
ping -c3 -i0.1 -W1 www.baidu.com &> /dev/null
if [ $? != 0 ];then
echo "当前无网络,请保证网络畅通再次运行脚本"
exit
else
echo "当前网络畅通,即将开始运行脚本"
fi
sleep 2
systemctl stop firewalld.service && systemctl disable firewalld.service
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
echo "防火墙和selinux高级权限管理已关闭"
效果如下图即可
1、编译安装nginx服务
安装依赖包
yum -y install gcc-c++ && yum install -y pcre pcre-devel && yum install -y zlib zlib-devel && yum install -y openssl openssl-devel
切换路径
cd /usr/local/src
下载安装包
wget https://nginx.org/download/nginx-1.20.2.tar.gz
解压
tar xvfz nginx-1.20.2.tar.gz
进入解压目录
cd nginx-1.20.2
编译
./configure --prefix=/usr/local/nginx
安装
make && make install
编译成功界面,然后执行make && make install安装
安装成功界面,在任何情况下都可使用echo $?判断上条命令是否执行成功,如果输入结果不等于0,则说明命令执行失败;如果输入结果等于0,那就说明命令执行成功!
为了后期可以使用service或systemclt来管理nginx服务,建议将它注册为系统服务
如果你的安装路径不在/.usr/local/nginx下,相应的路径也要更改,根据自己的环境而定
注册为系统服务,直接复制粘贴在命令行即可
cat>>/lib/systemd/system/nginx.service<< EOF
[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 quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
效果如下图则说明nginx服务启动成功,也可以使用service来管理,后期维护就方便多了
在web界面测试一下,在浏览器输入查询出来的IP地址,因为我的云服务器在平台上做了DNS解析,所以直接输入域名即可;能看到Nginx就说明服务已经在正常运行了
ifconfig | grep inet |cut -d " " -f 10 | head -1
2、编译安装Mysql数据库,我使用的是mysql-5.5.62这个版本
安装依赖包
yum install -y openssl* ncurses-devel* libtirpc* rpcgen* gcc* make gcc-c++ bison-devel ncurses-devel perl openssl-devel autoconf cmake* lrzsz
创建mysql用户
useradd -s /sbin/nologin -M mysql
切换路径上传安装包
cd /usr/local/src
rz #使用该命令上传安装包
解压
tar xvfz mysql-5.5.62.tar.gz
切换路径
[root@web-server src]# cd mysql-5.5.62
编译
cmake . \
-DCMAKE\_INSTALL\_PREFIX=/usr/local/mysql \
-DMYSQL\_DATADIR=/usr/local/mysql/data/ \
-DMYSQL\_UNIX\_ADDR=/usr/local/mysql/mysql.sock \
-DWITH\_INNOBASE\_STORAGE\_ENGINE=1 \
-DWITH\_MYISAM\_STORAGE\_ENGINE=1 \
-DENABLED\_LOCAL\_INFILE=1 \
-DEXTRA\_CHARSETS=all \
-DDEFAULT\_CHARSET=utf8 \
-DDEFAULT\_COLLATION=utf8\_general\_ci \
-DMYSQL\_USER=mysql \
-DWITH\_DEBUG=0 \
-DWITH\_EMBEDDED\_SERVER=1 \
-DMYSQL\_USER=mysql
效果如下图
安装
make && make install
等这个过程100%就OK了 ,mysql-5.5.62这个版本安装还是很快的七八分钟左右就能搞定,5.7就要四五十分钟了
效果如下图即为安装完成
创建目录存放日志
mkdir /usr/local/mysql/logs
递归修改属主和属组
chown mysql:mysql -R /usr/local/mysql
拷贝系统文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
修改权限
chmod 755 /etc/init.d/mysql
修改mysql配置文件
cat > /etc/my.cnf << EOF
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
server-id=1
log-bin=/usr/local/mysql/logs/mysql-bin
EOF
更改环境变量
sed -i 's/PATH=\$PATH:\$HOME\/bin/PATH=\$PATH:\$HOME\/bin:\/usr\/local\/mysql\/bin:\/usr\/local\/mysql\/lib/g' /root/.bash_profile
加载环境变量
source /root/.bash_profile && source /root/.bash_profile
创建软链接
ln -s /usr/local/mysql/bin/mysql* /usr/bin
切换路径
cd /usr/local/mysql/scripts
初始化数据库
./mysql_install_db \
--defaults-file=/etc/my.cnf \
--datadir=/usr/local/mysql/data/ \
--user=mysql \
--basedir=/usr/local/mysql
如下图即为成功
查看mysql状态
service mysql status
启动mysql服务
service mysql start
进入mysql数据库
mysql -u root -p 没有密码直接回车
能够看到3306端口并正常进入数据库就OK了
3、编译部署PHP
安装依赖包
yum install -y gcc gcc-c++ 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 gd net-snmp-devel* libtool sqlite-devel* make expat-devel autoconf automake libxml* sqlite* bzip2-devel bzip2 bzip2-libs libcurl* net*
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm
yum install -y https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm
切换路径
cd /usr/local/src
rz #上传PHP安装包
解压
tar xvfz php-7.4.30.tar.gz
进入目录
cd php-7.4.30
编译
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --enable-pdo \
--with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=web --with-fpm-group=web --with-pcre-regex \
--with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir \
--with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl \
--enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext \
--disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/
如下图即为编译成功
安装
make && make install
这个过程可能要十几分钟,耐心等待
出现这个界面说明PHP编译安装成功
将PHP注册为系统服务
cp /usr/local/src/php-7.4.30/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/src/php-7.4.30/sapi/fpm/php-fpm.service /etc/systemd/system/
systemctl daemon-reload
service php-fpm status
4、配置;所有的服务都安装完成后,最麻烦最棘手的就是配置,要保证服务之间能够互相转发访问请求
创建运行LNMP平台的用户
useradd web
无论是nginx、php还是mysql,所有的user和group都是同一个用户
1)先配置nginx服务
创建目录,存放子配置文件
mkdir /usr/local/nginx/conf/conf.d
主配置文件:nginx.conf
user web web; # nginx的用户
include conf.d/*.conf; #子配置文件的路径
覆盖nginx配置文件
cat > /usr/local/nginx/conf/nginx.conf << EOF
user web web;
worker_processes 2;
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 8 64k;
client_max_body_size 100m;
limit_conn_zone \$binary_remote_addr zone=one:32k;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
'\$status \$body_bytes_sent "\$http_referer" '
'"\$http_user_agent" "\$http_x_forwarded_for"';
#include default.conf;
include conf.d/*.conf;
}
EOF
子配置文件的站点文件配置:www.conf
listen 80 #Nginx监听端口
root /usr/local/nginx/html/wordpress; #CMS的路径
fastcgi_pass 127.0.0.1:9000; #和PHP的保持一样,9000端口为PHP的监听端口
创建nginx站点文件
cat > /usr/local/nginx/conf/conf.d/www.conf << EOF
server {
listen 80;
root /usr/local/nginx/html/wordpress;
server_name localhost;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO \$2;
include fastcgi.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files \$uri \$uri/ /?\$args;
}
}
EOF
检查配置文件
/usr/local/nginx/sbin/nginx -t
如下图配置文件没有问题
2)配置PHP
递归修改php目录的属组和属主
chown web:web /usr/local/php -R
创建php的日志目录
mkdir /var/log/php
创建php的错误日志文件(不创建也可以,配置文件指定了,服务启动后会自动创建)
touch /var/log/php/php-fpm.log
主配置文件:php-fpm.conf
error_log = /var/log/php/php-fpm.log #错误日志路径
include = /usr/local/php/etc/php-fpm.d/*.conf #子配置文件路径
cat > /usr/local/php/etc/php-fpm.conf <
子配置文件:www.conf
listen = 127.0.0.1:9000 #php监听端口要和前面nginx子配置文件配置对应
cat > /usr/local/php/etc/php-fpm.d/www.conf <
检查配置文件
/usr/local/php/sbin/php-fpm -t
3)配置Mysql数据库
创建数据库,名称为LNMPDB
/usr/local/mysql/bin/mysql -uroot -e "create database LNMPDB;"
创建用户shu,密码为gdpl168.cn,当用户从web-server主机登录时LNMPDB数据库赋予该用户所有权
/usr/local/mysql/bin/mysql -uroot -e "grant all on LNMPDB.* TO 'shu'@'web-server' IDENTIFIED BY 'gdpl168.cn';"
授权可以从localhost主机登录
/usr/local/mysql/bin/mysql -uroot -e "grant all on LNMPDB.* TO 'shu'@'localhost' IDENTIFIED BY 'gdpl168.cn';"
刷新权限
/usr/local/mysql/bin/mysql -uroot -e "FLUSH PRIVILEGES;"
需使用刚才创建的用户和密码登录数据库,并查看是否有LNMPDB数据库
如下图,说明创建成功
4)配置Wordpress内容管理器
切换目录
cd /usr/local/nginx/html
rm -rf ./* #删除默认的网站文件
rz 上传wordpress安装包
解压
tar xvfz wordpress-5.9.1-zh_CN.tar.gz
递归修改属组和属主为root
chown root:root -R wordpress
更改属组和属主
chown web:web wp-admin/ -R
chown web:web wp-content/ -R
chown web:web wp-includes/ -R
mv wp-config-sample.php wp-config.php
编辑配置文件
vim /usr/local/nginx/html/wordpress/wp-config.php
如下图,填写数据库的名称,用户和密码,主机名信息
最后在网页测试访问,输入测试nginx时的IP地址
弹出安装wordpress的界面为正常
这些信息自己填,用户名什么的都可以自定义,然后点击安装wordpress
安装完成界面
登录界面,用户名和密码为自己刚定义的;单击登录即可
这个便是后台的管理地址
只输入IP看一下默认的界面是什么样子的
这个是默认的主题,可以在后台更换主题
这些主题都可以更换
其他更多的功能自己去研究吧
希望本篇文章可以帮助到你
有任何问题欢迎大家冒泡反馈!
安装包永久有效
链接:https://pan.baidu.com/s/1pwlUv5vdaiKQbY3E4h9Uhg
提取码:AK47
一键部署脚本永久有效
https://download.csdn.net/download/m0_64423407/86739287
更多好货