一、安装Nginx
1. 安装nginx依赖包
yum install gcc gcc-c++ kernel-devel
nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法:
yum -y install pcre pcre-devel
nginx的各种模块中需要使用gzip压缩:
yum -y install zlib zlib-devel
安全套接字层密码库:
yum -y install openssl openssl-devel
2. 下载nginx包并解压(到/usr/local/src目录中)
cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxvf nginx-1.12.2.tar.gz
3. 编译安装(到/usr/local/nginx目录中)
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx
make
make install
4. 创建并设置nginx运行账号:
groupadd nginx
useradd -M -g nginx -s /sbin/nologin nginx
cd /usr/local/nginx/conf
vim nginx.conf,设置user参数如下:
user nginx nginx;
其他配置参数暂时无需改动。
5. 设置nginx为系统服务
vim /lib/systemd/system/nginx.service
文件内容:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
6. 设置nginx开机自启动
systemctl enable nginx.service
7. 开启nginx服务:
systemctl start nginx.service
查看nginx是否启动成功:
ps aux | grep nginx 或 systemctl status nginx.service
在虚拟机浏览器中访问测试:
http://localhost
出现以下界面则表示可以成功访问:
8. 防火墙开放80端口(nginx默认使用80端口,可在nginx.conf中配置,若无需进行远程访问则不需要开放端口)
永久开放80端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:
firewall-cmd --reload
查看防火墙开启状态:
systemctl status firewalld
查看80端口是否开放成功:
firewall-cmd --zone=public --query-port=80/tcp
可在windows宿主主机浏览器直接访问虚拟机ip测试是否可以成功访问。
二、安装Mysql
从CentOS 7.0发布以来,yum源中开始使用Mariadb来代替MySQL的安装。即使你输入的是yum install -y mysql , 显示的也是Mariadb的安装内容。使用源代码进行编译安装又太麻烦。因此,如果想使用yum安装MySQL的话,就需要去下载官方指定的yum源,网址为:https://dev.mysql.com/downloads/repo/yum/ 找到Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package,单击后面的Download,在新的页面中单击最下面的No thanks, just start my download.就可以下载到yum源了。
1. 首先进入本机的源文件目录
cd /usr/local/src
2. 使用wget下载官方yum源的rpm包:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
3. 安装rpm包:
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
4. 再次使用yum来安装mysql-server:
yum install -y mysql-server
可以看到这次不再提示安装Mariadb了
5. 安装完成后,启动mysqld服务:
systemctl start mysqld
查看是否成功启动:
ps aux|grep mysqld
6. 设置mysqld服务开机自启动:
systemctl enable mysqld
7. 使用初始密码登录
由于MySQL从5.7开始不允许首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中,使用下面的命令可以查看此密码:
cat /var/log/mysqld.log|grep 'A temporary password'
2017-11-12T13:35:37.013617Z 1 [Note] A temporary password is generated for root@localhost: bkv,dy,)o7Ss
最后一行冒号后面的部分bkv,dy,)o7Ss就是初始密码。
使用此密码登录MySQL:
mysql -u root -p
8. 更改默认密码:
修改root密码:
alter user 'root'@'localhost' identified by 'your_password';
将your_password替换成你自己的密码就可以了,当然,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上。
重新使用新的密码登录,如果可以正常登录说明你的MySQL已经成功安装在CentOS 7.4上了
三、安装PHP
1. 安装php依赖包
yum install libxml2 libxml2-devel curl curl-devel libpng libpng-devel libjpeg-devel libjpeg-turbo-devel freetype-devel libxslt-devel gd-devel
2. 下载php包并解压
http://php.net/downloads.php
这里有7.0的与5.6.33的版本,我们选择.tar.gz的这个点进去,选一个节点,我们选择香港的地址如下
http://hk1.php.net/get/php-5.6.33.tar.gz/from/this/mirror
cd /usr/local/src
wget http://hk1.php.net/get/php-5.6.33.tar.gz/from/this/mirror
重命名
mv mirror php-5.6.33.tar.gz
tar -zxvf php-5.6.33.tar.gz
3. 编译安装(到/usr/local/php目录)
进入解压后目录
cd php-5.6.33
我们需要在安装的时候将安装目录配置到/usr/local/php/里
#./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysql --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip
上面就是些基本的参数配置和要加载的功能及模块安装路径等,保持默认就行
make(此过程需花费大概20分钟)
make install
4. php.ini配置
我们需要配置的是php.ini这个文件
安装目录有2个文件:php.ini-development和php.ini-production
php.ini-production 线上版本使用
php.ini-development 开发版本使用
我们选择development进行配置 当然如果的线上正式环境就使用正式的那个配置文件
cp php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
找到short_open_tag = Off,修改为short_open_tag = On 开启短标签。
修改上传文件大小
找到 post_max_size = 8M 修改为 post_max_size = 80M
找到 upload_max_filesize= 2M 修改为 post_max_size = 20M
要保证 upload_max_filesize < post_max_size < memory_limit 否则不起作用。
找到date.timezone这行,更改如下date.timezone = Asia/Shanghai。
5. 创建并设置php-fpm运行账号
groupadd www-data
useradd -M -g www-data -s /sbin/nologin www-data
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
搜索“user”设置运行账号:
user=www-data
group=www-data
6. 配置nginx支持php
vim /usr/local/nginx/conf/nginx.conf
重启nginx
systemctl reload nginx.service
7. 设置php-fpm为系统服务:
vim /etc/systemd/system/php-fpm.service
文件内容:
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target
8. 设置php-fpm服务开机自启动:
systemctl enable php-fpm.service
9. 启动php-fpm:
systemctl start php-fpm.service
查看是否启动成功:
ps aux | grep php-fpm 或 systemctl status php-fpm.service
10.写一个php脚本测试nginx是否已支持php,php是否已支持mysql。
phpinfo();
至此,LNMP搭建完成!
如果有问题,就可能是SELinux导致的 关闭SElinux:修改/etc/selinux/config文件中的SELINUX=””为disabled,然后重启。