网站服务防盗链优化设置
什么是盗链概念:盗取链接 == 消耗网站流量资源
1.用户访问 B 盗链网站(图片A) 消耗图片资源 A网站流量
占用A网站带宽
云主机:网络通讯计费模式
固定带宽计费模式:
按流量进行计费:
如何防盗链过程:
1.referer防盗链
location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)${
valid_referers none blocked *.etiantian.org etiantian.org;
if($invalid_referer) {
return 301 http://www.nana.com;
}
}
网站服务区域匹配配置信息
—location
作用说明:可以根据不同uri信息做匹配,匹配信息可以有不同处理方式
配置方法:location [ = | ~ | ~* | ^~ ] uri{操作指令信息}
举例说明:
= 精确匹配
^~ 优先匹配
~ 区分大小写进行匹配
~* 不区分对象写进行匹配
作用说明:
1.可以简化前端开发工作难度
server {
listen 80;
server_name www.nana.com;
#access_log /var/log/nginx/host.access.log main;
location / {
root /html/www;
index index.html index.htm;
}
location ~* \.jpg$ {
root /html/www/images;
}
}
2.可以临时调整网站页面信息
location ~* \.jpg$ {
root /html/www/images; ---正常加载图片资源目录信息
}
location ~* \.jpg$ {
root /html/www/活动; ---加载节假日活动页面信息
}
补充: root vs alias 指定资源路径信息
root:
location /oldboy/ {
root /html/www;
}
访问过程:www.oldboy.com/oldboy/oldboy.jpg ==> /html/www/oldboy/oldboy.jpg
alias:
location /oldboy/ {
alias /html/www;
}
访问过程:www.oldboy.com/oldboy/oldboy.jpg ==> /html/www/oldboy.jpg
总结:
- root 用户访问uri信息 必须和root指定目录信息结合 才能找到资源信息
举例:用户uri=/oldboy/oldboy.jpg root /html/www
实际访问:/html/www/oldboy/oldboy.jpg 寻找资源
- alias 用户访问uri信息 直接访问alias指定目录资源信息即可
举例:用户uri=/oldboy/oldboy.jpg alias /html/www
实际访问:/html/www/oldboy.jpg 寻找资源
网站服务架构组成原理过程
作用说明:在需要处理动态请求时,需要部署网站架构
前端知识:
html:页面静态资源代码 浏览器
css:可以设计网站样式 可以定义页面显示效果
js:可以实现特殊功能
架构组成:LNMP(php) LAMP LNMT LNMP(python)
1)前端代理或web服务 接受用户访问请求 nginx/apache
2)前端动态服务程序 处理动态请求信息 php/tomcat/uwsgi
3)后端数据存储服务 保存用户数据信息 mysql/mariadb
Ps:宝塔 直接部署环境
网站服务架构工作原理过程
情况一:
用户访问资源(静态资源) —> Nginx – php – mysql
Ps:静态资源到达Nginx服务后会直接处理相应
情况二:
用户访问资源(动态资源) —> Nginx – php – mysql
识别资源信息是动态资源:将动态资源向后发送(需要让nginx和后端服务进行对接)
nginx -fastcgi- php
nginx -proxypass- tomcat
nginx -uwsgi- uwsgi
情况三:
用户访问资源(动态资源)—> Nginx --> php --> mysql
读取或写入数据(调用数据库)
开发人员编写代码,进行调取数据或写入数据库信息
数据库服务会做处理,将处理后结果响应给php
网站服务架构安装部署过程
Nginx服务部署
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YCY2hGUG-1650331287050)(E:\Typora软件\linux运维笔记\运维笔记图片库\063 LNMP架构部署(Linux+Nginx+MySQL+PHP)2.PNG)]
PHP服务部署
第一步 使用扩展源来安装
#解决yum安装软件冲突问题
[root@web01 ~]# yum remove php-mysql php php-fpm php-common
#准备yum安装软件扩展源信息
[root@web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
获取https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
警告:/var/tmp/rpm-tmp.6C4n1F: 头V4 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:epel-release-7-14 警告:/etc/yum.repos.d/epel.repo 已建立为 /etc/yum.repos.d/epel.repo.rpmnew
################################# [100%]
[root@web01 ~]# rpm -qa|grep epel-release ---查看是否安装
epel-release-7-14.noarch
[root@web01 ~]# rpm -ql epel-release-7-14.noarch ---查看生成文件信息
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/epel.repo
/usr/lib/systemd/system-preset/90-epel.preset
/usr/share/doc/epel-release-7
/usr/share/doc/epel-release-7/GPL
[root@web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
获取https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
警告:/var/tmp/rpm-tmp.5FwDjK: 头V4 RSA/SHA1 Signature, 密钥 ID 62e74ca5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:webtatic-release-7-3 ################################# [100%]
#利用yum安装PHP相关软件信息
[root@web01 ~]# yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb php71w-fpm
#启动服务程序
systemctl start php-fpm
数据库服务(mariadb)
第一个历程:安装数据服务程序
yum install mariadb-server mariadb -y
第二个历程:启动服务程序
systemctl start mariadb.service
systemctl enable mariadb.service
网站架构配置过程
nginx服务配置:
目的:静态资源访问自己处理/动态资源访问交给php服务处理
location ~ \.php$ {
fastcgi_index index.php; ---php服务默认处理动态资源
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000; ---调取fastcgi隧道 将nginx收到动态请求
include fastcgi_params; ---加载识别fastcgi配置相关的变量文件
}
解释说明:
- SCRUPT_FILENAME= d o c u m e n t r o o t document_root documentrootfastcgi_script_name
- document_root=====>路径
- fastcgi_script_name=====>文件名
php访问配置文件
[root@web01 bbs]# cat /html/bbs/php_test.php
<?php
phpinfo();
?>
php服务配置:
目的:实现数据存储过程/实现存储大文件数据
/etc/php-fpm.d/www.conf
行号
8 user = apache ---调整为和nginx服务worker进程用户相同/和后端存储服务器目录属主信息相同
10 group = apache ---调整为和nginx服务worker进程用户相同/和后端存储服务器目录属主信息相同
22 listen = 127.0.0.1:9000 ---可以实现php服务和nginx服务分离
/etc/php.ini
post_max_size = 200M
upload_max_filesize = 200M
mysql服务配置:
数据库组成部分: 服务程序-- 库信息 — 表信息 — 数据字段信息
目的: 为了实现php服务连接访问,以及数据正常存储与读取
[root@web01 conf.d]# mysqladmin -uroot password "zaizai" ---设置密码
[root@web01 conf.d]# mysql -uroot -pzaizai --利用指定密码连接数据库
Welcome to the MariaDB monitor.
mysql关闭DNS反解析
[root@web01 conf.d]# vim /etc/my.cnf
[mysqld]
skip-name-resolve ----加上这行信息
检查:进入数据库输入
MariaDB [(none)]> show variables like "%skip%";
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| replicate_events_marked_for_skip | replicate |
| skip_external_locking | ON |
| skip_name_resolve | ON | ---on 打开
| skip_networking | OFF |
| skip_replication | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+----------------------------------+-----------+
8 rows in set (0.00 sec)
测试是否可以连接访问数据库:
[root@web01 bbs]# vim mysql_test.php
<?php
$servername = "localhost";
$username = "root";
$password = "zaizai";
$conn = mysqli_connect($servername, $username, $password);
if ($conn) {
echo "mysql successful by root !\n";
}else{
die("Connection failed:" . mysqli_connect_error());
}
?>
网站架构代码上线(手动上线)
bbs代码上线过程:
第一个历程:上传代码信息/解压代码信息
cd /html/bbs
unzip xxx.zip
mv xxx/* ./
第二个历程:需要创建网站数据库/操作数据库用户
[root@web01 bbs]# mysql -uroot -pzaizai ---登录数据库
MariaDB [(none)]> create database bbs; ---创建网站数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases; ---查看
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [(none)]> grant all on bbs.*to 'bbs'@'localhost' identified by 'zaizai'; ---创建操作数据库用户bbs 给其所有权限 密码设定为zaizai
Query OK, 0 rows affected (0.00 sec)
第三个历程:网站页面初始化过程(开源代码) == 指定连接数据库
开源代码文件(地址 密码没有) — 数据库服务
网站数据库服务分离
目的:可以实现web集群数据统一存储
第一个历程:将数据库信息进行备份
[root@web01 backup]# mysqldump -uroot -pzaizai -A>/backup/web01.sql
第二个历程:将数据迁移到独立数据库服务器上(进行恢复)
迁移到数据库服务器上
[root@web01 backup]# scp -rp /backup/web01.sql 192.168.200.51:/tmp
数据库服务器
下载安装数据库
[root@db01 ~]# yum install -y mariadb-server mariadb
root@db01 ~]# mysql -uroot -pzaizai</tmp/web01.sql
MariaDB [(none)]> show databases; ---检查
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
第三个历程:和新的数据服务建立连接
web服务配置:指定新的数据库信息
[root@web01 bbs]# grep -r zaizai ./*
./config/config_global.php:$_config['db']['1']['dbpw'] = 'zaizai';
$_config['db']['1']['dbhost'] = '192.168.200.51';
$_config['db']['1']['dbuser'] = 'bbs';
$_config['db']['1']['dbpw'] = 'zaizai';
./config/config_ucenter.php:define('UC_DBPW', 'zaizai');
define('UC_DBHOST', '192.168.200.51');
define('UC_DBUSER', 'bbs');
define('UC_DBPW', 'zaizai');
./uc_server/data/config.inc.php:define('UC_DBPW', 'zaizai');
define('UC_DBHOST', '192.168.200.51');
define('UC_DBUSER', 'bbs');
define('UC_DBPW', 'zaizai');
db数据库服务进行配置(允许web服务器进行连接)
MariaDB [(none)]> grant all on bbs.* to 'bbs'@'192.168.200.%' identified by 'zaizai'
-> ;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> select user,host from mysql.user; ---检查
+------+---------------+
| user | host |
+------+---------------+
| root | 127.0.0.1 |
| bbs | 192.168.200.% |
| root | ::1 |
| | localhost |
| bbs | localhost |
| root | localhost |
| | web01 |
| root | web01 |
+------+---------------+
8 rows in set (0.00 sec)
网站调整数据存储过程
第一个历程:将原有数据保存备份
[root@web01 forum]# mkdir /backup/nfs_bak
[root@web01 forum]# mv ./* /backup/nfs_bak/
第二个历程:进行存储服务挂载操作
[root@web01 forum]# mount -t nfs 192.168.200.31:/data/bbs /html/bbs/data/attachment/forum/
第三个历程:
[root@nfs01 ~]# vim /etc/exports
[root@nfs01 ~]# mkdir /data/bbs -p
[root@nfs01 ~]# chown -R nfsnobody. /data
[root@nfs01 ~]# ll /data/bbs/ -d
drwxr-xr-x 2 nfsnobody nfsnobody 6 4月 11 19:21 /data/bbs/
网站构架搭建问题答疑
问题一:网站无法部署成功
解决思路
1)确认LNMP架构部署完毕/启动成功
Nginx启动不成功: nginx -t
查看服务是否已经启动过了 ps -ef|grep nginx
php启动不成功: php配置文件有错误
mariadb启动不成功:数据库服务器出现异常中断 rm -rf /var/lib/mysql/* 再重新启动
/etc/my.cnf配置文件问题
cp /usr/sharw/mysql/my-small.cnf /etc/my.cof
问题二:网站初始化时无法连接数据库
解决思路:
1) 连接数据库客户端配置是否正确:
2) 连接数据库服务端配置是否正确:
a:数据库中是否有创建相应网站数据库 bbs create
b:数据库中是否授权用户管理制定数据库 bbs用户管理 bbs数据库 grant
客户端测试: mysql -h 192.168.200.51 -ubbs -pzaizai
问题三:无法上传数据信息
解决思路
1)确认nginx 服务是否有上传数据限制
2)确认php 服务是否有上传数据限制
3)确认后端存储是否有限制
4)确认网页代码是否有限制
bbs代码上传限制调整方法(百度)
WordPress:
登入后台:http://blog.nana.com/wp-login.php
dedecms:
初始化:http://www.nana.com/install/index.php
登入后台:http://www.nana.com/dede/login.php