🦄 2024 独立开发者训练营,一起创业!(早鸟优惠在2天后结束)查看介绍 / 立即报名 →

搭建 Web 运行环境 - LEMP 平台

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

添加用户

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

adduser ninghao

设置密码

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

passwd ninghao

root 权限

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

gpasswd -a ninghao wheel

配置 SSH

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

vi /etc/ssh/sshd_config

# 修改为
Port 3333
PermitRootLogin no

# 重载服务
systemctl reload sshd.service

SWAP

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

sudo fallocate -l 4G /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

添加仓库

系统自带一些仓库,这些仓库里的软件可能并不是你想要的,有可能版本比较旧。所以你需要安装一些第三方的仓库,这些仓库里会有比较新的软件,比如 ius 仓库。先安装一下 epel 仓库,然后再安装 ius 仓库。下面的 rpm 文件可能会失效,你可以在 IUS 网站的仓库列表里找到最新的下载地址。

sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo rpm -Uvh https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-14.ius.centos7.noarch.rpm

PHP

sudo yum install php56u-fpm -y
sudo yum install php56u-gd php56u-mysqlnd php56u-pdo php56u-mcrypt php56u-mbstring php56u-xmlrpc php56u-pecl-jsonc php56u-pecl-memcached -y
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

配置:

     # PHP-FPM
     vi /etc/php-fpm.d/www.conf
 
     # 减小内存占用
     pm = dynamic
     pm.max_children = 10 原:50
     pm.start_servers = 3 原:5
     pm.min_spare_servers = 1 原 5
     pm.max_spare_servers = 5 原 35
     pm.max_requests = 0
 
     # php.ini
     vi /etc/php.ini
 
     memory_limit 512M
     upload_max_filesize 300M
     post_max_size 300M

NGINX

Web 服务器。

# 安装
sudo yum install nginx -y

# 启动
sudo systemctl start nginx

# 设置为开机自动启动
sudo systemctl enable nginx

配置:

client_max_body_size 256m;
fastcgi_read_timeout 600;

MariaDB

数据库,可以完全代替 MySQL。

# 删除系统自带的 MariaDB
sudo yum remove mariadb-libs

# 安装新的 MariaDB
sudo yum install mariadb100u mariadb100u-server -y

# 启动
sudo systemctl start mariadb

# 设置为开机自动启动
sudo systemctl enable mariadb

Sendmail

发邮件用的小工具。

# 安装
sudo yum install sendmail -y

# 启动
sudo systemctl start sendmail

# 设置为开机自动启动
sudo systemctl enable sendmail

Composer

PHP 包管理工具。

curl -sS https://getcomposer.org/installer | php

echo $PATH
sudo mv composer.phar /usr/local/bin/composer

# 编辑
vi ~/.bash_profile

# 添加
export PATH="$HOME/.composer/vendor/bin:$PATH"

# 执行
source ~/.bash_profile

Git

版本控制工具。

# 安装
sudo yum install git2u -y
 
# 错误
Error: perl-Git2u conflicts with perl-Git-1.8.3.1-4.el7.noarch
Error: git2u conflicts with git-1.8.3.1-4.el7.x86_64
 
# 解决
sudo yum remove perl-Git-1.8.3.1-4.el7.noarch
 
# 配置
git config --global user.email 117663444@qq.com
git config --global user.name "wanghao8080"

Memcached

sudo yum install memcached -y
sudo systemctl start memcached
sudo systemctl enable memcached

Drush

管理 Drupal 网站用的命令行工具。

composer global require "drush/drush": "7.0.0"

WP-CLI

管理 WordPress 网站用的命令行工具。

# 下载
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# 添加执行权限
chmod u+x wp-cli.phar

# 移动到环境变量目录
sudo mv wp-cli.phar /usr/local/bin/wp
 
# 错误:无法下载
 
# 解决:手工下载并上传
rsync -a -e 'ssh -p 3333' ~/downloads/wp-cli.phar ninghao@x.x.x.x:~/

评论

LNMP....

我看他们老外是叫 LEMP ,因为 NGINX 的发音是 Engine X 。

这个非常好。感谢老王。这个是centos 7 吗?还是不用关心版本?

嗯,需要 CentOS 7 。

看到 是 针对 centos 7

64位的也一样吧Q!

嗯,需要用 64 位的 CentOS 7 。

composer global require "drush/drush": "7.0.0"
出错。改成如下就可以了。
composer global require drush/drush:7.*

好来,按您说的修正了一下 :)

老师是不是应该
# 添加
export PATH="$HOME/.composer/vendor/bin:$PATH"
# 执行
source ~/.bash_profile

细心 :)

建议“:”的前面放全局变量“$PATH”

皓哥真猛

皓哥我给你提个想法,像你这样这么会折腾的人,而且折腾的还这么好,
适合做个WEB新技术的门户网站,发布各种新技术新闻、然后测评啥的。

我想自己先多学些东西,然后能跟一伙人一起进步,成为那种牛 x 的人,然后这伙人可以自由组合,去做他们认为有意思的产品。

配置:

client_max_body_size 256m;
fastcgi_read_timeout 600;

的文件和所加位置分别是什么

比如你上传大的东西,需要设置一下 client_max_body_size ,想让 php-fpm 执行更长的时间,可以设置一下 fastcgi_read_timeout 。

之前看过你的视频,lemp全套做完,发现没有一键包的运行速度快,打开速度慢,最后我就用一键包做生产环境,用你的视频里的步骤做的环境来做开发环境。

我的问题是lemp的优化都应该有哪些步骤?

比如您用 Drupal ,可以试试给 PHP 安装一个 Memcached 扩展,再给 Drupal 安装一个 Memcached 模块。

如果是用laravel 要哪些呢?我想把可能会用到的优化都做了。memcached 应该是必装了吧?

我觉得可以参考 Laravel 官方的 Homestead 去配置需要的环境。

sudo yum install php56u-gd php56u-mysqlnd php56u-pdo php56u-mcrypt php56u-mbstring php56u-xmlrpc php56u-pecl-jsonc php56u-pecl-memcached -y

这些插件是php环境必须装的,还是优化php环境的还是有些cms用到这些插件?

这些是基本扩展,很多应用都需要,除了最后的 memcached 。

http://ninghao.net/blog/1368
看的是老教程,结果我用的 centos 7,在安装 mysql 的时候卡了好久。建议在老教程中写一下“如果你使用 centos 7 请跳转到新教程”。

添加仓库都成功了,但是安装php的时候cannot find a valid baseurl for repo,咋解决呀。

现在 ius 仓库的地址换了,您在安装的时候可以这样:sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y ,上面安装的是适合在 centos 7 上使用的仓库,您不需要再单独安装 epel 了,因为这个仓库依赖 epel ,所以会自动给你安装好。

现在安装了 ius 仓库以后,会提供两个版本的 php,一个是 php56u(php 5.6),一个是 php70u(php 5.7)。

好像没有看到收藏之类的图标,有时候看到有用的文章想收藏都没有办法。后面找起来好麻烦。

嘿嘿。暂时先记到自己的笔记应用里吧 :)

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点