LAMP架构搭建与优化
1.1MySQL安装
创新互联自2013年起,先为固始等服务建站,固始等地企业,进行企业商务咨询服务。为固始企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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 -Iwww.test.com
或者
curl -x127.0.0.1:80 -Iwww.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解析引擎)
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恢复备份
文章标题:LAMP架构搭建与优化
转载注明:http://scyanting.com/article/igeeje.html