Centos7 编译安装LNMP
一、准备工作:
linux环境:centos 7.6 64位
nginx:nginx-1.16.1tar.gz
php: php-7.3.13.tar.gz
mysql: mysql-5.6.21.tar.gz
libxml2:libxml2-2.9.1.tar.gz
openssl:openssl-1.0.1e.tar.gz
zlib:zlib-1.2.3.tar.gz
pcre:pcre-8.36.tar.gz
1、Nginx官网下载
稳定版本:链接: http://nginx.org/en/download.html.
2、PHP 7.3官网下载
链接: https://www.php.net/downloads.php.
3、下载mysql5.6.46
链接: https://dev.mysql.com/downloads/mysql/5.6.html.
4、创建安装目录
这里创建 /www/web 用于存入程序代码; /www/source 环境的安装目录; /www/lnmp 用于存放安装软件
创建安装目录命令:mkdir -p /www/{lnmpsourceweb}
5、上传软件
将上面下载好的软件用ftp(或其它工具)上传到 /www/lnmp,并进行解压:
-
[root@localhost lnmp]# cd /www/lnmp/
-
[root@localhost lnmp]# find ./*.tar.gz -exec tar zxvf {} ;
6、安装软件
yum install -y gcc gcc-c++ make sudo autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel patch libmcrypt-devel libmhash-devel ncurses-devel bzip2 libcap-devel ntp sysklogd diffutils sendmail iptables unzip cmake
7、创建用户
我们需要创建2个用户,一个用来启动mysql,一个用来启动nginx
-
[root@localhost ~]# groupadd mysql
-
[root@localhost ~]# useradd -r mysql -g mysql
-
[root@localhost ~]# groupadd www
-
[root@localhost ~]# useradd -r www -g www
这里我们成功创建了两个用户组 mysql 和 www ,也创建了两个用户 mysql 和 www
二、安装nginx
说明
安装nginx前,需要安装3个依赖包:
pcre:在使用 nginx 的 rewrite 模块的时候,需要有pcre库的支持
openssl:在使用ssl功能时,需要有 openssl库的支持
zlib:在使用gzip模块时,需要有zlib库的支持。
而这三个模块都是我们常用的,所以这3个依赖包还是要安装的。
1、安装 pcre
[root@localhost lnmp]# cd /www/lnmp/pcre-8.36
[root@localhost pcre-8.36]# ./configure
[root@localhost pcre-8.36]# make
[root@localhost pcre-8.36]# make install
2、安装 openssl
[root@localhost pcre-8.36]# cd /www/lnmp/openssl-1.0.1e
[root@localhost openssl-1.0.1e]# ./config
[root@localhost openssl-1.0.1e]# make
[root@localhost openssl-1.0.1e]# make install
3、安装 zlib
[root@localhost openssl-1.0.1e]# cd /www/lnmp/zlib-1.2.3
[root@localhost zlib-1.2.3]# CFLAGS="-O3 -fPIC" ./configure
[root@localhost zlib-1.2.3]# make && make install
4、安装 nginx
第一步
安 装nginx的时候,参数可能会多一些。建议最简化安装。nginx有很多模块,如果哪个模块用不到,尽量不要安装,进入 nginx 源码目录可以使用 ./configure --help 查看有哪些编译参数,常用的有以下几个:
–prefix=PATH 要安装到的目录
–sbin-path=PATH 指定nginx二进制文件的路径,没指定的话这个路径依赖 --prefix 选项
–conf-path=PATH 如果在命令行未指定配置文件,那么将会通过 --prefix 指定的路径去查找配置文件
–error-log-path=PATH 错误文件路径,nginx写入错误日志文件地址
–pid-path=
–user= worker进程运行的用户
–group= worker进程运行的组
–with-http_ssl_module 开启 ssl 模块
–with-zlib=DIR 设置 zlib 的源码目录
–with-openssl=DIR 设置 openssl 的源码目录
–with-pcre=DIR设置 pcre 的源码目录
第二步:进行编译安装
-
[root@localhost zlib-1.2.3]# cd /www/lnmp/nginx-1.8.0
-
[root@localhost nginx-1.8.0]# ./configure --help // 这是查看帮助的命令
-
[root@localhost nginx-1.8.0]# ./configure --user=www --group=www --prefix=/www/source/nginx --with-pcre=/www/lnmp/pcre-8.36 --with-zlib=/www/lnmp/zlib-1.2.3 --with-openssl=/www/lnmp/openssl-1.0.1e
-
[root@localhost nginx-1.8.0]# make && make install
第三步
安装好之后,我们可以用 ls 查看 /www/source,发现有一个 nginx,说明已经安装成功了。
-
[root@localhost nginx-1.8.0]# ls /www/source/nginx
-
[root@localhost nginx-1.8.0]#
三、安装Mysql
1、安装过程
mysql 5.5 以后要用 cmake 来编译
[root@localhost nginx-1.8.0]# cd /www/lnmp/mysql-5.6.21
[root@localhost mysql-5.6.21]# cmake - DCMAKE_INSTALL_PREFIX=/www/source/mysql
[root@localhost mysql-5.6.21]# make
[root@localhost mysql-5.6.21]# make install
2、配置 mysql进入安装好的目录
-
[root@localhost mysql-5.6.21]# cd /www/source/mysql/
-
[root@localhost mysql]# rm -f /etc/my.cnf // 删除系统自带的mysql配置文件
-
[root@localhost mysql]# chown -R mysql:mysql ./
-
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql // 安装数据库
-
[root@localhost mysql]# chown -R root:root ./*
-
[root@localhost mysql]# chown -R mysql:mysql ./data/
将 ./support-files/mysql.server 复制到 /etc/init.d/ 下
- [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
3、修改 linux 的环境变量
在/etc/profile文件的最后加入一句
export PATH="/www/source/mysql/bin:$PATH"
-
[root@localhost mysql]# vim /etc/profile
-
[root@localhost mysql]# source /etc/profile // 这一句是让配置立即生效
-
[root@localhost mysql]# service mysqld start // 启动 mysql
-
Starting MySQL…
root密码默认空
登陆和创建用户
[root@bogon mysql]# mysql -u root –p
show database 查看表
新增用户并授权
mysql> grant all privileges on . to chenz @’%’ identified by ‘123456’ with grant option;
语法:grant all privileges on . to 用户名@’%’ identified by ‘密码’ with grant option;
四、安装php
安装php之前,也要安装一个依赖包 libxml2
1、安装 libxm
-
[root@localhost mysql]# cd /www/lnmp/libxml2-2.9.1
-
[root@localhost libxml2-2.9.1]# ./configure --with-python=no
-
[root@localhost libxml2-2.9.1]# make && make install
2、安装 php7.1
php的编译参数也是很多的,这里了不能一一介绍,可以使用 ./configure --help 查看,这里使用的参数如下:
–prefix 安装到的目录
–enable-fpm 开始 fpm 模式,nginx 下必需开启
–enable-fpm-user fpm 的启动账户
–enable-fpm-group fpm 的启动账户组
–with-openssl开启 openssl
–with-libxml-dir 开启 libxml
–with-zlib 开启 zlib
–enable-mbstring开启 mbstring
–with-mysqli=mysqlnd 开启 mysqli
–with-pdo-mysql 开启 pdo mysql
–with-gd 开启gd库
–enable-sockets 开启 sockets
–with-curl 开启 curl
–enable-maintainer-zts 开启 maintainer zts,以后安装多线程的话,这个必须开启
[root@localhost libxml2-2.9.1]# cd /www/lnmp/php-7.1.1
[root@localhost php-7.1.1]# ./configure --prefix=/www/source/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-libxml-dir --with-zlib --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=/www/source/mysql/ --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-sockets --with-curl --enable-maintainer-zts
[root@localhost php-7.1.1]# make
[root@localhost php-7.1.1]# make test // 测试完之后,输入 n
[root@localhost php-7.1.1]# make install
3、修改 linux PHP 的环境变量
在/etc/profile文件的最后加入一句
export PATH=$PATH:/www/source/php/bin
[root@localhost mysql]# vim /etc/profile
[root@localhost mysql]# source /etc/profile // 这一句是让配置立即生效
php –v php –m 等命令
或者:
vim ~/.bash_profile
export PATH
alias php=/usr/local/php/bin/php
source ~/.bash_profile #刷新
五、环境配置
1、php 配置
[root@localhost php-7.1.1]# cd /www/source/php/
[root@localhost php]# cp etc/php-fpm.conf.default etc/php-fpm.conf
[root@localhost php]# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
[root@localhost php]# cp /www/lnmp/php-7.1.1/php.ini-production lib/php.ini
2、启动 php-fpm
[root@localhost php]# /www/source/php/sbin/php-fpm
#设置启动命令:
[root@localhost php]cp /www/lnmp/php-7.3.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php]chkconfig --add php-fpm
3、nginx 配置
[root@localhost php]# cd /www/source/nginx/conf/
[root@localhost conf]# vim nginx.conf
将 nginx.conf 中的 server 保存成如下
server {
2. listen 80;
3. server_name localhost;
4.
5. #charset koi8-r;
6. #access_log logs/host.access.log main;
7.
8. root /www/web;
9. index index.html index.php;
10.
11. error_page 500 502 503 504 /50x.html;
12. location = /50x.html {
13. root html;
14. }
15.
16. location ~ \.php$ {
17. fastcgi_pass 127.0.0.1:9000;
18. fastcgi_index index.php;
19.
20. fastcgi_split_path_info ^(.+\.php)(/.+)$;
21. fastcgi_param PATH_INFO $fastcgi_path_info;
22. fastcgi_param SCRIPT_FILENAME /www/web$fastcgi_script_name;
23. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
24.
25. include fastcgi_params;
26. }
27. }
4、启动 nginx
[root@localhost conf]# /www/source/nginx/sbin/nginx
六、测试环境
在 /www/web/ 目录下创建一个 index.php,内容如下:
<?php
phpinfo();
修改 index.php 所属组
[root@localhost php]# chown -R www:www /www/web/
七、启动命令:
【启动Nginx】
$ /www/source/nginx/sbin/nginx #启动Nginx
$ /www/source /nginx/sbin/nginx -s stop #断开Nginx
$ /www/source /nginx/sbin/nginx -s reload #重启Nginx
$ ps -ef | grep nginx 或者 ps -A | grep -i nginx #查看是否成功启动nginx
【启动PHP】
$ service php-fpm start #启动 php-fpm
$ service php-fpm stop #关闭php-fpm
$ service php-fpm restart #重启php-fpm
$ service php-fpm status #查看 php-fpm 状态
$ ps -ef | grep php-fpm 或者 ps -A | grep -i php-fpm #查看是否成功启动php-fpmx
【启动Mysql】
$ service mysqld start #启动 mysqld
$ service mysqld stop #关闭mysqld
$ service mysqld restart #重启mysqld
$ service mysqld status #查看 mysqld 状态
$ ps -ef | grep mysqld 或者 ps -A | grep -i mysqld #查看是否成功启动mysqld
八、php安装扩展
安装swoole为例 Swoole:
1、安装swoole
方法一
git clone https://gitee.com/swoole/swoole
whereis phpize
/www/source/php/bin/phpize
./configure –with-php-config=/www/source/php/bin/php-config
make && make install
方法二
cd /www/lnmp/nginx/ext/
wget http://pecl.php.net/get/swoole-4.4.8.tgz
tar –zxvf swoole-4.4.8.tgz
cd swoole-4.4.8
/www/source/php/bin/phpize
./configure –with-php-config=/www/source/php/bin/php-config
make && make install
2、配置php支持swoole
vi /www/source/php/lib/php.ini
extension=swoole.so
php-m #查看扩展
测试是否开启
#swoole的安装目录 echo.php
cd /home/swoole/examples/server/
php echo.php #开启进程
#查看9501进程
netstat -anp | grep 9501
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 30144/php
#正确启动
3、重启php-fpm
service php-fpm restart
九、站点创建
1、修改nginx的站点配置文件
vim /www/source/nginx/conf/nginx.conf
添加如下内容
include /www/source/nginx/conf/vhosts/*.conf
2、创建站点配置文件目录
mkdir /www/source/nginx/conf/vhosts
3、创建站点目录
#创建www.a.com 站点目录
mkdir /www/web/www.a.com
#创建测试首页
vim /www/web/www.a.com/index.php # 输入本站域名:www.a.com
4、创建站点配置文件
touch /var/local/nginx/conf/vhosts/www.a.com.conf
其内容如下:
server {
listen 80;
server_name www.a.com; # 设置域名
index index.php index.html; #默认主页
root /www/web/www.a.com; # 站点目录
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; #加载扩展配置
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#以下是PHP的支持,可以使用公共文件进行引入
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
5、重启nginx
十、vsftp ftp
1、安装yum -y install vsftpd ftp
yum -y install vsftpd ftp
2、修改配置文件
vi /etc/vsftpd/vsftpd.conf
vsftpd.conf具体配置如下:
anonymous_enable=NO #允许匿名用户访问为了安全选择关闭 local_enable=YES # 允许本地用户登录 write_enable=YES # 是否允许写入 local_umask=022 # 本地用户上传文件的umask dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(默认为.message)的内容 xferlog_enable=YES #开启日志
xferlog_std_format=YES #标准格式 connect_from_port_20=YES xferlog_file=/var/log/xferlog #ftp日志目录
idle_session_timeout=6000 #设置客户端连接时间
data_connection_timeout=1200 #设置数据连接时间 针对上传,下载 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效 chroot_list_enable=YES #若为NO则记录在chroot_list_file所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中无法离开.如果为YES则所记录的用户将不被chroot.这里YES. chroot_local_user=YES userlist_deny=NO #若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login并且将检察下面的userlist_deny选项 userlist_enable=YES #若为NO则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求. userlist_file=/etc/vsftpd/user_list #白名单 chroot_list_enable=YES local_root=/var/ftp/pub #根目录 listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置。
vsftpd.ftpusers:位于/etc/vsftpd目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:位于/etc/vsftpd目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
3、创建白名单
useradd xxx passwd xxx 并添加到user_list和chroot_list中去
4、启动ftp服务器
#cetoos 7操作
/bin/systemctl restart vsftpd.service
5.赋权
将ftp指定的根目录赋权为777权限
6.检查SElinux状态并关闭
getsebool -a|grep ftp
7、 防火墙放通FTP服务
8、配置本地用户登录
1、指定家目录给用户/www/web/demo demo 123456
[root@localhost /]# adduser -d /www/web/demo -g ftp -s /sbin/nologin demo
[root@localhost /]# passwd demo
2、限定FTP用户只能访问自己的家目录,而不能返回上一层目录进入其他目录
#chroot_local_user #是否将所有用户限制在主目录
[root@localhost /]# vim /etc/vsftpd/vsftpd.conf chroot_list_enable=YES
#chroot_list_enable #是否启动限制用户的名单 chroot_list_file=/etc/vsftpd/chroot_list
#chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单
3.在/etc/vsftpd下创建chroot_list文件
[root@localhost /]# cd /etc/vsftpd
[root@localhost vsftpd]# touch chroot_list
[root@localhost vsftpd]# vim chroot_list
然后加入需要限制的用户名(一行一个)
4、重启vsftp
systemctl restart vsftpd
5、userdel + 用户 即可删除ftp用户
[root@localhost /]# userdel cmcc1
6.如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd cmcc //用户telnet后将直接进入改密界面