一、源码版LNMP环境
源码版LNMP环境:从官网下载源码包,然后配置、编译、安装,使其达到自定义的安装效果
1、源码文件的获取(官网获取)
nginx源码:打开官网->documentation ->Stable version(稳定版) ->选中nginx-1.14.2右击拷贝链接
之后在终端使用:wget http://nginx.org/download/nginx-1.14.2.tar.gz 下载nginx-1.14.2.tar.gz包
php源码:打开官网-> downloads ->点击 php-5.5.36.tar.gz 版本->选中 China cn2.php.net 右击拷贝链接
之后在终端使用:wget http://mirrors.sohu.com/php/php-7.2.9.tar.gz下载php-5.5.36.tar.gz包
php版本下载地址:http://mirrors.sohu.com/php/
之后在终端使用:wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.62-linux-glibc2.12-i686.tar.gz 下载
二、编译环境准备
1、编译工具安装:
因为源程序都是使用gcc gcc-c++ 编写而成的,所以需要安装:yum -y install gcc gcc-c++
2、源码安装nginx
1)依赖包安装
查找源码安装方法的步骤:nginx官网->documentation->Building nginx from Sources(源码安装)
找到nginx源码下载目录,通过命令:tar -xzf nginx-1.14.2.tar.gz解压
2)配置、编译、安装
进入nginx-1.14.2目录下,配置configure文件
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.42 --with-zlib=../zlib-1.2.11
执行完成报错(由于依赖包引起的问题):
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
百度搜索错误信息:nginx SSL modules require the OpenSSL library,查找解决方案:
安装nginx(支持https,即开启SSL模块),需要首先安装pcre、zlib、openssl;
通过命令:yum -y install openssl openssl-devel 安装
安装成功后重新编译操作
因为配置命令中存在--with-pcre=../pcre-8.42,然而在执行编译时没有找到,所以需要安装pcre-8.42:
nginx官网->documentation->Building nginx from Sources(源码安装)->点击 PCRE
将pcre-8.42下载到与nginx包所在的目录下(根目录/root/)
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
因为配置命令中存在--with-zlib=../zlib-1.2.11,然而在执行编译时没有找到,所以需要安装zlib-1.2.11:
nginx官网->documentation->Building nginx from Sources(源码安装)->点击 zlib
进入根目录下载:
wget http://www.zlib.net/zlib-1.2.11.tar.gz
查看已经下载的pcre-8.42、zlib-1.2.11,并解压
继续进入nginx目录配置
以上没有问题,继续make操作
以上没有问题,执行最后一步操作:make install
以上说明nginx已经安装成功了
总结:./configure(配置) make(编译) make install(安装)
3)nginx目录分析
查看默认安装的文件目录(一般情况下都会默认安装到/usr/local/目录下):
4)效果测试
浏览器测试nginx运行效果,输入服务器ip访问
浏览器访问成功,我们进入html目录下,创建test.html文件,并插入Welcome to nginx!!! 保存退出
3、源码安装php
1)依赖包安装
php源码:打开官网->documentation ->Chinese (Simplified)-> Unix 系统下的安装->Unix 系统下的 Nginx 1.4.x
获取并解压 PHP 源代码:
2)配置、编译、安装
配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure --help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。
配置:./configure --enable-fpm --with-mysqli --with-pdo-mysql
配置完成后,最底部报错:configure: error: xml2-config not found. Please check your libxml2 installation.代表着libxml2没有安装,需要安装这个依赖包:yum -y install libxml2-devel
重新执行配置:./configure --enable-fpm --with-mysqli --with-pdo-mysql
安装操作:make install
创建配置文件,并将其复制到正确的位置。
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin
需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
vi /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。
vim /usr/local/etc/php-fpm.conf
找到以下内容并修改:
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
检验系统是否存在,没有此类用户,以上步骤可以不操作
然后启动 php-fpm 服务:
/usr/local/bin/php-fpm
3)nginx如何识别php
配置 Nginx 使其支持 PHP 应用:
vi /usr/local/nginx/nginx.conf
修改默认的 location 块,使其支持 .php 文件:
下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:
location ~* .phpdocument_rootfastcgi_script_name;
}
重启 Nginx:./nginx -s reload
4、编译版安装mysql
1)依赖包安装
mysql官网->DOCUMENTATION->MySQL 5.6 Reference Manual(根据下载的版本选择手册)->Installing and Upgrading MySQL ->Installing MySQL on Unix/Linux Using Generic Binaries(编译版)
cd /root 进入安装包目录
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ 解压安装包
cd /usr/local
mv mysql-5.7.17-linux-glibc2.5-x86_64/ mysql
cd mysql/support-files/
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
添加以下内容:
[mysql]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character_set_server=utf8
2)复制mysql.server到/etc/init.d/目录下(目的想实现开机自动执行效果)
cp mysql.server /etc/init.d/mysql
修改/etc/init.d/mysql参数
vim /etc/init.d/mysql
修改以下内容:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
3)出于安全便利,创建一个操作数据库的专门用户
建立一个mysql的组:
groupadd mysql
建立mysql用户,并且把用户放到mysql组:
useradd -r -g mysql mysql
给mysql用户设置一个密码:
passwd mysql
新密码:12121212
给目录/usr/local/mysql 更改拥有者:
chown -R mysql:mysql /usr/local/mysql/
第四步:初始化 mysql 的数据库
cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
初始化后会生成一个临时密码 root@localhost::*(最好先记录这个临时密码)
root@localhost: 0n(yZo7W42.)
4)给数据库加密
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
5)启动mysql
./mysqld_safe --user=mysql &
检查mysql是否启动
ps -ef|grep mysql
发现有进程便代表启动成功,退出mysql。
mysql>exit
6)进入客户端
登录:
./mysql -uroot -p
Enter password:这里输入之前的临时密码
2.修改密码
mysql> set password=password('12341234');
7)设置远程访问
1:打开mysql的默认端口3306:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
提示FirewallD is not running,如下图所示。(ps:图片是在网上找的)
(1)通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
(2)通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
(3)再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
打开3306端口正确为:
[admin@bogon ~] firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[admin@bogon bin]$ firewall-cmd --reload
success
2:设置mysql的远程访问(暂时不设置)
设置远程访问账号:grant all privileges on . to 远程访问用户名@’%’ identified by ‘用户密码’;
mysql> grant all privileges on . to root@'%' identified by 'root';
刷新:
mysql> flush privileges;
8)设置开机自启动
1、添加服务mysql
cd /usr/local/mysql/bin/
chkconfig --add mysql
2、设置mysql服务为自启动
chkconfig mysql on
第八步:配置环境变量
vim /etc/profile
最后一行添加:
export PATH=PATH
使修改生效: source /etc/profile
至此,mysql5.7的安装就完成了!!!
2)配置安装
whereis mysql 安装路径
whereis mysql
mysql: /usr/local/mysql /usr/local/mysql/bin/mysql
创建db.php文件
插入以下内容:
<?php
$mysqli = new mysqli("localhost", "root", “12341234");
if(!$mysqli) {
echo"database error";
}else{
echo "connection successfully!"
}
$mysqli->close();
?>