一mysql的源码编译
tar zxf mysql-boost-5.7.11.tar.gz
cd mysql-5.7.11/
去官网找到cmake包下载
yum install -y cmake-2.8.12.2-4.el6.x86_64.rpm
10 cd mysql-5.7.17/
11 ls
12 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
13 yum install -y gcc gcc-c++ ##解决依赖性
14 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
15 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
17 yum install -y ncurses-devel
18 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
19 rm -f CMakeCache.txt #删除缓存
20 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
21 yum install -y bison
22 rm -f CMakeCache.txt
23 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
24 make && make install
cd /usr/local
ls
cd lnmp
ls
cd mysql ##mysql 的安装位置
ls
cd support-files ##配置文件所在位置
ls
vim my-default.cnf
cp my-default.cnf /etc/my.cnf ##将配置文件copy到/etc/my.cnf 系统默认配置文件目录
vim /etc/my.cnf
添加basedir=/usr/local/lnmp/mysql ##mysql 的安装目录
datadir=/usr/local/lnmp/mysql/data ##mysql数据存放位置
port=3306 ##mysql服务对外端口
socket=/usr/local/lnmp/mysql/data/mysql.sock #mysql与外界联系的套接字文件位置
ls
file mysql.server
cp mysql.server /etc/init.d/mysqld#将编译完成的mysql启动脚本复制到系统启动服务的默认目录中
ll /etc/init.d/mysqld
cd ..
ls
pwd ##此时应该在/usr/local/lnmp/mysql
cd bin/
将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令
vim ~/.bash_profile
写入 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
export PATH
source ~/.bash_profile
cd
mysql_install_db
对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中,创建mysql组和mysql用户
groupadd -g 27 mysql
useradd -g 27 -u 27 -M -d /usr/local/lnmp/mysql -s /sbin/nologin mysql
# 指定mysql用户的家目录为/usr/local/lnmp/mysql
# (-M表示不创建其家目录)。为了系统安全,MYSQL默认使用mysql用户来运行相关程序。
id mysql
将mysql目录下的data目录的所属组修改为mysql,因为mysql服务将要往这个目录中写数据,保证其有执行权限
cd /usr/local/lnmp/mysql
ll
chown -R mysql.mysql .
ll
7.执行mysql的配置初始化文件
mysqld --initialize --user=mysql# 注意生成的初始化密码在最底下(注意不要冒号后边的空格)
/etc/init.d/mysql start
ls
ll
cd data
ls
ll
cd ..
ls
mysql_secure_installation ##进行设置密码,安全初始化脚本
mysql -p show databases; ##登陆数据库
/etc/init.d/mysqld stop
ls
ll ##此时在mysql目录下,可以看见有data目录
chown root.mysql -R .
ll
chown mysql data -R
ll
cd /data
ls
cd
/etc/init.d/mysqld start
mysql -V ##查看某个应用的压缩包的版本
二。php源码编译
1.得到php的源码包并解压
tar jxf php-5.6.35.tar.bz2
2.进入解压目录创造预编译环境
cd php_5.6.35
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc/ --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-mcrypt --with-mhash
3.解决依赖性
yum search 一个软件名
yum provides */XXX.h ##寻找那个包含有这个文件
yum install gcc libxml2-devel zlib-devel openssl-devel curl-devel
libjpeg-turbo-devel libpng-devel freetype-devel gpm-devel net-snmp-devel bison
lftp 172.25.254.250 cd /pub/docs/lamp mget libmcrypt-* re2c-0.13.5*
yum install -y libmcrypt-devel-2.5.8-9* libmcrypt-*
rpm -ivh re2c-0.13.5-1.el6.x86_64.rpm
其中有2个包要去官网下载libmcrpt-
4.编译和安装
ll Makefile
make && make install
5.将配置文件拷贝到相应的位置
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
cp /root/php-5.6.35/php.ini-production /usr/local/lnmp/php/etc/php.ini
6.做php服务的简单配置(配置pid和时区)
cd /usr/local/lnmp/php/etc/
vim php.ini data.timezone = Asia/Shanghai
vim php-fpm.conf ##打开pid,pid=run/php-fpm.pid
7.将php启动的脚本复制到系统启动脚本的默认目录下,并测试php是否可以启动
cd /root/php-5.6.35/sapi/fpm
file init.d.php-fpm ##这是一个shell脚本文件
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm ##给脚步本加上可执行权限
/etc/init.d/php-fpm start ##打开php服务
/etc/init.d/php-fpm reload ##重新加载php
netstat -antlp ##查看php服务的监听端口
三.nginx的源码编译
1.得到nginx的源码包并解压
yum install unzip
tar zxf nginx-1.14.0.tar.gz
unzip nginx-goodies-nginx-sticky-module-ng-08.zip ##带有sticky模块的nginx包
2.去掉nginx的版本号
cd nginx-1.14.0/src/core
vim nginx.h
3.注释debug
cd nginx-1.14.1/auto/cc
vim gcc
4.创造预编译环境
cd nginx-1.14.1
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
5.解决源码编译中的依赖性问题
yum install pcre-devel ##一般后面都加devel后缀
6.编译汇编
make && make install
7.配置nginx服务
useradd nginx
id nginx
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
第一行加上运行用户,第13行加上最大文件数
第65-71行,去掉注释 ##将nginx和php结合起来
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
location / {
root html;
index index.php index.html index.htm;
}
8.对nginx用户做限制和添加nginx的用户
id nginx
vim /etc/security/limits.conf
nginx - nofile 65535
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin
10.检测nginx服务是否可用并打开nginx服务
nginx -t ##检查配置文件是否有错
nginx ##打开nginx服务
11.访问测试
cd /usr/local/lnmp/nginx/html
vim index.php
<?php
phpinfo()
?>
在浏览器处输入nginx和php所在主机ip地址:172.25.254.1/index.php
12.修改php的默认访问(将php后缀文件作为默认发布文件):
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
location / {
root html;
index index.php(放在第一个) index.html index.htm;
}
在浏览器输入172.25.254.1就可以访问了,不需要在加入index.php了
cd /usr/local/lnmp/php/etc/
ls
vim php-fpm.conf将user和group的nobody改为nginx
user=nginx
group=nginx
/etc/init.d/php-fpm reload
在真机测试: http://172.25.254.1
LNMP架构的简单部署
1.下载论坛php代码(在这儿我就直接用别人写好的php论坛代码)
解压代码,并将其放在nginx的默认发布目录/usr/local/lnmp/nginx/html/下
yum install unzip # 安装解压工具unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/
2.对页面上传部分的php代码改名,方便浏览(可选)
cd /usr/local/lnmp/nginx/html/
mv upload/ bbs(可选操作)
3.权限不够,改权限
cd /usr/local/lnmp/nginx/html/bbs
ls
chmod -R 777 config/ data/ uc_client/ uc_server/
4.mysql和php没有链接
ll /usr/local/lnmp/mysql/data/mysql.sock
cd /usr/local/lnmp/php/etc/
vim php-ini##一共改三处
这几处后面添加1219-1222 1011-1014 1159-1162 /usr/local/lnmp/mysql/data/mysql.sock
/etc/init.d/php-fpm reload #重启服务
5.mysql的权限不够
ll -d /usr/local/lnmp/mysql/data
chmod 755 /usr/local/lnmp/mysql/data
在真机安装;http://172.25.254.1/bbs
最后防止重复安装,根据要求删除东西
cd /usr/local/lnmp/nginx/html/bbs/install
ls
rm -fr index.php