mysql5.7 二进制包安装
1 下载包并使用FTP协议传输到 /mnt目录下
2 解压并移动到 /usr/local/mysql目录下
tar -xvf mysql-5.7.17-linux-glibc2.5-i686.tar
mv mysql-5.7.17-linux-glibc2.5-i686 /usr/local/mysql
3 初始化
useradd -M -s /sbin/nologin mysql //添加用户但不创建家目录
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql //初始化用户为mysql,数据存储目录为/data/mysql
注意,这一步最后一行会有一个提示
[Note] A temporary password is generated for root@localhost: B*s1i(*,kXwg
最后面的字符串为root密码。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql //MySQL服务器开启SSL功能
4. 拷贝配置文件和启动脚本
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf //编辑或者修改
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld //编辑或者修改
basedir=/usr/local/mysql //安装路径
datadir=/data/mysql //数据文件存放路径
编译参数# cat /usr/local/mysql/bin/mysqlbug|grep configure 不适用于mysql 5.7
5. 启动服务
/etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/suning.err' //启动日志存放位置
日志中此错误的解决办法
[ERROR] SSL error: Unable to get private key from 'server-key.pem'
chmod 644 server-key.pem
6. 设置root密码
a 使用初始化密码登录
/usr/local/mysql/bin/mysql -uroot -p'B*s1i(*,kXwg' //进入后直接设置密码
mysql>set password = password('mypass'); //一定要设置一下新密码
退出来,再使用新的密码登录就可以了
b 还有一种情况,就是不知道初始化密码
vi /etc/my.cnf
在[mysqld]下面增加一行
skip-grant-tables
重启 /etc/init.d/mysqld restart
/usr/local/mysql/bin/mysql -uroot
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql,建立软连接,这样以后直接用mysql就可以启动了
mysql> update mysql.user set authentication_string=password('688992') where user='root';
退出来后,更改my.cnf,去掉刚加的 skip-grant-tables
重启 /etc/init.d/mysqld restart
此时就可以使用新的密码了。
卸载方法
如果是卸载咱们的方法安装的mysql,具体做法是:
1. 停掉服务
2. 删除/usr/local/mysql
3. 删除/data/mysql
4. 删除/etc/my.cnf
5. 删除启动脚本
6. 删除mysql用户
Apache httpd安装
apache官网下载地址: http://www.apache.org/dyn/closer.cgi
提前安装库文件:yum install -y pcre pcre-devel apr apr-devel zlib-devel
1 下载并解压
tar -jxvf
2 配置编译参数:
[root@localhost src]# cd httpd-2.2.16
[root@localhost httpd-2.2.16]# ./configure \
--prefix=/usr/local/apache \ //指定安装目录
--with-included-apr \ //apache依赖包,支持httpd跨平台安装
--enable-so \ //表示启用DSO
--enable-deflate=shared \ // 表示共享的方式编译deflate
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre // 正则相关的库
回车
echo $?
返回0,表示无错误
3 make
echo $?
4 make install
echo $?
上面的编译参数保存在/usr/local/apache2/build/config.nice
启动
/usr/local/apache2/bin/apachectl start / stop / restart(进程关闭再启动) / graceful(原来的进程还在,重新加载配置文件)
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
编辑 配置文件 /usr/local/apache2/conf /httpd.conf
找到#ServerName www.example.com:80 把#去掉,再重启apache即可没事了
ps aux | grep httpd //查看进程是否启动
netstat -lnp //查看端口
/usr/local/apache2/bin/apachectl -M //查看所有模块(shared-动态共享 static-静态)
/usr/local/apache2/bin/apachectl -l //查看静态模块
/usr/local/apache2/bin/apachectl -t //查看配置文件(/usr/local/apache2/conf /httpd.conf)有无语法错误
动态
ls /usr/local/apache2/modules
httpd.exp mod_deflate.so mod_expires.so mod_rewrite.so
其中以so结尾的为动态共享文件,当程序用到时,自动加载
静态
du -sh /usr/local/apache2/bin/httpd
1.7M /usr/local/apache2/bin/httpd
静态模块编译保存在/usr/local/apache2/bin/httpd,静态模块在程序启动时自动加载
三种常用工作模式---查资料了解更多
prefork:主进程下派生很多子进程
worker:主进程下派生子进程,子进程下派生线程
event:worker的升级版
/usr/local/apache2/bin/apachectl -l
在查看静态模块的结果中,有项 prefork.c ,是Apache2.2的默认工作模式;2.4默认是event
在安装包httpd-2.2.16里,./configure --help 中查找 --with-mpm选项指定工作模式
DSO是Dynamic Shared Objects(动态共享目标)的缩写,它提供了一种在运行时将特殊格式的代码在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache 支持动态共享模块,也支持静态模块,静态的话,会把需要的目标直接编译进apache的可执行文件中,相比较动态,虽然省去了加载共享模块的步骤,但是也加大了二进制执行文件的空间,变得臃肿。
安装PHP
1 下载并解压
tar -Jxvf php-5.6.29.tar.xz
2 配置编译参数:
cd php-5.3.27
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \ //自动安装扩展模块的工具,在apache2/modules/目录下多了libphp5.so
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \ //依赖于MySQL
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-exif \
--disable-ipv6
/usr/local/php/bin/php -i |grep configure(编译参数)
3 make echo $? 0
4 make install echo $? 0
安装完成
配置文件:/usr/local/php/etc/php.ini
/usr/local/php/bin/php -m 显示静态加载的模块
/usr/local/php/bin/php -i 显示相关配置
测试php解析
因为php安装时产生了新模块,所以Apache需要重启
/usr/local/apache2/bin/apachectl restart
访问公网IP地址 101.200.61.81 //记得关闭防火墙
查看Apache配置文件,确定项目运行目录,添加解析php的配置
/usr/local/apache2/htdocs //apache的运行项目位置
Apache主配置文件为:/usr/local/apache2/conf/httpd.conf
vim /usr/local/apache2/conf/httpd.conf
1 找到:AddType application/x-gzip .gz .tgz
在该行下面添加:AddType application/x-httpd-php .php
2 找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
将该行改为:
<IfModule dir_module> DirectoryIndex index.html index.htm index.php
</IfModule>
3 找到:
#ServerName www.example.com:80
修改为:
ServerName localhost:80
4 检查配置是否正确 /usr/local/apache2/bin/apachectl -t
5 设置php配置文件 cp /usr/local/src/php-5.6.29/php.ini-development /usr/local/php/etc/php.ini(开发板或者生产版)
6 重启Apache配置文件 /usr/local/apache2/bin/apachectl graceful
curl http://101.200.61.81/info.php 不用切换到浏览器访问
/usr/local/php/bin/php 2.php,也能返回浏览器的输出结果
/usr/local/php/bin/php -i 等于浏览器访问php.info(phpinfo()函数)
discuz论坛
mkdir /data/www
cd /data/www
下载并解压discuz 包,生成3个文件(readme upload utility)
将upload的内容移到当前目录下,删除其他以外文件
mv upload/* .
rm -rf utility/ Discuz_X3.2_SC_UTF8.zip readme/
配置Apache
1 vim /usr/local/apache2/conf/httpd.conf
将 #Include conf/extra/httpd-vhosts.conf 前面的井号 # 去掉
2 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 作如下更改
<VirtualHost *:80>
ServerAdmin 1107914055@qq.com
#管理员邮箱
DocumentRoot /data/www
ServerName www.test.com
ServerAlias www.aaa.com
#ErrorLog "logs/dummy-host.example.com-error_log"
#CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
3 /usr/local/apache2/bin/apachectl -t //检查语法错误
Syntax OK
4 vim /etc/hosts
在本机的hosts \windows\system32\drivers\etc\hosts 中添加 101.200.61.81 www.test.com www.aaa.com
5 本机访问 www.test.com
显示forbidden
6 vim /vim /usr/local/apache2/conf/httpd.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all //deny改为Allow
</Directory>
vim //usr/local/apache2/bin/apachectl -t
Syntax OK
/usr//usr/local/apache2/bin/apachectl restart
7 进入discuz安装界面
8 更改文件属主为Apache的运行属主
9 选择第一项默认(全新安装)
10 配置mysql
10-1 进入mysql :mysql -uroot -p
10-2 create database discuz;
10-3 grant all on discuz.* to 'suning'@'localhost' identified by 'suninglinux';
命令格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
权限:select/insert/update/delete/all,多个权限之间用英文逗号隔开。
数据库:数据库名称,或者使用“*”代替所有数据库。
登录主机:localhost/具体IP/%,其中“%”代表除localhost之外的所有IP
11 在discuz中岸上一步设置具体参数
Apache用户认证
在discuz的安装目录下创建一个新目录 abc,并且为他添加权限
cd /data/www
mkdir abc
编辑Apache虚拟主机配置文件 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
27 <VirtualHost *:80>
28 ServerAdmin 1107914055@qq.com
29 #管理员邮箱
30 DocumentRoot /data/www
31 ServerName www.test.com
ServerName www.bbb.com
32 ServerAlias www.aaa.com
33 #ErrorLog "logs/dummy-host.example.com-error_log"
34 #CustomLog "logs/dummy-host.example.com-access_log" common
35 <Directory /data/www/abc>
36 AllowOverride AuthConfig
37 AuthName "自定义的提示"
38 AuthType Basic
39 AuthUserFile /data/.htpasswd
40 require valid-user
41 </Directory>
42 </VirtualHost>
创建用户 /usr/local/apache2/bin/htpasswd -c /data/.htpasswd suning1 //创建用户 suning1 ,及密码123456789
/usr/local/apache2/bin/htpasswd /data/.htpasswd user2 //创建用户2,不用再加-c
/usr/local/apache2/bin/apachectl -t
Syntax OK
/usr/local/apache2/bin/apachectl restart
配置默认虚拟主机
在配置好的<virtualHost>前面添加
<VirtualHost *:80>
DocumentRoot /tmp/123
ServerName 1111.com
</VirtualHost>
再重启Apache后,将不能通过ip访问,只能通过设置的www.test.com、www.aaa.com访问
301跳转
使用Apache的rewrite_module模块
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
在第二个virtualHost中添加模块ifmodule
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.bbb.com$
RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L] #301永久跳转,302临时跳转
</IfModule>
/usr/local/apache2/bin/apachectl -t
/usr/local/apache2/bin/apachectl restart
Apache日志切割
编辑Apache虚拟主机配置文件 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
去掉下面两行前面的井号# ,也可以自定义路径和名称,logs是相对于 /usr/local/apache2来说的
#ErrorLog "logs/dummy-host.example.com-error_log"
#CustomLog "logs/dummy-host.example.com-access_log" common
//common的具体格式在Apache主配置文件中查看
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined (常用)
LogFormat "%h %l %u %t \"%r\" %>s %b" common
日志切割处理
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/suning_discuz.cus-access_%Y%m%d_log 86400" combined //86400是一天的秒数,以日期结尾分割
配置文件从新启动
/usr/local/apache2/bin/apachectl graceful
Apache 不记录指定文件类型的日志
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
在第二个virtualHost中customlog上方添加,并添加 env=!image-request
ErrorLog "logs/suning_discuz.err"
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/suning_discuz.cus-access_%Y%m%d_log 86400" com bined env=!image-request
重启
/usr/local/apache2/bin/apachectl restart
配置静态缓存
在虚拟配置文件中的IfModules mod_expires.c模块上方添加静态模块
48 <IfModule mod_expires.c>
49 ExpiresActive on
50 ExpiresByType image/gif "access plus 1 days"
51 ExpiresByType image/jpeg "access plus 24 hours"
52 ExpiresByType image/png "access plus 24 hours"
53 ExpiresByType image/css "now plus 2 hours"
54 ExpiresByType application/x-javascript "now plus 2 hours"
55 ExpiresByType application/x-shockwave-flash "now plus 2 hours"
56 ExpiresDefault "now plus 0 min"
57 </IfModule>
重新加载配置文件/usr/local/apache2/bin/apachectl graceful
测试curl -x101.200.61.81:80 'http://101.200.61.81/static/image/common/logo.png' -I
HTTP/1.1 200 OK
Date: Tue, 27 Dec 2016 14:47:56 GMT
Server: Apache/2.2.31 (Unix) PHP/5.6.29
Last-Modified: Tue, 31 May 2016 03:08:36 GMT
ETag: "160a81-1149-5341ab0597500"
Accept-Ranges: bytes
Content-Length: 4425
Cache-Control: max-age=86400 #呼应上方的24hours
Expires: Wed, 28 Dec 2016 14:47:56 GMT
Content-Type: image/png
Apache配置防盗链
在虚拟配置文件添加
59 SetEnvIfNoCase Referer "^https://.*\.test\.com" local_ref #白名单,允许自己的网站使用
60 SetEnvIfNoCase Referer ".*\.aminglinux\.com" local_ref #白名单,允许其他网站调用
61 <filesmatch "\.{txt|doc|mp3|zip|rar|jpgg|gif|png|js|css}">
62 Order Allow,Deny
63 Allow from env=local_ref
64 </filesmatch>
Apache访问控制
编辑回复