(k8s-king-king)实战案例——LNMP搭建服务案例
2.1 案例目标
(1)掌握MySQL服务搭建。
(2)掌握PHP服务搭建。
(3)实现搭建Discuz论坛。
(4)配置搭建WordPress博文。
2.2 案例准备
最小化CentOS 7.5虚拟机一台,桌面化CentOS7.5虚拟机一台。
2.3 案例实施
(1)配置yum源
[root@localhost ~]# hostnamectl set-hostname lnmp
[root@localhost ~]# bash
[root@lnmp ~]# curl -O http://mirrors.douxuedu.com/training/lnmp.tar.gz
[root@lnmp ~]# tar -zxvf lnmp.tar.gz -C /opt/
[root@lnmp ~]# mv /etc/yum.repos.d/* /home/
[root@localhost ~]# cat >> /etc/yum.repos.d/local.repo << EOF
[lnmp]
baseurl=file:///opt/lnmp
gpgcheck=0
enabled=1
name=lnmp
EOF
(2)部署MYSQL服务
① 安装MySQL数据库
在Centos7.5虚拟机的环境下通过yum方式进行安装MySQL服务。
[root@lnmp ~]# yum install mariadb-server -y
......
Complete!
② 实例化数据库
实例化数据库为数据库创建登录密码,由于默认安装完MySQL数据库,服务并未启动,因此需要先进行启动数据库:
[root@lnmp ~]# systemctl start mariadb
[root@lnmp ~]# systemctl enable mariadb
[root@lnmp ~]# mysql_secure_installation
Enter current password for root (enter for none): //按Enter键
Set root password? [Y/n] y
New password:000000
Re-enter new password:000000
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
(3)部署Nginx服务
在CentOS 7.5虚拟机的环境下通过yum方式进行安装PHP服务。默认yum源中不存在Nginx服务,需要安装扩展插件。
[root@lnmp ~]# yum install nginx -y
......
Complete!
(4)部署PHP服务
① 安装PHP服务
在CentOS 7.5虚拟机的环境下通过yum方式进行安装PHP服务。
[root@lnmp ~]# yum install php -y
......
Complete!
② 验证是否成功安装PHP服务
在/var/www/html目录下,编辑Index.php文件,添加如下内容。
[root@lnmp ~]# mkdir -p /var/www/html/
[root@lnmp ~]# echo "<?php phpinfo();?>">>/var/www/html/index.php
配置Nginx访问目录为/var/www/html/(添加内容如下图所示,先按i键进行编辑,修改完成后按ESC键输入:wq回车)。
[root@lnmp ~]# vi /etc/nginx/nginx.conf
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.php index.html;
server_name _;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
root /var/www/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Nginx服务默认不支持PHP文件,需要安装php-fpm服务:
[root@lnmp ~]# yum install php-fpm -y
......
Complete!
[root@lnmp ~]# systemctl restart php-fpm
启动Nginx服务:
[root@lnmp ~]# systemctl start nginx
[root@lnmp ~]# systemctl enable nginx
防火墙开启的情况下默认是未开放80端口,外部将无法进行访问,因此需要开放防火墙的80端口。(线上环境未开启防火墙,忽略此步骤!)
[root@lnmp ~]# firewall-cmd --add-port=80/tcp --permanent
[root@lnmp ~]# firewall-cmd --add-port=80/udp --permanent
[root@lnmp ~]# firewall-cmd --add-service=http –permanent
通过浏览器访问LNMP服务器地址进行验证,如图2-1所示:
图2-1 测试LNMP服务器页面
(5)部署Discuz论坛
① 配置LNMP环境
安装PHP连接数据库所需插件:
[root@lnmp ~]# yum install php-mysql php-gd -y
......
Complete!
配置PHP支持时间:
[root@lnmp ~]# echo "cgi.fix_pathinfo=0" >> /etc/php.ini
[root@lnmp ~]# echo 'date.timezone ="Asia/shanghai"' >> /etc/php.ini
配置MySQL支持中文:
[root@lnmp ~]# vi /etc/my.cnf
[mysqld]
character-set-server=utf8
重新启动服务:
[root@lnmp ~]# systemctl restart mariadb php-fpm
② 部署Discuz环境
从网上下载Discuz_X3.2_SC_UTF8.zip压缩包,上传到LNMP服务器。解压压缩包,并将解压后的upload文件下的内容复制到/var/www/html目录下。
[root@lnmp ~]# cd /opt/
[root@lnmp opt]# ls
Discuz_X3.2_SC_UTF8.zip lnmp wordpress-zh_CN.zip
[root@lnmp opt]# yum install unzip -y
......
Complete!
[root@lnmp opt]# unzip Discuz_X3.2_SC_UTF8.zip
[root@lnmp opt]# cp -r upload/* /var/www/html/
cp: overwrite ‘/var/www/html/index.php’? y
切换至第二个节点,通过火狐浏览器访问http://第一个节点地址/install,如图2-2所示:
图2-2 访问Discuz
默认情况下,会存在权限问题造成无法安装的问题,如图2-3所示。
图2-3 权限问题
此时需要对文件进行权限设置:
[root@lnmp opt]# cd /var/www/html/
[root@lnmp html]# vi privilege.txt
./config
./data
./data/cache
./data/avatar
./data/plugindata
./data/download
./data/addonmd5
./data/template
./data/threadcache
./data/attachment
./data/attachment/album
./data/attachment/forum
./data/attachment/group
./data/log
./uc_client/data/cache
./uc_server/data/
./uc_server/data/cache
./uc_server/data/avatar
./uc_server/data/backup
./uc_server/data/logs
./uc_server/data/tmp uc_server/data/view
[root@lnmp html]# vi privilege.sh
for i in `cat ./privilege.txt`
do
chmod 777 $i
done
[root@lnmp html]# chmod 777 privilege.sh
[root@lnmp html]# sh privilege.sh
返回浏览器刷新页面,检查是否存在带有差号现象。如图2-4所示,检查完成后单击“下一步”按钮。
图2-4 检查完成
如果前期没有安装过Discuz环境,此处需要选择全新安装Discuz,否则只需要选择仅安装Discuz即可,如图2-5所示。
图2-5 Discuz安装向导
配置数据库实现数据存储,为Discuz创建数据库。
[root@lnmp html]# cd
[root@lnmp ~]# mysql -uroot -p000000 -e "create database ultrax character set utf8;"
填写的数据库信息根据个人环境进行设置,管理源密码自行设置,如图2-6所示。
图2-6 安装数据库
环境部署完成后,实现后台信息访问,如图2-7所示。
图2-7 安装完成
(6)部署WordPress博客
① 安装部署所需插件
部署WordPress环境,默认的插件不能满足环境需求,对应需要安装相应的插件。
[root@lnmp ~]# yum -y install php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
......
Complete!
② 上传并解压WordPress压缩包
可通过网上进行下载WordPress环境压缩包,并将压缩包上传到LNMP服务器。
[root@lnmp ~]# cd /opt/
[root@lnmp opt]# unzip wordpress-zh_CN.zip
③ 部署WordPress环境
清空/usr/share/nginx/html目录下所有文件、并将解压后的wordpress目录下所有文件拷贝到此目录下。
[root@lnmp opt]# cd
[root@lnmp ~]# rm -rf /usr/share/nginx/html/*
[root@lnmp ~]# cp -r /opt/wordpress/* /usr/share/nginx/html/
[root@lnmp ~]# chmod 777 -R /usr/share/nginx/html/wp-content/
④ 配置Nginx环境
修改Nginx配置文件,添加新端口号和访问目录,实现WordPress环境访问(添加的部分内容如下截图所示)。
[root@lnmp ~]# vi /etc/nginx/nginx.conf
user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.php index.html;
include /etc/nginx/default.d/*.conf;
location / {
root /var/www/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
root /usr/share/nginx/html;
index index.php index.html;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
[root@lnmp ~]# systemctl restart nginx
[root@lnmp ~]# systemctl restart php-fpm
⑤ 开放8080端口(线上环境未开启防火墙,忽略此步骤!)
默认防火墙开启状态下并未开启8080端口,此处需要将端口开放,否则将造成无法访问。
[root@lnmp ~]# firewall-cmd --add-port=8080/tcp –permanent
[root@lnmp ~]# firewall-cmd --add-port=8080/udp –permanent
[root@lnmp ~]# systemctl restart firewalld
⑥ 创建数据库并设置访问权限
[root@lnmp ~]# mysql -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on *.* to root@localhost identified by '000000' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on *.* to root@"%" identified by '000000' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit
Bye
⑦ 切换至第二个节点,通过火狐浏览器访问http://第一个节点地址:8080,如图2-8所示:
图2-8 访问WordPress网站
⑧ 配置数据库连接
设置数据库名为wordpress,用户为已经创建的wordpress用户,密码为设置wordpress访问权限时的密码,信息确认后单击“提交”按钮,如图2-9所示。
图2-9 配置数据库连接
⑨ 编辑wp-config.php配置文件
出现无法自动创建wp-config.php配置文件时可以通过手动创建的方式完成,如图2-10所示。
图2-10 编辑wp-config.php配置文件
[root@lnmp ~]# cd /usr/share/nginx/html/
[root@lnmp html]# ls
index.php wp-admin wp-content wp-load.php wp-signup.php
license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
[root@lnmp html]# cp wp-config-sample.php wp-config.php
[root@lnmp html]# vi wp-config.php
<?php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'root');
/** MySQL数据库密码 */
define('DB_PASSWORD', '000000');
/** MySQL主机 */
define('DB_HOST', 'localhost');
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
/**#@+
* 身份认证密钥与盐。
* 修改为任意独一无二的字串!
* 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/
* WordPress.org密钥生成服务}
* 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
*
* @since 2.6.0
*/
define('AUTH_KEY', '@/&&ILtVtW+J`}}5`sM6MI`agSSr(cN2XLfIRTj!n(n)ywXO7IqR>G*n0!nz:O}~');
define('SECURE_AUTH_KEY', 'YF{FTu2@}iY#+uO;I5eXLx0<p5JvqLaEInhI2;&z=bT7H-g$8|5>y2q^dU[WWZ35');
define('LOGGED_IN_KEY', '{:@kjkJbr%XtJvB(Xx,$nzl1d{E)nKe5Fk#iWs}#!@[]}|C40J8-WPg@GCuWPaCQ');
define('NONCE_KEY', '[/3B(Bu~$=K&*8d{-C<DUM4Q:`D2:xQS`#-W41@@M)mIYBHQB<0Mkxo--@~&!9s.');
define('AUTH_SALT', '}g0>P%(C~9.#^ZW|Hp5LSP/o+Rzcb-u2V!{LVxeSPN_qc+b+ld1<W&<u_#~G;Or@');
define('SECURE_AUTH_SALT', '(c^Gll!}Bg)?HzkNtp9PDX2.1KMax%e&K(rQF%V.O&U~yH.C`~5CgX^czk$)}.R9');
define('LOGGED_IN_SALT', 'G|[%;r!1jUeV_hZec/MU-kyDi-t_k^:NX;9=qH>xPa8oVcKJB=Fc#Vnjy42#^E_h');
define('NONCE_SALT', 'mI@ayq$`IsJYs1~<s}Td:gjVj)2f93|75XS-R?c2IQ-5o<>kX{FNN2NL``M@l2Um');
/**#@-*/
/**
* WordPress数据表前缀。
*
* 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
* 不同的数据表前缀。前缀名只能为数字、字母加下划线。
*/
$table_prefix = 'wp_';
/**
* 开发者专用:WordPress调试模式。
* 将这个值改为true,WordPress将显示所有用于开发的提示。
* 强烈建议插件开发者在开发环境中启用WP_DEBUG。
* 要获取其他能用于调试的信息,请访问Codex。
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', false);
/**
* zh_CN本地化设置:启用ICP备案号显示
* 可在设置→常规中修改。
* 如需禁用,请移除或注释掉本行。
*/
define('WP_ZH_CN_ICP_NUM', true);
/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
/** WordPress目录的绝对路径。 */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** 设置WordPress变量和包含文件。 */
require_once(ABSPATH . 'wp-settings.php');
⑩ 实现WordPress页面实例化
实现安装WordPress操作,添加站点标题,并为后台管理创建管理用户并设置密码,默认密码设置的安全度是有一定规则的,对于弱密码需要勾选“确认使用弱密码”复选框,信息设置完成后单击“安装WordPress”按钮实现安装,如图2-11所示。
图2-11 安装WordPress
⑪ 登录后台
数据库部署完成后,可通过设置的后端登录用户名和密码登录到后台,如图2-12、图2-13所示。
图2-12 WordPress安装成功
图2-13 登录后台
- 点赞
- 收藏
- 关注作者
评论(0)