Linux云平台搭建(centos7基于LNMP环境搭建discuz企业论坛)

一、实验介绍

需求

搭建一个对外提供服务的动态论坛网站,数据库要设置主从同步,为了避免黑客入侵服务器,还需设置密钥认证,通过跳板服务器来对web服务器进行访问

技术

1.Linux操作系统的基础命令(cd、cp、ls、mv、ps、grep、vi、yum等)

2.MySQL数据库增、删、改、查等基础命令操作

3.下载使用sshd、nginx、php、mysql等服务

4.搭建mysql主从同步

5.使用sshd服务进行远程连接跳板机操作

安全

为了提高Linux服务器的安全性,本次项目我们采取了以下措施:

1.配置SSH:通过使用密钥认证实现远程跳板连接,并配置更加安全的SSH选项,如禁止root用户登录、更改端口号、限制IP访问等。

2.强化密码策略:设置了极其复杂且不易猜测的密码。

3.设置数据库主从同步:备份服务器数据,以防止数据丢失或被攻击者加密勒索。

二、拓扑图

三、基础配置

1、配置ip,网关

修改网卡配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络服务

systemctl restart network

测试ping外网,测试成功

2、准备三台centos7的虚拟机,首先按照拓扑图修改主机名,方便理清思路。

修改主机名命令:hostnamectl set-hostname跟修改的主机名bash运行

3、三台主机关闭防火墙/selinux

关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

关闭selinux

setenforce 0

vi /etc/selinux/config

验证selinux是否关闭:getenforce

vi /etc/selinux/config:SELINUX-disabled将enforcing修改为disabled

四、先用web_server01这台主机部署LNMP环境,提供discuz企业论坛(Nginx、PHP、MySQL(主库))

1、环境准备完我们在web_server这台主机上来安装Nginx,设置Nginx源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

 

2、安装nginx服务

yum install nginx -y

    

(1)设置nginx开机启动并开启nginx服务

 systemctl enable  nginx.service

systemctl start  nginx.service

    

(2)查看Nginx的状态,如果显示“running”那就说明启动成功了

systemctl status  nginx.service

(3)测试是否可以访问Nginx 或使用浏览器访问IP地址

(4)更改Nginx的配置文件(更改默认html路径及增加一些内容)

替换Nginx配置文件(直接替换原文件即可)

vi /etc/nginx/nginx.conf

user nginx nginx;

worker_processes 4;

worker_rlimit_nofile 65535;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

        use epoll;

        worker_connections 10240;

}

http {

        include /etc/nginx/mime.types;

        default_type application/octet-stream;

        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;

        keepalive_timeout 65;

        include /etc/nginx/conf.d/*.conf;

}

(5)替换default.conf(替换即可)

 server {

     listen       80;

     server_name  www.lnmp.com;

     charset utf-8;

    #access_log  /var/log/nginx/host.access.log  main;

location / {

    root   /usr/share/nginx/html;

    index  index.html index.htm;

}

location /status

{

    stub_status on;

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

    root   /usr/share/nginx/html;

}

location ~ .*/.(gif|jpg|jpeg|png|bmp|swf|js|css)$

{

    expires 30d;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass   http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#    root           html;

#    fastcgi_pass   127.0.0.1:9000;

#    fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

#    include        fastcgi_params;

#}

  # deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

#    deny  all;

#}

}

(6)改变了服务配置文件,所以需要重新启动服务

systemctl restart nginx.service

systemctl status nginx.service

3、安装配置MySQL数据库服务器并更改默认密码

(1)下载安装MySQL

wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

(2)安装前环境检查

检查Linux是否安装了mariadb数据库,mariadb数据库是mysql的分支,执行命令:

yum list installed | grep mariadb 或  rpm -qa | grep mariadb

若Linux中安装了mariadb数据库,先卸载掉,mariadb数据库与安装mysql会发生冲突,执行命令:

yum -y remove mariadb-libs.x86_64

(3)解压下载下来的MySQL软件压缩包,执行命令

tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

其中 -C /usr/local 是指定解压到哪个目录下去

(4)将解压后的mysql-5.7.18-linux-glibc2.5-x86_64改名为mysql5.7.18

cd /usr/local/

mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql5.7.18

(5)在mysql5.7.18文件夹目录下创建一个 /data的文件夹,切换到mysql5.7.18目录,执行命令:

mkdir /usr/local/mysql5.7.18/data

(6)添加mysql用户及用户组,执行命令:

useradd mysql

(7)切换到mysql5.7.18/bin目录下执行:

cd /usr/local/mysql5.7.18/bin/

./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql5.7.18/data --basedir=/usr/local/mysql5.7.18

其中 --initialize-insecure 表示不生成临时密码,默认密码为空

(8)在mysql5.7.18/bin目录下执行命令

./mysql_ssl_rsa_setup --datadir=/usr/local/mysql5.7.18/data

(9)更改mysql5.7.18整个文件夹目录权限所属,执行命令:

chown -R mysql:mysql /usr/local/mysql5.7.18/

(10)配置

在mysql5.7.18/data目录下创建my.cnf文件

配置my.cnf文件

[client]

port=3306

socket=/usr/local/mysql5.7.18/data/mysql.sock

default-character-set=utf8

[mysqld]

port=3306

socket=/usr/local/mysql5.7.18/data/mysql.sock

datadir=/usr/local/mysql5.7.18/data

log-error=/usr/local/mysql5.7.18/data/error.log

pid-file=/usr/local/mysql5.7.18/data/mysql.pid

character-set-server=utf8

lower_case_table_names=1

autocommit=1

(11)启动MySQL服务,在mysql5.7.18/bin目录下执行命令:

/usr/local/mysql5.7.18/bin/mysqld_safe --defaults-file=/usr/local/mysql5.7.18/data/my.cnf &

(12)登录进入MySQL,在mysql5.7.18/bin目录下执行命令:

/usr/local/mysql5.7.18/bin/mysql -uroot -p -S /usr/local/mysql5.7.18/data/mysql.sock

密码默认为空,直接回车即可

其中 -p 是指定密码,没有密码,则可以不写 -p,-S是指定sock文件

(13)修改MySQL的密码,执行:

mysql> alter user 'root'@'localhost' identified by '123456';

其中123456是我们设置的密码

/usr/local/mysql5.7.18/bin/mysql -uroot -p123456 -P3306 -h127.0.0.1

4、安装配置PHP环境

(1)安装php7的YUM源

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

(2)安装PHP7.2

yum install  php72w php72w-cli php72w-common php72w-gd php72w-ldap php72mbstring php72w-mcrypt php72w-mysql php72w-pdow -y

(3)安装php-fpm并启动

yum install php72w-fpm php72w-opcache -y

systemctl enable php-fpm.service

systemctl start php-fpm.service

systemctl status php-fpm.service

(4)修改php-fpm配置文件

vim /etc/php-fpm.d/www.conf

[www]

user = nginx

group = nginx

(5)调整nginx配置文件

修改这一区块的内容

vi  /etc/nginx/conf.d/default.conf

添加内容到location ~ .php$ 这个区块内 修改目录位置并取消注释

(6)重新启动nginx和php-fpm服务

(7)创建MySQL数据库管理员

mysql> create user 'dbadmin'@'%' identified with mysql_native_password by 'Com.123456';

mysql> grant all on *.* to 'dbadmin'@'%';

mysql> grant GRANT OPTION  on *.* to 'dbadmin'@'%';

mysql> flush privileges;

(8)LNMP环境测试

(9)在客户端访问:192.168.88.142/test.php (可以看到php的测试界面 可以看到你安装了哪些具体的组件)

注:192.168.88.142就是nginx web服务器的ip地址

(10)测试是否可以连接MySQL数据库文件

这里的Com.123456是dbadmin用户的密码,如果全程复制我的代码那么是Com.123456 自行修改

Vi mysql_test.php

5、下载Discuz论坛文件

Discuz现在在gitee.com进行维护,地址为:

https://gitee.com/Discuz/DiscuzX/attach_files/1344965/download

#可进入网站自行下载https://gitee.com/Discuz 或上传Discuz压缩包到虚拟机

#也可以使用我提供的Discuz软件包

   

cd DiscuzX-master/

      

(1)建立Discuz论坛所用数据库

打开mysql

/usr/local/mysql5.7.18/bin/mysql -udbadmin -p -S /usr/local/mysql5.7.18/data/mysql.sock

(2)安装Discuz论坛

解决所有文件权限,需要可写权限

cd /usr/share/nginx/html/upload/

chmod -R 777 ./config/ ./data/ ./uc_client/ ./uc_server/

chown nginx:nginx /usr/share/nginx/html/upload/

(3)在客户端使用浏览器打开

网站地址:http://192.168.88.142/upload/install/, 会显示以下安装界面:

五、用主机db_server02部署MySQL数据库作为192.168.88.142服务器的从库

1、确保主mysql主机和从mysql主机日期和时间要一致

在主从节点上进行时间同步

yum -y install ntpdate

ntpdate  ntp1.aliyun.com

在web_server01主机上执行

在db_server02主机上执行

2、安装MySQL

3、检查系统是否安装了mariadb数据库

检查命令:yum  list installed | grep mariadb

卸载mariadb

若Linux中安装了mariadb数据库,先卸载掉,mariadb数据库可能与安装MySQL发生冲突,执行命令:yum  -y remove  mariadb-libs.x86_64

解压下载的MySQL软件压缩包,

执行命令:tar -zxvf  mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  -C /usr/local/

4、修改解压后的文件名

将解压后的mysql-5.7.18-linux-glibc2.5-x86_64改名为mysql5.7.18 ,查看原文件夹名称,在/usr/local目录中执行ll

修改文件夹名称,执行:

mv  mysql-5.7.18-linux-glibc2.5-x86_64  mysql5.7.18

5、创建数据文件夹data

data文件夹是MySQL用来存放数据库文件的,数据库的表数据都放在data目录。

默认没有data目录,可以手工创建data目录,在mysql5.7.18文件夹目录下创建一个data文件夹,切换到mysql5.7.18目录,执行创建文件夹命令

mkdir data

6、创建用户执行mysqld命令

创建MySQL用户,用来执行MySQL的命令mysqld,此命令用来初始化MySQL基础信息。

参考地址:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

执行命令:

useradd  mysql

切换到mysql5.7.18/bin目录下执行:

./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql5.7.18/data --basedir=/usr/local/mysql5.7.18

其中 --initialize-insecure 表示不生成临时密码,为空

7、在mysql5.7.18/bin目录下执行命令:

./mysql_ssl_rsa_setup --datadir=/usr/local/mysql5.7.18/data

8、更改mysql5.7.18整个文件夹目录权限所属,执行命令:

chown -R mysql:mysql /usr/local/mysql5.7.18/

配置

在mysql5.7.18/data目录下创建my.cnf文件

配置my.cnf文件

[client]

port=3306

socket=/usr/local/mysql5.7.18/data/mysql.sock

default-character-set=utf8

[mysqld]

port=3306

socket=/usr/local/mysql5.7.18/data/mysql.sock

datadir=/usr/local/mysql5.7.18/data

log-error=/usr/local/mysql5.7.18/data/error.log

pid-file=/usr/local/mysql5.7.18/data/mysql.pid

character-set-server=utf8

lower_case_table_names=1

autocommit=1

9、启动MySQL服务,在mysql5.7.18/bin目录下执行命令:

./mysqld_safe --defaults-file=/usr/local/mysql5.7.18/data/my.cnf &

其中 & 符号表示后台启动

启动后的事项,修改密码

登录进入MySQL,在mysql5.7.18/bin目录下执行命令:

./mysql -uroot -p -S /usr/local/mysql5.7.18/data/mysql.sock

六、配置web_server01与 db_server02同步

1、主服务器配置

在主数据库服务器上创建要同步的数据库库

/usr/local/mysql5.7.18/bin/mysql -uroot -p -S /usr/local/mysql5.7.18/data/mysql.sock

2、创建主从复制的授权用户:

mysql> grant replication slave on *.* to slave@192.168.88.143  identified by "123456";

3、配置my.cnf文件

4、重启mysqld服务

停止mysql:

/usr/local/mysql5.7.18/bin/mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

Enter password:输入数据库管理员root的密码

启动mysql:

/usr/local/mysql5.7.18/bin/mysqld_safe --defaults-file=/usr/local/mysql5.7.18/data/my.cnf &

验证mysqld服务是否启动

netstat -anplt | grep mysqld

查看master状态信息:

5、导出数据库

复制前要保证同步的数据库一致

6、将导出的数据库传给从服务器

scp discuz.sql root@192.168.88.143:~

7、配置从数据库服务器

测试从服务器连接到主服务器是否成功

/usr/local/mysql5.7.18/bin/mysql -h 192.168.88.142 -uslave -p

8、导入数据库,和主数据库服务器保持一致

/usr/local/mysql5.7.18/bin/mysql -uroot -p -S /usr/local/mysql5.7.18/data/mysql.sock

9、修改从服务器配置文件:

10、重启mysql服务

停止mysql:

/usr/local/mysql5.7.18/bin/mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

启动mysql:

/usr/local/mysql5.7.18/bin/mysqld_safe --defaults-file=/usr/local/mysql5.7.18/data/my.cnf &

11、配置从服务器指向主库信息

change master to master_host='192.168.88.142',master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000002',master_log_pos=154;

12、验证:查看slave的状态

13、在主服务器上查看binlog dump线程

七、部署sshd服务,担任跳板机连接web_server01\db_server02

(1)新增用户设置密码

在主机jumpserver上新增普通用户admin1并为其设置复杂密码(需要两次输入相同密码),密码建议为:1234@abc

(2)为新增的普通用户admin提权,即可以使用sudo命令切换成root管理员账号

先使用 visudo 命令打开配置文件,并在该配置文件的最后增加一行配置

(3) 创建密钥对

(4) 确认生成的密钥对

新生成的密钥文件中,id_rsa是私钥文件,权限默认为600,对于私钥文件必须妥善保管,不能泄露给他人,id_rsa.pub是公钥文件,用来提供给ssh服务器。

(5)将公钥文件上传至服务器

(6)将私钥拷贝到Windows主机上和web_server主机上

先用wimscp工具把跳板机里面的私钥分别复制到windows主机上和web_server主机上

然后使用moba远程工具连接跳板机(192.168.88.139)用我们创建的admin1用户使用私钥登录,因为这样就不需要输入密码,然后再用跳板机使用sshd服务连接web_server实现远程控制主机

(7) 修改ssh默认端口防止被监听

至此部署完毕!

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值