搭建lnmp教程

Posted 隆冬之夜99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建lnmp教程相关的知识,希望对你有一定的参考价值。

LNMP指的是一个基于CentOS/Debian 上安装nginxphpmysql、php。可以在独立主机上轻松的安装LNMP生产环境。

1 安装nginx

如果是一台新的服务器可直接安装(若以前安装过apacha和php需要卸载 命令 #yum remove http* php* )

安装命令 

yum -y install nginx

启动命令

/etc/init.d/nginx start

刚刚买了服务器,测试发现无法启动报错 ,解决办法将default.conf 后缀改掉,这是一个虚拟主机的配置,,后面我们会详细介绍。

 

cd /etc/nginx/conf.d
mv default.conf default.conf.back

 

设置系统启动自动开启

chkconfig --level 345 nginx on

 安装nginx之后,我们要搭建一个虚拟主机,方便外网访问。一台云服务器可以创建多个虚拟主机。运行多个网站。我们可以为不同的域名绑定不同的目录,访问这个域名的时候,会打开对应目录里面的东西。先进入到 nginx 配置文件目录:

cd /etc/nginx/conf.d

新建一个以.conf结尾的配置文件名字最好以你的配置的域名为名称例如 www.baidu.com.conf,下面是一个虚拟主机配置,一般情况下只需要改动域名和代码位置,域名需要在域名管理平台解析,

代码本人习惯放在根目录/home/ 下

server {
    listen          80;
    server_name     www.baidu.com;
    root            /home/baidu;
    charset         utf-8;
    #access_log     /var/log/nginx/log/host.access.log  main;

    location / {
        index  index.html index.htm index.php;
    try_files $uri $uri/ /index.php?$query_string;
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \\.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \\.php$ {
    #    root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        
        client_max_body_size    5000m;  
    }

    # deny access to .htaccess files, if Apache\'s document root
    # concurs with nginx\'s one
    #
    #location ~ /\\.ht {
    #    deny  all;
    #}
}

 

 重启 nginx 或者重新加载 nginx 可以让配置文件生效。

service nginx reload
或者
service nginx restart

 

 到根目录/home下,创建代码目录,目录名称必须跟虚拟主机配置项目录名称一致。

cd /home
mkdir baidu
vim baidu/1.html

 

随便写点什么保存。本人懒推荐****************;现在,打开浏览器,输入你为虚拟主机设置的域名,看看是否能打开你指定的目录里的东西。

2 安装php

根据项目需求安装php版本。php7.0性能高。

1.检查当前安装的PHP包

yum list installed | grep php

 

如果有安装的PHP包,先删除他们

yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64

 

2.配置yum源,根据服务器系统版本选择

Centos 5.X

rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm

 

​CentOs 6.x

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

 

​CentOs 7.X

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
​rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

 

 

 

3.运行安装php yum install

安装php5.5

yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64​

 

安装php5.6

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64

 

安装php7.0

yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64

 

4.安装PHP FPM​

yum install php55w-fpm 
yum install php56w-fpm 
yum install php70w-fpm

如果你想在系统启动时自动运行php-fpm,输入下列命令:

# chkconfig --level 345 php-fpm on

第一次启动php-fpm,输入下列命令:

# /etc/init.d/php-fpm restart

现在,我们已经安装了 php-fpm,并修改了 nginx 的配置文件让它可以去执行 php,下面,我们得去测试一下,可以使用 php 的 phpinfo(); 函数,方法是在你的虚拟主机根目录下面,创建一个 php 文件,命名为 phpinfo.php,然后在这个文件里输入:

<?php phpinfo(); ?>

 

保存并退出,php默认的使用者是apache,需要改为nginx

vim /etc/php-fpm.d/www.conf

 

将39行 41行的 apache改为nginx 

38 ; RPM: apache Choosed to be able to access some dir as httpd
39 user = apache
40 ; RPM: Keep a group allowed to write in log dir.
41 group = apache
改为
38 ; RPM: apache Choosed to be able to access some dir as httpd
39 user = nginx
40 ; RPM: Keep a group allowed to write in log dir.
41 group = nginx

 重启nginx

service nginx restart

 浏览器打开刚刚的文件,显示php信息

 

3 安装mysql

安装 mysql
mysql 可以管理网站用到的数据库,WordPress 和 Drupal 也都支持 mysql 数据库。所以我们的 Web 运行环境里,需要安装一个 mysql 。直接使用 yum 命令去安装 mysql :

yum install mysql-server

 


安装完成后,使用 service 命令启动 mysql 服务:

service mysqld start

 


然后我们需要简单配置一下 mysql ,默认安装以后 mysql 的 root 用户是没有密码的,对于生产环境来说,这肯定是不行的,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 root 用户的密码, 密码是什么等等。

mysql_secure_installation

 

 

Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? [Y/n] y
解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? [Y/n] y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? [Y/n] y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? [Y/n] y
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? [Y/n] y
解释:想要重新加载权限吗?输入 y 表示愿意。

 

CentOS下开启mysql远程连接, 当服务器没有运行php、没装phpmyadmin的时候,远程管理mysql就显得有必要了。

远程管理数据库方式有两种


1 普通链接通过3306端口链接
mysql -u root -p
在mysql控制台执行:

grant all privileges on *.* to \'root\'@\'%\' identified by \'123456\' with grant option;

# root是用户名,%代表任意主机,\'root\'指定的登录密码(这个和本地的root密码可以设置不同的,互不影响)

flush privileges;# 重载系统权限
exit;

*****允许3306端口****

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT


# 查看规则是否生效

iptables -L -n # 或者: service iptables status

# 此时生产环境是不安全的,远程管理之后应该关闭端口,删除之前添加的规则
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
PS,上面iptables添加/删除规则都是临时的,如果需要重启后也生效,需要保存修改:

service iptables save # 或者: /etc/init.d/iptables save

另外,
vi /etc/sysconfig/iptables # 加上下面这行规则也是可以的
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT


2 通过ssh等通道连接

我使用的是navicae工具

在这里填上服务器远程链接信息

在这里填上服务器上的数据库密码就可以了。

服务器远程连接工具推荐xshell,sftp,写代码推荐phpstorm;大神们喜欢用vi直接在服务器上写代码,但是我还是喜欢这些工具, 工具是人类进步的阶梯嘛!

以上是关于搭建lnmp教程的主要内容,如果未能解决你的问题,请参考以下文章

Debian8+LNMP下搭建wordpress教程

LNMP环境搭建教程及linux常用命令及问题

ubuntu下快速搭建LNMP环境图文教程

在服务器上搭建多个WordPress博客网站教程(超级详细)

如何搭建 LNMP环境

LNMP 1.2/1.3+升级NginxMySQL/MariaDBPHP教程