(1)搭建php-fpm工作方式的LAMP环境,实现wordpress正常访问
step1.安装环境:
[root@CentOS7 ~]#cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@CentOS7 ~]#uname -r
3.10.0-862.el7.x86_64
step2.安装mariadb构建数据库服务
[root@CentOS7 ~]#yum install mariadb-server -y ##安装数据库服务
[root@CentOS7 ~]#vim /etc/my.cnf.d/server.cnf ##编辑服务端数据库主文件
添加对应参数
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON
[root@CentOS7 ~]#systemctl start mariadb.service
[root@CentOS7 ~]#ss -tnl
[root@CentOS7 ~]#systemctl enable mariadb.service ##启动mariadb服务并添加开机启动项
Step3.安装php-fpm
[root@CentOS7 ~]#yum install php-fpm php-mysql php-mbstring -y ##安装php-fpm的对应组件
[root@CentOS7 ~]#ss -tnl
[root@CentOS7 ~]#vim /etc/php-fpm.d/www.conf ##配置对应的主文件
[root@CentOS7 ~]#mkdir /var/lib/php/session -pv
[root@CentOS7 ~]#chown apache.apache /var/lib/php/session ##创建文件夹并让apache成为属主和属组
[root@CentOS7 html]#systemctl start php-fpm.service
[root@CentOS7 html]#systemctl enable php-fpm.service ##启动php-fpm服务并添加开机启动项
Step4.安装Apache服务
[root@CentOS7 ~]#yum install httpd -y
[root@CentOS7 ~]#httpd -M ##查看是否具有fcgi模块
[root@CentOS7 ~]#systemctl start httpd.service
[root@CentOS7 ~]#ss -tnl
[root@CentOS7 ~]#systemctl enable httpd.service ##启动httpd服务并添加开机启动项
[root@CentOS7 ~]#cd /etc/httpd/conf.d/
[root@CentOS7 conf.d]#vim vhosts.conf ##进入httpd主文件目录,创建虚拟主机文件并编辑如下参数
DocumentRoot "/data/www/html"
ServerName "www.ilinux.io"
Options None
AllowOverride None
Require all granted
[root@CentOS7 conf.d]#mkdir /data/www/html -pv ##创建默认网页数据路径目录
[root@CentOS7 conf.d]#cd /data/www/html/
[root@CentOS7 html]#vim index.html ##编辑index的html网页测试httpd服务是否生效
[root@CentOS7 html]#httpd -t
[root@CentOS7 html]#systemctl restart httpd.service
[root@CentOS7 conf.d]#vim vhosts.conf ##再次编辑虚拟主机文件,添加如下参数
DirectoryIndex index.php
DocumentRoot "/data/www/html"
ServerName "www.ilinux.io"
ProxyRequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/html/$1
ProxyPassMatch ^/(ping|pmstatus)$ fcgi://127.0.0.1:9000/$1
Options FollowSymLinks
AllowOverride None
Require all granted
[root@CentOS7 html]#vim index.php ##编辑index的php文件,查看php页面是否能正常解析
[root@CentOS7 conf.d]#httpd -t
[root@CentOS7 conf.d]#systemctl restart httpd.service
Step5.下载wordpress程序包
[root@CentOS7 html]#tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@CentOS7 html]#ln -sv wordpress blog ##软链接到blog目录
[root@CentOS7 blog]#cp wp-config-sample.php wp-config.php ##复制主配置文件
##登录数据库创建对应的wordpress数据
MariaDB [(none)]> CREATE DATABASE wordpress; ##创建数据库wordpress
MariaDB [(none)]> GRANT ALL ON wordpress.* TO "wpuser"@"192.168.%.%" IDENTIFIED BY "password"; ## 授权wpuser对wordpress数据库具有所有权限并分配密码
MariaDB [(none)]> FLUSH PRIVILEGES; ##刷新数据库
[root@CentOS7 blog]#vim wp-config.php ##编辑wordpress主配置文件并填入如下对应的参数
(2).什么是DML?常用SQL举例,每个命令至少1个例子,最多不超过3个例子.
DML:数据操纵语言,主要用于管理表中的数据,实现数据的增、删、改、查.
对应的操作为INSERT、DELETE、UPDATE、SELECT
命令相关:
(一)、INSERT INTO
- 具体格式:
INSERT [INTO] tbl_name [(col1,...)] {VALUES|VALUE} (val1,...),(...),...
- 常用示例:
CREATE TABLE test1(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30),age INT)
INSERT INTO test1(id,name,age) VALUES (1,"tom","18")
(二)、SELECT
- 具体格式:
(1) SELECT col1,col2,...FROM tbl_name
(2) SELECTT col1,... FROM tbl_name WHERE clause
(3) SELECT col1,... FROM tbl_name [WHERE clause] ORDER BY col_name, col_name2,...[ASC|DESC]
- 常用示例:
SELECT * FROM test1
SELECT Host,User,Password From mysql.user
SELECT age FROM test1 WHERE age>16
SELECT * FROM test1 WHERE age>16 and id>=5
SELECT * FROM test1 WHERE age!=20
SELECT avg(age) FROM test1 WHERE age>=18 ORDER BY age
SELECT max(age) FROM test1 ORDER BY age
SELECT sum(age) FROM test1 ORDER BY age
(三)、DELETE
- 具体格式:
(1) DELETE FROM tbl_name WHERE where_condition
(2) DELETE FROM tbl_name [ORDER BY...] [LIMIT row_count]
- 常用示例:
DELETE * FROM test1
DELETE FROM test1 WHERE age>30
DELETE FROM test1 WHERE age>16 limit 2
(四)、UPDATE
- 具体格式:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1=value1 [,col_name2=value2]...[WHERE where condition] [ORDER BY...] [LIMIT row_count]
- 常用示例:
UPDATE test1 SET age=40
UPDATE test1 SET age=35 WHERE id>=5
UPDATE test1 SET age=22 WHERE id>=3 LIMIT 3
(3)、简述ftp的主动和被动模式,并实现基于pam认证的vsftpd.
- 主动模式: FTP服务器主动向客户端发起连接请求
- 被动模式: FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
i.路径映射:
- 用户家目录: 每个用户的URL的/映射到当前用户的家目录;
vsftpd以ftp用户的身份运行进程,默认用户即为ftp用户,匿名用户的默认路径即ftp用户的家目录: /var/ftp
ftp,anonymous
注意: 一个用户通过文件共享服务访问文件系统上的文件的生效权限为此二者的交集
ii.程序环境:
主程序: /usr/sbin/vsftpd
主配置文件: /etc/vsftpd/vsftpd.conf
数据库目录: /var/ftp
Systemd Unit File: /usr/lib/systemd/system/vsftpd.service
iii.配置vsftpd:
用户类别:
匿名用户: anonymous--> ftp, /var/ftp
系统用户: 至少禁止系统用户访问ftp服务, /etc/vsftpd/ftpusers, PAM(/etc/pam.d/vsftpd);
虚拟用户: 非系统用户,用户账号非可登录操作系统的用户账号(非/etc/passwd);
配置文件: /etc/vsftpd/vsftpd.conf
directive value
注意: directive之前不能有多余字符
-
匿名用户:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=077
-
系统用户:
local_enable=YES
write_enable=YES
local_umask=022
辅助配置文件:
/etc/vsftpd/ftpusers ###列在此文件中的用户均禁止使用ftp服务
chroot_local_user=YES ###禁锢所有本地用户于其家目录;需要事先去除用户对家目录的写权限;
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list ###禁锢列表中文件存在的用户于其家目录中;需要事先去除用户对家目录的写权限;
传输日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
守护进程的类型:
standalone: 独立守护进程;由服务进程自行监听套接字,并接收用户访问请求;
translent: 瞬时守护进程;由受托管方代为监听套接字,服务进程没有访问请求时不启动;当托管方收到访问请求时,才启动服务进程;
CentOS 6: xinetd独立守护进程,/etc/xinetd.d
CentOS 7: 由systemd代为监听
控制可登录vsftpd服务的用户列表:
userlist_enable=YES ###启用/etc/vsftpd/user_list文件来控制可登录用户;
userlist_deny=
YES: 意味着此为黑名单;(默认)
NO: 意味着此为白名单;
上传下载速率限制:
anon_max_rate=0
local_max_rate=0
并发连接数限制:
max_clients=2000
max_per_ip=50
iiii.配置pam认证的vsftpd
配置环境:
实现目的:(客户端远程连接ftp服务器,然后通过pam进过mariadb认证返回验证信息进行连接)
client: 192.168.30.106
ftp-server: 192.168.30.107
mariadb-server: 192.168.30.105
-
step1.登录mariadb添加针对vsftpd的数据库相关信息,并增加对应的用户
[root@CentOS7_Server ~]#mysql -u root -p901010ztt -hlocalhost ###root用户登录mariadb
数据库操作
MariaDB [(none)]> SHOW DATABASES
MariaDB [(none)]> CREATE DATABASE vsftpd ###新建数据库vsftpd
MariaDB [(none)]> use vsftpd
MariaDB [vsftpd]> CREATE TABLE users (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(60) NOT NULL, password CHAR(60) NOT NULL); ###新建users的表
MariaDB [vsftpd]> GRANT ALL ON vsftpd.* TO vsftpd@'192.168.%.%' IDENTIFIED BY 'vsftpd' ###创建登录mariadb的vsftpd账号
###尝试使用vsftpd在mariadb服务器登录,检查账户有没有问题
[root@CentOS7_Server ~]#mysql -u vsftpd -pvsftpd -h192.168.30.105
-
step2.在ftp服务器上配置编译环境并安装vsftpd及对应的pam认证程序
[root@ftp-server ~]#yum install vsftpd ftp -y
[root@ftp-server ~]#systemctl start vsftpd.service
[root@ftp-server ~]#ss -tnl
[root@ftp-server ~]#systemctl enable vsftpd.service
[root@ftp-server ~]#yum groupinstall "Development Tools" "Server PlatformDevelopment" -y
[root@ftp-server ~]#yum install pam-devel mariadb-devel -y
编译安装pam
[root@ftp-server ~]#tar xf pam_mysql-0.7RC1.tar.gz
[root@ftp-server ~]#cd pam_mysql-0.7RC1/
[root@ftp-server pam_mysql-0.7RC1]#./configure --help
[root@ftp-server pam_mysql-0.7RC1]#./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/usr/lib64/security
[root@ftp-server pam_mysql-0.7RC1]#make && make install
[root@ftp-server pam_mysql-0.7RC1]#ls /usr/lib64/security/ |grep mysql
pam_mysql.la
pam_mysql.so
[root@ftp-server pam_mysql-0.7RC1]#vim /etc/pam.d/vsftpd.vusers
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.30.105 db=vsftpd table=users us
ercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.30.105 db=vsftpd table=users
usercolumn=name passwdcolumn=password crypt=2
[root@ftp-server pam_mysql-0.7RC1]#systemctl restart vsftpd.service
[root@ftp-server pam_mysql-0.7RC1]#ss -tnl
-
step3.创建家目录文件并修改对应权限
[root@ftp-server ~]#mkdir /ftproot
[root@ftp-server ~]#useradd -d /ftproot/vuser vuser
[root@ftp-server ~]#cat /etc/passwd|tail -1
vuser:x:1001:1001::/ftproot/vuser:/bin/bash
[root@ftp-server ~]#chmod a-w /ftproot/vuser
[root@ftp-server ~]#ls -ld /ftproot/vuser
dr-x------ 3 vuser vuser 78 Nov 9 10:52 /ftproot/vuser
[root@ftp-server ~]#mkdir /ftproot/vuser/pub
-
step4.编辑vsftpd主文件参数
[root@ftp-server ~]#cd /etc/vsftpd/
[root@ftp-server vsftpd]#cp vsftpd.conf vsftpd.conf.bak
[root@ftp-server vsftpd]#vim vsftpd.conf
pam_service_name=vsftpd.vusers
guest_enable=YES
guest_username=vuser
[root@ftp-server vsftpd]#systemctl restart vsftpd.service
-
step5.客户端client登录分别测试是否成功
-
step6.分别设置远程登录权限,要求''tom''可执行,"jerry"可执行且可创建文件
[root@ftp-server vsftpd]#vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.vusers
guest_enable=YES
guest_username=vuser
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_config/ ###添加针对不同用户的配置路径
###配置"tom"的权限
[root@ftp-server vsftpd]#mkdir /etc/vsftpd/vusers_config/
[root@ftp-server vsftpd]#vim /etc/vsftpd/vusers_config/tom
anon_upload_enable=YES
###配置"jerry"的权限
[root@ftp-server vsftpd]#cd /etc/vsftpd/vusers_config/
[root@ftp-server vusers_config]#cp tom jerry
[root@ftp-server vusers_config]#vim jerry
anon_upload_enable=YES
anon_mkdir_write_enable=YES
###创建共享目录并修改为vuser的权限
[root@ftp-server vusers_config]#mkdir /ftproot/vuser/upload
[root@ftp-server vusers_config]#chown vuser.vuser /ftproot/vuser/upload
[root@ftp-server vusers_config]#ls -ld /ftproot/vuser/upload
drwxr-xr-x 2 vuser vuser 6 Nov 9 11:11 /ftproot/vuser/upload
[root@ftp-server vusers_config]#systemctl restart vsftpd.service
-
step7.客户端client登录分别测试"tom"和"jerry"的权限
(4)、简述NFS服务原理及配置
什么是NFS?
NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的对应目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享资源
NFS的版本
- NFSv1
- NFSv2,NFSv3,NFSv4,NFS4.1
- nfsd: 2049/tcp
NFS系统原理介绍
- 第一步: 在NFS服务器端设置好一个共享目录/test后,其他有权限访问NFS服务器端的客户端都可以将这个共享目录/test挂载到客户端本地的某个挂载点.
- 第二步: 在NFS其中一个客户端A创建目录/mnt,把服务器端的共享目录挂载到/mnt下,如此A客户端即可以通过TCP/IP网络协议的方式来访问NFS服务端共享/test目录里的资源.
- 第三步: NFS另一个客户端B创建/tmp目录,然后同样方式进行对服务器端共享目录/test的挂载,这样B客户端也可以同样访问共享/test里的资源
- 第四步: 反之,只要在NFS服务端对共享目录做一定的权限管理,即可以让挂载的不同客户端拥有不一样的操作权限.
NFS的工作流程原理
NFS配置文件的参数
参数 | 作用 |
---|---|
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(nfsnobody) |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户来访问,均映射为NFS服务器的匿名用户(nfsnobody) |
sync | 同时将数据写入到内存与硬盘中去(性能损失,数据不丢失) |
async | 异步存储,优先将数据保存到内存中去,然后再写入磁盘(性能有保证,断电会导致数据丢失) |
NFS的搭建和配置
-
step1.搭建环境
主机名称 | 操作系统 | IP地址 |
---|---|---|
NFS服务器 | CentOS 7 | 192.168.30.108 |
NFS客户端 | CentOS 7 | 192.168.30.106 |
-
step2.搭建NFS服务器
[root@ftp-server ~]#yum install rpcbind nfs-utils -y
[root@ftp-server ~]#mkdir /data/share -pv ###创建共享目录
[root@ftp-server ~]#vim /etc/exports ###编辑exports文件
/data/share 192.168.30.106(rw) 192.168.30.0/24(ro)
[root@ftp-server ~]#systemctl start rpcbind.service
[root@ftp-server ~]#systemctl start nfs.service
[root@ftp-server ~]#ss -tnl
[root@ftp-server ~]#systemctl enable nfs.service
注意: 如果exports文件做了修改,可以采用exportfs -rav平滑情动,请勿重启nfs服务!
-
step3.搭建NFS客户端
[root@CentOS7 ~]#yum install rpcbind -y
[root@CentOS7 ~]#showmount -e 192.168.30.108
Export list for 192.168.30.108:
/data/share 192.168.30.0/24
[root@CentOS7 ~]#mkdir /share
[root@CentOS7 ~]#mount 192.168.30.108:/data/share /share ###挂载测试
[root@CentOS7 ~]#mount
192.168.30.108:/data/share on /share type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.30.104,local_lock=none,addr=192.168.30.108)
-
step4.加入开机启动项
[root@ftp-server ~]#vim /etc/fstab\
(5)、简述samba服务,并实现samba配置
Step1.什么是samba服务?
samba是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB协议是一种在局域网上共享文件和打印机的通信协议,它为局域网内不同的计算机之间提供文件及打印机等服务。Samba服务监听着137/udp,138/udp以及139/tcp,445/tcp端口,通过结合NetBIOS广播协议及SMB协议,使得samba服务能够实现局域网内的windowns、Linux主机的文件共享。
Step2. samba的程序环境:
- 服务端程序包: samba
- 主配置文件: /etc/samba/smb.conf, 由samba-common包提供
- 主程序:
- nmbd: NetBIOS name server
- smbd: SMB/CIFS services
- Unit Files:
- smb.service
- nmb.service
- 监听的端口:
- 137/udp, 138/udp
- 139/tcp, 445/tcp
Step3.samba服务器的搭建
主机名称 | 操作系统 | IP地址 |
---|---|---|
samba服务器 | CentOS 7 | 192.168.30.104 |
samba客户端 | CentOS 7 | 192.168.30.103 |
-
安装samba服务端
[root@Server ~]#yum install samba samba-common -y ###安装服务端
[root@Server ~]#cd /etc/samba ###进入主配置文件
[root@Server samba]#cp smb.conf{,.bak} ###备份配置文件
[root@Server samba]#vim smb.conf ###首次编辑主配置文件内容(暂时按默认)
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[root@Server samba]#systemctl start nmb.service ###需要和win交互,所以也nmb要开启
[root@Server samba]#systemctl start smb.service
[root@Server samba]#ss -tunl
[root@Server samba]#systemctl enable nmb.service
[root@Server samba]#systemctl enable smb.service
[root@Server samba]#useradd smbuser1 ###创建linux系统用户smbuser1和smbuser2
[root@Server samba]#useradd smbuser2
[root@Server samba]#smbpasswd -a smbuser1 ###创建samba服务对应的账号和密码
[root@Server samba]#smbpasswd -a smbuser2
-
测试samba服务是否生效
登录client主机查看
[root@CentOS7_Client1 ~]#smbclient -L 192.168.30.104 -U smbuser1
Enter SAMBA\smbuser1's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (Samba 4.7.1)
smbuser1 Disk Home Directories ###可以看到有共享目录的出现,且是家目录,和之前主配置文件里一致
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA SERVER
登录windows主机查看
修改主配置文件,尝试让smbuser1和smbuser2都可以互相看到共享信息
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = yes
read only = No
inherit acls = Yes
Step3.1 综合测试案例:(创建一个共享data,路径为/var/ftp/data,要求仅centos和gentoo用户能上传,此路径对其他用户不可见)
- 服务端进行设置
[root@Server ~]#mkdir /var/ftp/data -pv ###创建共享目录
[root@Server ~]#useradd centos ###创建linux系统用户
[root@Server ~]#useradd gentoo
[root@Server ~]#smbpasswd -a centos ###创建samba用户并设置密码
[root@Server ~]#smbpasswd -a gentoo
[root@Server ~]#vim /etc/samba/smb.conf ###编辑主文件并设置对应的共享目录参数
[root@Server samba]#testparm
[data]
comment = A new share Directory ###注释信息
guest ok = Yes ###启用来宾访问
path = /var/ftp/data ###共享文件路径
read only = No ###可写
write list = centos gentoo ###白名单
[root@Server samba]#systemctl restart nmb.service
[root@Server samba]#systemctl restart smb.service
[root@Server samba]#ls -ld /var/ftp/data ###查看Linux系统共享文件的权限
drwxr-xr-x 2 root root 6 Nov 10 10:53 /var/ftp/data
[root@Server samba]#setfacl -m u:centos:rwx //var/ftp/data ###设置对centos和gentoo有写操作
[root@Server samba]#setfacl -m u:gentoo:rwx //var/ftp/data
[root@Server samba]#getfacl /var/ftp/data
# file: var/ftp/data
# owner: root
# group: root
user::rwx
user:centos:rwx
user:gentoo:rwx
group::r-x
mask::rwx
other::r-x
- 客户端client测试:
[root@CentOS7_Client1 ~]#smbclient -L 192.168.30.104 -U centos ###centos用户登录服务器查看共享目录
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
print$ Disk Printer Drivers
data Disk A new share Directory
IPC$ IPC IPC Service (Samba 4.7.1)
centos Disk Home Directories
[root@CentOS7_Client1 ~]#smbclient -L 192.168.30.104 -U gentoo ###gentoo用户登录服务器查看共享目录
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
print$ Disk Printer Drivers
data Disk A new share Directory
IPC$ IPC IPC Service (Samba 4.7.1)
gentoo Disk Home Directories
###分别测试centos和gentoo的写操作权限
[root@CentOS7_Client1 ~]#smbclient //192.168.30.104/data -U centos
smb: \> lcd /etc
smb: \> put fstab
putting file fstab as \fstab (151.4 kb/s) (average 151.4 kb/s)
smb: \> exit
[root@CentOS7_Client1 ~]#smbclient //192.168.30.104/data -U gentoo
smb: \> lcd /etc
smb: \> put group
putting file group as \group (135.5 kb/s) (average 135.5 kb/s)
smb: \> exit
[root@CentOS7_Client1 ~]#umount /mnt
umount: /mnt: not mounted
[root@CentOS7_Client1 ~]#mount -t cifs //192.168.30.104/data /mnt -o username=centos,password=123456 ###尝试挂载到临时目录/mnt
//192.168.30.104/data on /mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=centos,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.30.104,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)
[root@CentOS7_Client1 ~]#cd /mnt
[root@CentOS7_Client1 mnt]#ls
fstab group