美文网首页
如何搭建LNMP环境

如何搭建LNMP环境

作者: 活在过去 | 来源:发表于2016-02-14 00:16 被阅读125次

    这篇文章假设你已经购买了云服务器。我这边用的是阿里云。

    LNMP = Linux - NGINX - MySQL / MariaDB - PHP 。

    使用ssh登录云服务器

    ssh root@120.24.3.40
    

    添加用户

    拿到一台服务器,第一件事是去添加一个平时操作用的用户,最好不要直接使用 root 用户,因为会有安全问题。下面添加一个用户叫 yekai :

    adduser yekai
    

    设置密码

    有了 yekai 这个用户以后,可以再设置一下他的密码:

    passwd yekai
    

    root 权限

    给 yekai 用户分配可以使用 root 用户的权限,这样需要 root 权限的时候,可以在命令前面添加 sudo:

    gpasswd -a yekai wheel
    

    配置 SSH

    平时要 SSH 到服务器,然后去控制服务器,连接的时候有个默认的端口,为了安全,我们可以修改一下这个端口号,比如改成 3333:

    vi /etc/ssh/sshd_config
    
    # 修改为
    # ssh登录端口改为3333
    Port 3333
    # 不允许用root登录
    PermitRootLogin no
    
    # 重载服务
    systemctl reload sshd.service
    

    SWAP

    内存用完了就会用虚拟内存,SWAP 就是虚拟内存,不得已的时候才会用到。一般虚拟内存的大小是物理内存的两倍,下面的命令会添加一个 2G 的 SWAP:

    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'
    

    防火墙

    防火墙可以控制进入到服务器或者从服务器出去的数据,CentOS 7 上自带一个 firewalld。

    # 开启 firewalld 服务:
    sudo systemctl start firewalld
    
    # 开放 SSH 自定义的端口
    sudo firewall-cmd --permanent --add-port=3333/tcp
    
    # 开放 HTTP
    sudo firewall-cmd --permanent --add-service=http
    
    # 开放 HTTPS
    sudo firewall-cmd --permanent --add-service=https
    
    # 开放 SMTP
    sudo firewall-cmd --permanent --add-service=smtp
     
    # 查看
    sudo firewall-cmd --get-services
    sudo firewall-cmd --permanent --list-all
     
    # 重载服务
    sudo firewall-cmd --reload
     
    # 开机启动
    sudo systemctl enable firewalld
    

    挂载

    sudo fdisk -l
    
    # 发现
    /dev/xvdb: 32.2 GB
    
    sudo fdisk /dev/xvdb
    
    # 按键
    n, p, 1, enter, enter, n, enter, enter, wq
    
    sudo fdisk -l
    
    # 发现
    /dev/xvdb1
    
    sudo mkfs.ext3 /dev/xvdb1
    
    # 把
    /dev/xvdb1 /mnt ext3 defaults 0 0
    
    # 添加到
    etc/fstab
    
    sudo mount -a
    

    NGINX

    web服务器

    # 安装
    sudo yum install nginx -y
    # 安装好以后测试一下 nginx 服务
    service nginx status
    
    # 启动
    sudo systemctl start nginx
    
    # 设置为开机自动启动
    sudo systemctl enable nginx
    
    # 配置
    client_max_body_size 256m;
    fastcgi_read_timeout 600;
    

    在浏览器用公网地址打开看到如下信息nginx安装成功:


    nginx页面

    配置 nginx 虚拟主机

    cd /etc/nginx/conf.d
    
    cp ../nginx.conf.default nginx.wk.net.conf
    

    再去编辑一下这个复制以后的配置文件,可以使用 vim 命令:

    vim nginx.wk.net.conf
    

    你会看到像这样的代码:

    server {
     listen 80;
     server_name localhost;
     #charset koi8-r;
     #access_log   /var/log/nginx/log/host.access.log main;
     location / {
     root /usr/share/nginx/html;
     index index.html index.htm;
    }
    ...
    }
    

    server_name 就是主机名,也就是跟这个虚拟主机绑定在一块儿的域名.
    紧接着 server_name 下面可以是一个 root,就是这个虚拟主机的根目录,也就是网站所在的目录。
    然后去掉 location / 里面的 root 这行代码。再在 index 后面加上一种索引文件名,也就是默认打开的文件,这里要加上一个 index.php ,这样访问 nginx.ninghao.net 就可以直接打开 root 目录下面的 index.php 了。
    修改后的conf如下:

      server {
            listen       80;
            server_name  nginx.wk.net;
            root /home/www/nginx.wk.net;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                index  index.php index.html index.htm;
            }
    

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

    service nginx reload
    

    安装mysql

    CentOS7的yum源中默认好像是没有mysql的.我们要先下载mysql的repo源。

    # **下载mysql的repo源**
    $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    # ** 安装mysql-community-release-el7-5.noarch.rpm包**
    $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    
    

    直接使用 yum 命令去安装 mysql

    # 安装mariadb服务
    yum install mariadb mariadb-server
    # 安装完成后
    # 启动
    sudo systemctl start mariadb
    
    # 设置为开机自动启动
    sudo systemctl enable mariadb
    
    # 上面两个命令在我的阿里云服务器都不行我是用systemctl start mysql
    

    然后我们需要简单配置一下 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 表示愿意。
    ***
    

    配置 php-fpm

    要让 nginx 能够执行 php 文件,需要去安装一下 php-fpm,它直接包含在了 CentOS 资源库里,所以直接使用 yum 命令可以安装它:

    sudo yum install php-fpm -y
    #安装php扩展
    sudo yum install php-gd php-mysqlnd php-pdo php-mcrypt php-mbstring php-xmlrpc php-pecl-jsonc php-pecl-memcached -y
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
    
    

    相关文章

      网友评论

          本文标题:如何搭建LNMP环境

          本文链接:https://www.haomeiwen.com/subject/zviukttx.html