简介:
LNMP代表的就是:Linux系统下Nginx+MySQL(Mariadb)+PHP这种网站服务器架构。 Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:Debian、CentOS、Ubuntu、Fedora、Gentoo等。 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。 Mysql是一个小型关系型数据库管理系统,目前使用Mariadb替代之。 PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。Jun 14, 2015 这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。 下面我们针对这个组合逐步说明各个组件在内网环境的安装步骤及协调配置。
一、CentOS7的安装及本地yum库的创建
CentOS7的安装及本地yum库的创建不再复述,我们这里假定CentOS7已安装好并配置内网可以联通,并且已按照前述方法创建好了本地yum库,并且防火墙已先关闭。
为了方便测试,先
# systemctl stop firewalld && systemctl disable firewalld
以方便调试。
二、Nginx安装
由于Nginx不在内置的Packages里,我们需要先创建Nginx的本地yum库。
1. 仓库Yum仓库目录
(这里假定Nginx的yum库目录是/home/yum-other/nginx/
)
# mkdir -p /home/yum-other/nginx/RPMS
2. 下载所有Nginx的rpm软件包
从http://nginx.org/packages/centos/7/x86_64/RPMS/
下载所有Nginx的rpm软件包,并上传到/home/yum-other/nginx/RPMS
下
3. 创建yum索引
# createrepo /home/yum-other/nginx/
4. 创建nginx.repo更新源配置文件
# vim /etc/yum.repos.d/nginx.repo
nginx.repo文件内容如下:
[nginx] name=nginx repo baseurl=file:///home/yum-other/nginx/ gpgcheck=0 enabled=1
5. yum安装Nginx了
OK!现在可以直接yum安装Nginx了
# yum install -y nginx
6. 启动Nginx服务并设为开机启动
# systemctl start nginx # systemctl enable nginx
7. 查看服务是否运行
# ps -A|grep nginx
应该有两个nginx进程
注:可以测试采用yumdownloader
的方式下载nginx软件包到本地安装
8. 测试网站是否建立成功
在其它电脑浏览器里打开http://CentOS7ServerIP/ 看看是不是出现了
Welcome to Nginx! ...
的页面了!如有则安装成功。
这时默认的网站目录是/usr/share/nginx/html
,这个路径可以改为你的实际路径,但相应的Nginx配置里也要同时修改。
下面所涉及的网站目录我们还是先以这个来说明。
下面我们将其它组件的安装再来涉及Nginx的配置。
另附在线安装Nginx的步骤
1. 在线安装Nginx更新源
# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2. 安装Nginx
# yum install -y nginx
三、安装Mariadb
1. 安装Mariadb软件,
在CentOS7中已经使用Mariadb替代了MySQL
# yum install -y mariadb-server mariadb
2. 启动Mariadb服务并加入开机启动
# systemctl start mariadb # systemctl enable mariadb
3. Mariadb的初始化配置
# mysql_secure_installation
因为是初始安装,还没配置过数据库的密码,所以出现如下提示,按提示操作
Enter current password for root (enter for none): 回车 Set root password? [Y/n] 回车 New password: 输入Mariadb的root密码 Re-enter new password: 再次输入以检验确认 Remove anonymous users? [Y/n] 回车 Disallow root login remotely? [Y/n] 回车 Remove test database and access to it? [Y/n] 回车 Reload privilege tables now? [Y/n] 回车
4. 查看服务是否运行
# ps -A|grep mysqld
有两个进程
> mysqld_safe > > mysqld
四、安装PHP
1. 安装PHP及MySQL和CGI支持组件
# yum install php php-mysql php-fpm
2. 配置PHP
# vim /etc/php.ini
找到;cgi.fix_pathinfo=1
这行并改为cgi.fix_pathinfo=0
3. 配置CGI
# vim /etc/php-fpm.d/www.conf
找到Listen这行,改为
listen = /var/run/php-fpm/php-fpm.sock
4. 启动CGI并设为开机启动
# systemctl start php-fpm # systemctl enable php-fpm
5. 测试服务是否运行
# ps -A|grep php-fpm
应该有6个php-fpm进程
五、配置Nginx使之可以支持PHP
1. 修改nginx的服务段配置
备份下Nginx配置先
# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak # vim /etc/nginx/nginx.conf
看看配置后面有没有server 80的配置,如果有,把整段#注释掉,我们使用default.conf的服务配置。
2. 修改default.conf的配置
同样先备份
# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.conf # vim /etc/nginx/conf.d/default.conf
找到
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
这部分,并修改为
server { listen 80; server_name localhost; root /usr/share/nginx/html; #这里改为实际网站路径 index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; #这里改为实际50x.html所在的路径 } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
3. 测试一下Nginx配置是否正确
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
4. 重启Nginx服务
# systemctl restart nginx
5. 创建测试脚本
# vim /usr/share/nginx/html/info.php <? php phpinfo(); ?>
6. 在其它电脑里打开浏览器测试
http://http://CentOS7服务器IP/info.php 如果没有问题的话应该显示php的信息页面
PHP Version 5.4.16 ...
7. 删除测试文件
测试成功后记得删除测试文件
# rm /usr/share/nginx/html/info.php
六、安装phpmyadmin
注:在可在线的CentOS7系统先下载phpMyAdmin
1. 安装epel更新源
因为php-mcrypt是phpmyadmin需要用到的,而官方的更新源没有这个包,所以才需要安装epel更新源
# rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
2. 下载 php-mcrypt 及依赖文件 libmcrypt
# yumdownloader php-mcrypt # yumdownloader libmcrypt
下载 phpmyadmin
# yumdownloader phpmyadmin
将上述文件复制到内网本地yum仓库并按照上面本地yum所述方式刷新。
3. yum安装上述软件包
# yum install -y php-mcrypt # yum install -y phpmyadmin
安装时自动安装依赖文件
libtidy
php-bcmath
php-gd
php-mbstring
php-php-gettext
php-tcpdf
php-tcpdf-dejavu-sans-fonts
php-tidy
php-xml
t1lib
如果遇到依赖文件本地yum仓库没有重复2、3步骤下载安装之
4. 配置phpmyadmin
phpmyadmin的配置文件为:/etc/phpMyAdmin/config.inc.php
同目录下还有一个config.inc.php.rpmsave
,不知何用。
5. 链接到网站下
# ln -s /usr/share/phpMyAdmin /home/html/phpMyAdmin
现在可以通过http://域名/phpMyAdmin
来访问数据库了。
至此LNMP建站组合已安装完毕,你可以试着上传一些php网站上去试用了,这个组合应该可以满足大多数php应用的使用要求。
七、指定新的网站目录
通常情况下我们的网站目录不是在/usr/share/nginx/html/
下
那么我们需要重新指定新的网站目录
假定我们新的网站目录是放在/home/html/
1. 现在来修改nginx的配置
# vim /etc/nginx/conf.d/default.conf
找到两处
root /usr/share/nginx/html;
的位置, 修改为
root /home/html;
2. 重启下nginx服务
# systemctrl restart nginx
3. 现在再建个测试脚本
# vim /home/html/info.php
<? php phpinfo(); ?>
4. 在其它电脑上测试一下链接
<http://http://CentOS7ServerIP/info.php>
耶,403/404错误,无法访问是怎么回事呢,没改变网站目录前还可以访问的呀~~
5. 复制原网站目录的SELinux安全性本文
原来是SELinux的安全机制限制了你的访问权限,好在我们有原来的网站目录可以参照 查看一下原网站目录文件的SELinux安全性本文
# ls -Z /usr/share/nginx/html -rw-r--r--. root root system_u:object_r:usr_t:s0 50x.html -rw-r--r--. root root system_u:object_r:usr_t:s0 index.html -rw-r--r--. root root unconfined_u:object_r:usr_t:s0 info.php
这里的system_u:object_r:usr_t
分别代表了 用户:角色:类型的三个设置
先不用知道这是什么意思,我们先参照该安全性本文对现在的 /home/html 进行设置
# chcon -R -u system_u -r object_r -t usr_t /home/html
现在再刷新一下浏览器,可以正常显示页面了。 (上述这种不是最好的解决方式,在没有正确的解决方法前建议是把SELINUX关闭) 总结一下,在没有设开机启动的情况下,开启这个建站组合我们需要开启下面几个服务
# systemctl start nginx # systemctl start mariadb # systemctl start php-fpm
才能正常打开网页,如果要加入开机启动,只要
# systemctl enable nginx # systemctl enable mariadb # systemctl enable php-fpm
执行一次就可以了。
八、存在问题:
- 重启后 发现
/etc/nginx/conf.d/default.conf
被改名为default.conf.rpmsave
了,于是
# cp /etc/nginx/conf.d/default.conf.rpmsave /etc/nginx/conf.d/default.conf # systemctl restart nginx
首页重新回来了 再观察一下还会不会出现这种情况