千家信息网

LAMP架构搭建与优化

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1.1mysql安装LAMP是linux apache mysql php的简写MySQL是一个数据库文件 apache提供http服务 很多网站站点使用php写安装下载MySQLwww.amingl
千家信息网最后更新 2025年01月20日LAMP架构搭建与优化

1.1mysql安装

LAMP是linux apache mysql php的简写

MySQL是一个数据库文件 apache提供http服务 很多网站站点使用php写

安装下载MySQL

www.aminglinux.com/study_v2/chapter12.html

下载 r.aminglinux.com/

1.2Apache编辑安装

路径和方法

www.aminglinux.com/study_v2/chapter12.html

下载 r.aminglinux.com/

/usr/local/apache2/bin/apachectl start (stop关闭)启动apache

ps aux |grep httpd 查看是否启动了

netstat -lnp 查看监听窗口80

/usr/local/apache2/bin/apachectl -M 查看模块 static为静态 shared为动态

- L只列出静态模块

- t 查看配置文件语法有没有错误

/usr/local/apache2/bin/apachectl graceful 重新加载配置文件

-L 中的prefock.c 说明apache在prefock模式下进行

prefock worker event3种模式

1.4php编译安装-安装顺序在最后

路径也方法

www.aminglinux.com/study_v2/chapter12.html

下载 r.aminglinux.com/

/usr/local/php/bin/php -m 查看模块 都是静态

-i 查看相关配置

测试php解释

重启apache (restart)

vim /usr/local/apache2/conf/httpd.conf 查看配置文件

DocumentRoot就是访问网站时放在的目录

AddType application/x-gzip.gz.tgz下添加一条

AddType application/x-httpd-php.php

修改 DirectoryIndex index.html index.php

保存退出

restart (或graceful)apache

可以用ip网站方式或者指令curl测试apache是否结合php搭建LAMP

1.6安装discuz

Discuz 创建论坛

mkdir /data/www

cd /data/www

wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip

unzip Discuz_X3.2_SC_GBK.zip

ls

mv upload/* ./ 把upload下的文件都移出来

ls

rm -rf readme/ utility/ upload/Discuz_X3.2_SC_GBK.zip 把多余的几个文件删去

ps aux |grep httpd 查看apache启动否

/usr/local/apache2/bin/apachectl start 开启

vim /usr/local/apache2/conf/httpd.conf

找到httpd-vhosts.conf,把前面的#删去,使用了虚拟主机的配置文件

找到Deny,改为Allow

:wq

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

把第二个整段删掉

修改第一个

删去serveradmin整行

把documentroot 改为"/data/www"

servername 改为www.test.com

serveralias (别名)www.aaa.com

errorlog customlog 错误日志与访问日志 在最前面加#

:wq

/usr/local/apache2/bin/apachectl -t

/usr/local/apache2/bin/apachectl restart

hosts 与ip,域名有关 dns服务

vim/etc/hosts

加一行 192.168.73.10(ip)www.baidu.com

:wq

在主机找到hosts文件

在# ::1 localhost下一行加

192.168.73.10 www.test.com www.aaa.com

保存退出

主机用浏览器登录 www.test.com

点击同意

将红叉改为可写

把它们的属组root改为daemon

chown -R daemon config data uc_client/data uc_server/data

刷新浏览器

下一步

第一项全新安装

创建数据库

/usr/local/mysql/bin/mysql

create database discuz; (数据库名)

grant all on discuz.* to '111'@'localhost' identified by 'vincentlinux';

回到浏览器

库名 discuz

用户 111

密码 vincentlinux

管理员密码123456

下一步

安装完成

点此访问

1.7apache用户认证

将abc目录设为只有管理员才能访问

cd /data/www

mkdir abc

cd abc

cp /etc/passwd ./12.txt

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

在#CustomLog下一行加

AllowOverride AuthConfig

AuthName "aaaa"

AuthType Basic

AuthUserFile /data/.htpasswd

require valid-user

:wq

vim /etc/profile.d/path.sh 修改path

export PATH=$PATH:/usr/local/mysql/bin/:/usr/local/apache2/bin

:wq

source /etc/profile.d/path.sh

设置用户和密码

htpasswd -c /data/.htpasswd user1 用户名user1

密码

再创一个user2 删去-c

重启apache

apachectl graceful

浏览器登录 www.test.com/abc/12.txt 就会要求打用户名和密码登录了

1.8默认虚拟主机

mkdir /tmp/123 创建空目录

chmod 600 /tmp/123

vim /use/local/apache2/conf/extra/http-vhosts.conf

上添一段

DocumentRoot "/tmp/123"

ServerName 1111.com

这样禁止了默认的虚拟主机

只能用指定域名www.test.com 和www.aaa.com登录论坛

1.9域名301域名

使www.aaa.com域名自动跳转到www.test.com

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

在#CustomLog下一行添加一段

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.aaa.com$

RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]

:wq

如果还有另一个域名www.bbb.com需要跳转到test,则在aaa下一行再添加一条RewriteCond 给bbb,在aaa.com$后几格加[OR]

2.0 Apache日志切割

访问日志记录

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

把ErrorLog和CustomLog前的#去掉 开启错误日志和访问日志的记录

CustomLog 后面的common指日志的格式和名字

vim /usr/local /apache2/conf/httpd.conf

搜索 /common

找到两个LogFormat 就是日志的格式和名称,最好用combined格式

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

把common改为combined

:wq

apachectl -t

apachectl graceful

外部浏览器访问论坛

cd /usr/local/apache2/logs

ls

生成 access_log和error_log两个日志

切割日志

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

修改CustomLog的路径 "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/+原来的名称-access_%Y%m%d_log 86400" combined

年月日命名日志 以86400秒即一天为分割一个日志

2.1Apache 不记录指定文件类型的日志

没必要记录论坛的小图片css等插入件

只需要记录每页的地址

先给这些小插件标记

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

在serverAlias下一行添加

SetEnvIf Request_URI ".*\.gif$" p_w_picpath-request

SetEnvIf Request_URI ".*\.jpg$" p_w_picpath-request

SetEnvIf Request_URI ".*\.png$" p_w_picpath-request

SetEnvIf Request_URI ".*\.bmp$" p_w_picpath-request

SetEnvIf Request_URI ".*\.swf$" p_w_picpath-request

SetEnvIf Request_URI ".*\.js$" p_w_picpath-request

SetEnvIf Request_URI ".*\.css$" p_w_picpath-request

然后在CustomLog 的最后添加 env=!p_w_picpath-request

除了以上p_w_picpath-request标记的都会记录

:wq

apachectl -t

apachectl restart

外部浏览器刷新

ls

less 生成的访问日志名称

查看日志不存在以上那些格式的内容

2.2Apache 配置静态缓存

将网页中的小图片小图标作一个缓存 减少带宽

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

在CustomLog的下一段添加

ExpiresActive on

ExpiresByType p_w_picpath/gif "access plus 1 days"

ExpiresByType p_w_picpath/jpeg "access plus 24 hours"

ExpiresByType p_w_picpath/png "access plus 24 hours"

ExpiresByType test/css "now plus 2 hours"

ExpiresByType application/x-javascript "now plus 2 hours"

ExpiresByType application/x-shockwave-flash "now plus 2 hours"

ExpiresDefault "now plus 0 min"

:wq

apachectl -t

apachectl graceful

2.3Apache配置防盗链

防止自己网站的东西被人盗用

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

下一行添加

SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref

SetEnvIfNoCase Referer ".*\.aminglinux\.com" local_ref

Order Allow,Deny

Allow from env=local_ref

域名为www.test.com和www.aminglinux.com在白名单上,标记为 local_ref

把(txt|doc|mp3|zip|rar|jpg|png|gif|js|css)这些格式的东西加上防盗链

只允许有local_ref标记的地址调用

:wq

apachectl restart

外部浏览器测试

2.4Apache访问控制

限制相关ip访问站点

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

在ErrorLog上方添加一段

(网站根目录)

AllowOverride None

Options None

Order allow,deny (先allow后deny是黑名单,不允许ip为127.0.0.1访问)

Allow from all

Deny from 127.0.0.1

(访问后台)

Order deny,allow (先deny后allow是白名单,允许127.0.0.1访问))

Deny from all

Allow from 127.0.0.1

测试 curl -x127.0.0.1:80 -I www.test.com

或者

curl -x127.0.0.1:80 -I www.test.com/admin.php

假如 admin.php 被两个配置段都匹配了的话,那就选精准度更高的。

这两个就是下面这个filesmatch 精准度高,所以以它为准。所以127.0.0.1能够访问www.test.com/admin.php

2.5 Apache禁止解析php

ls -l /data/www/data

查看apache的数组都是daemon

php_admin_flag engine off (关闭php解析引擎)

(禁止访问或下载php文件)

Order deny,allow

Deny from all

2.6Apache禁止指定user_agent

在RewriteRule下一行添加

RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR] (匹配curl相关的,NC不区分大小写,OR或者)

RewriteCond %{HTTP_USER_AGENT} ^.*chrome* [NC] (匹配chrome相关的,NC不区分大小写,启动后浏览器访问不了网站,测试完要在前面加上#去除禁止)

RewriteRule .* - [F] (forbidden,禁止以上两种相关的求情)

:wq

apachectl restart

2.7Apache通过rewrite限制某个目录

RewriteRule .* - [F] 下一行添加

RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC] (限制访问tmp目录)

RewriteRule .* - [F]

2.8php.ini配置文件详解

php的配置文件路径 /usr/local/php/etc/php.ini(用;作注释符号)

修改

disable functions =disable_functions=eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfs (禁用的高风险函数)

display_errors = off

log_errors = On

error_log = /usr/local/php/logs/php_errors.log (若目录logs不存在,就新建mkdir /usr/local/php/logs 然后修改权限 chmod 777 !$)

errors_reporting = E_ALL & ~E_NOTICE

:wq

apachectl graceful

(错误日志不会暴露,生成存在logs目录下)

继续修改

php、apache要访问一个网站,若网站有漏洞,被别人获得权限,要限定死在某个目录下

open_basedir =/data/www:/tmp (网站程序所在目录)

或者在apache下定义(先注释了open_basedir),php.ini只能配置一个,apache可以配置多个

vim /usr/local /apache2/conf/extra/httpd-vhosts.conf

上一方添加

php_admin_value open_basedir "/data/www/:/tmp/"

:wq

2.9php扩展模块如何安装

cd /usr/local/src/php-5.4.36

ls

cd ext/ (源码包都在ext下)

ls

例子 编译模块curl

cd curl/

ls

/usr/local/php/bin/phpize

ls (生成了configure文件)

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

生成了curl.so

/usr/local/php/bin/php/ -i |grep extension_dir

vim /usr/local/php/etc/php.ini

在;extension=php_…最下面添加

extension=curl.so

:wq

3.0mysql配置讲解

mysql配置文件

vim /etc/my.cnf

核心配置是mysqld部分

port 端口

socket 监听的socket

skip-locking 是否过滤掉lock,不锁

key-buffer-size 索引块缓冲区

(可以通过mysql调优的帖子参考调值大小

www.aminglinux.com/bbs/thread-5758-1-1.html)

max-allowed-packet 允许最大的包

table-open-cache…

另外还可能用到的log-bin、server-id、interactive_timeout、wait timeout、long_query_time、log_slow_queries=/data/mysql/slow.log

3.1 mysql的root密码重置

mysqladmin -uroot password '密码' 将mysql设置一个登录密码

命令 quit 退出mysql模式

重置密码

vim /etc/my.cnf

在mysqld最下面添加

skip-grant

:wq

/etc/init.d/mysqld restart 重启

mysql 登录mysql 不需要密码

use mysql

update user set password=password('新密码')where user='root; 设置了新密码

vim /etc/my.cnf

删去skip-grant

:wq

/etc/init.d/mysqld restart 重启

mysql

mysql -uroot -p新密码 登录mysql

3.2mysql登录

远程登录mysql

mysql -uroot -h292.168.11.160 -P3306 -p密码 3306端口

授权ip

在mysql模式里

grant all on *.* to 'root' @'192.168.11.160' identified by '密码'; 授权ip192…登录

select user(); 查看登录当前用户

3.3mysql常用操作-1

库--》表--》行--》字段

show databases; 查看mysql里有哪些库

库information_schema、discuz、mysql、test

use 库名 切换库

select database();查看当前数据库

select version();查看版本

show tables; 查看表

desc 表名; 查看表里面的字段

show create table 表名\G;查看表的创建

create database A;创建库A

use A

create table B('id' int(4), 'name' char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk;

'为反引号,创建表B,字段为 id,格式int,长度4位,字段name,格式char,最长40位,engine为myisam,字符集Default charset为gbk

show tables;

desc B;

在表里插入数据

insert into B values(1,'aming');id为1,name改为aming

delete from B where name='aming'; 把name为aming那行删去

truncate table A.B; 清空表B

drop table B;删除表B

drop database A ;删除库A

3.4mysql常用操作2

授权 grant all on 数据库名……

flush privileges ;刷新权限

show processlist;查看数据库里的队列

查看mysql 的错误日志

cd /data/mysql

ls

.err文件就是错误日志

tail .err 查看错误日志

3.5mysql备份与恢复

可以远程备份也可以本地备份

mysqldump -uroot -p密码 discuz >/data/discuz.sql 备份数据库discuz

mysql -uroot -p密码 discuz < /data/discuz.sql恢复备份


日志 文件 配置 密码 登录 一行 网站 数据 浏览器 目录 浏览 数据库 格式 错误 域名 用户 主机 备份 模块 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库 查询相同数据 java多数据源数据库管理 北纬三零网络技术 怎么检查邮箱的邮件服务器 服务器怎么做网页访问限制 红河蒙自网络安全培训机构 微型机上的数据库系统 江宁区智能化软件开发创新服务 dede全国地区数据库 数据库表创建在哪个阶段 软件开发学校 互联网的小米科技 数据库软件 sql 价格 全球学术快报服务器开小差是怎么回事 江阴专业软件开发联系人 数据库中字段值怎么设置 网络安全知识答题题库人人网 软件开发板块基金 php操作mysql导出数据库 cm0304小数据库前锋 阿里云服务器可以扩展存储么 数据库import重复导入 数据库如何创建一对一关系 长宁区网络软件开发有哪些 手机怎么备份通讯录到云服务器 城市地质数据库 shell脚本对数据库表取数 八斗互动网络技术有限公司 湖北数据库空投箱出厂价格 局域网邮件服务器 邮件转发
0