您好,登錄后才能下訂單哦!
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
把第二個<VirtualHost *:80>整段刪掉
修改第一個
刪去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下一行加
<Directory /data/www/abc/>
AllowOverride AuthConfig
AuthName "aaaa"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
: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
在<VirtualHost *:80>上添一段
<VirtualHost *:80>
DocumentRoot “/tmp/123”
ServerName 1111.com
<VirtualHost *:80>
這樣禁止了默認的虛擬主機
只能用指定域名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下一行添加一段
<Ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
: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的下一段添加
<IfModule mod_expires.c>
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"
</IfModule>
:wq
apachectl -t
apachectl graceful
2.3Apache配置防盜鏈
防止自己網站的東西被人盜用
vim /usr/local /apache2/conf/extra/httpd-vhosts.conf
在 </IfModule> 下一行添加
SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref
SetEnvIfNoCase Referer ".*\.aminglinux\.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|png|gif|js|css)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
域名為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上方添加一段
<Directory "data/www">(網站根目錄)
AllowOverride None
Options None
Order allow,deny (先allow后deny是黑名單,不允許ip為127.0.0.1訪問)
Allow from all
Deny from 127.0.0.1
</Directory>
<filesmatch "(.*)admin(.*)">(訪問后臺)
Order deny,allow (先deny后allow是白名單,允許127.0.0.1訪問))
Deny from all
Allow from 127.0.0.1
</filesmatch>
測試 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
<Directory /data/www/data>
php_admin_flag engine off (關閉php解析引擎)
<filesmatch "(.*)php"> (禁止訪問或下載php文件)
Order deny,allow
Deny from all
</filesmatch>
</Directory>
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
在<Directory "/data/www">上一方添加
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恢復備份
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。