阿里云ECS服务器部署Centos7+LNMP环境

具体配置:阿里云ECS+Centos7.2+LNMP+Git+Drush+Drupal8

以下以阿里云ECS的64位Centos7.2配置LNMP教程为例,此环境适用于Drupal8.x及Wordpress的CMS网站搭建及其它需求LNMP环境的网站,具体如下:

  • 服务器:阿里云ECS
  • 系统环境:Centos7.2
  • LNMP环境:Nginx1.10.2+PHP70u+Mariadb101
  • 其它扩展:Memcache+Opcache+Git+Drush
  • 网站平台:Drupal8.x

具体步骤:

  1. 购买阿里云ECS,选择64位Centos7.2
  2. 安装IUS仓库
  3. 安装nginx
  4. 安装mariaDB
  5. 安装PHP/memcached/opcache
  6. 修改PHP配置
  7. 优化Nginx配置文件
  8. 新建Nginx配置文件
  9. 创建网站目录
  10. 安装Composer
  11. 安装Drush
  12. 安装Git
  13. 安装Drupal8

一、购买阿里云ECS

购买原时候配置Centos7.2或者以下版本,我买的是香港的阿里云ECS,如下:

购买成功后,使用cmder或者Xshell用root账户登录服务器:ssh root@ip

cat /etc/redhat-release //查看系统版本

显示:CentOS Linux release 7.2.1511 (Core)

Xshell和WinSCP登录:IP 47.89.45.50 用户名 root 密码 Z88 MYSQL Z88

SSH进入服务器后,还可以修改centos的主机名:

hostnamectl set-hostname newnamereboot  //然后重启centos后就修改成功了

格式化数据盘

如果你购买了数据盘的话就用的上,如果直接用系统盘这一章就不用看,直接到安装IUS吧,我是直接用系统盘搭建网站的,貌似也没什么问题,系统盘存放centos7环境,数据盘存放网站程序等

df -h //查看磁盘情况,无法看到数据盘fdisk -l //查看所有盘

若您执行fdisk -l命令,发现没有 /dev/xvdb 标明您的云服务无数据盘,那么您无需进行挂载及分区,跳过这一步直接部署LNMP即可(阿里云ECS在购买的过程中会有挂载数据盘的链接,如果你的网站数据很小,可以不用买,系统盘就像是Windows的C盘即系统盘,而数据盘就相当于你Windows下的D盘通常系统盘用来存放系统,如果你的网站数据不是很大的话你也可以把程序和数据库放在系统盘,如果网站数据大,就要挂载数据盘。我的网站文件多,数据库不是很大,我把数据库放在系统盘,网站文件例如主程序代码,图片,JS都放在数据盘)

fdisk -S 56 /dev/xvdb

依次输入“n”,“p”“1”,两次回车,“wq”,fdisk -l 命令可以看到,新的分区xvdb1已经建立完成了。

mkfs.ext3 /dev/xvdb1 // 命令对新分区进行格式化echo '/dev/xvdb1 /mnt ext3 defaults 0 0' >> /etc/fstab //写入新分区信息cat /etc/fstab //命令查看,出现以下信息就表示写入成功mount -a //命令挂载新分区df -h //命令查看,出现以下信息就说明挂载成功,可以开始使用新的分区了。

以上做完之后就可以配置LNMP环境了。注意!以下安装配置过程中,最好使用管理员权限,在前面加上sudo

二、安装IUS仓库

连接成功后,安装IUS仓库,这样才能用yum去安装比较新的软件包,获取地址:https://ius.io/GettingStarted

cat /etc/redhat-release //查看系统版本sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y //安装yum repolist //查看仓库列表

三、安装nginx

sudo yum install nginx -y //安装nginxsudo systemctl start nginx //启动nginxsudo systemctl enable nginx //开机自启动

47.89.45.50 //打开浏览器输入,出现nginx说明成功

sudo systemctl reload nginx  //重启如果nginx出现问题,可以先启动,再重启:sudo systemctl start nginxsudo systemctl reload nginx

四、安装mariaDB

数据库消耗大量的内容,至少2G的内存服务器

sudo yum search mariadb //搜索版本sudo yum install mariadb101u-server -y //提示有冲突,先删除原来的资源sudo yum remove mariadb-libs -y //删除原来的资源sudo yum install mariadb101u-server mariadb101u -y //重新执行安装

启动数据库【如果数据库出错,网站打不开(The website encountered an unexpected error. Please try again later.),也可以使用以下两段命令重启数据库试试】

sudo systemctl start mariadb //启动sudo systemctl enable mariadb //开机自启动mysql_secure_installation   //执行安全配置,密码设为root,回答问题全“y”(这个方法也适用于当数据库打不开时,出现登录报错:“ERROR 1045 (28000)”或者其它错误时,如果用了以下命令,可能会删除之前的数据库,得重新导入数据库文件)设置root密码,一直按Y,第一个提示输入root数据库的密码,默认为空,回车mysql -u root -p //测试mysql --version   //查看版本相关信息mysql -u root -p db < db.sql  //导入数据库(将数据库文件db.sql导入到db数据库中,得先用FTP把db.sql上传到当前目录里)mysqldump -u root -p db > db.sql  //导出数据库(导出的数据库文件就在当前目录里)

阿里云RDS(例) 导出MySQL:

mysqldump -u ascm -p -h aoshiyiyuanpai.mysql.rds.aliyuncs.com a>  /alidata/b.sql

进入数据库常用命令

mysql -u root -p  //进入数据库create database xxx;   //创建数据库show databases;  //查看数据库drop database xxx;  //删除数据库exit  //退出数据库mysqladmin -uroot password 'yourpassword'  //更改root密码mysql -uroot -p -h192.168.137.10 -P3306  //远程登陆数据库use xxx;  //进入某个数据库show tables;  //列出数据库中的表desc slow_log;  //查看某个表全部字段show create table slow_log\G;   //显示建表语句select user();  //查看当前用户select database();  //查看当前所在数据库create database db1 charset utf8;  //创建数据库指定字符集create table t1 (`id` int(4), `name` char(40));  //创建新表select version();  //查看数据库版本

为了更安全再创建数据库用户(已进MySQL),然后给这个用户分配可以管理 dbname这个数据库权限(其中“123456”是你为这个用户创建的密码):

grant all privieges on dbname.* to 'username'@'localhost' identified by '123456';

查看MYSQL数据库中所有用户:

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

其它常用命令

当前会话状态:show status; 全局数据库状态:show global status; 查看主从数据库状态信息:show slave status\G;   查询数据库参数:show variables;修改数据库参数:show variables like 'max_connect%';重启数据库会失效,要在配置文件中修改:set global max_connect_errors = 1000;查看当前数据库队列:show processlist;创建普通用户并授权给某个数据库:grant all on databasename.* to 'user1'@'localhost' identified by '123456';查询该表中的所有字段:select * from mysql.db; count(*)表示表中有多少行:select count(*) from mysql.user; 查询表中的多个字段:select db,user  from mysql.db; 在查询语句中可以使用万能匹配 “%”:select * from mysql.db where host like '10.0.%';插入一行数据:insert into db1.t1 values (1, 'abc');更改表的某一行数据:update db1.t1 set name='aaa' where id=1;清空表数据:truncate table db1.t1;删除表:drop table db1.t1;清空数据库中的所有表(数据库名是eab12)mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='eab12'" | mysql -f eab12新建普通用户:CREATE USER name IDENTIFIED BY 'ssapdrow';更改普通用户密码:SET PASSWORD FOR name=PASSWORD('fdddfd');查看name用户权限:SHOW GRANTS FOR name;脚本中执行mysql命令:mysql -uuser -ppasswd -e"show databases"echo "show databases"|mysql -uuser -ppassword

五、安装PHP/memcached/opcache

sudo yum search php | grep php   //搜索安装对应版本sudo yum install php70u-fpm -y   //安装,或者安装其它版本的PHP如php56u-fpmsudo yum install php70u-fpm php70u-cli php70u-xml php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json php70u-opcache php70u-pecl-memcached -y //安装扩展sudo systemctl start php-fpm  //启动sudo systemctl enable php-fpm   //开机自启php-fpmsudo systemctl reload php-fpm //重新加载php-fpmnetstat -tunpl  //查看memcached进程是否开启

注:安装memcached后,性能就会有极大的改善。opcache是 php 的一个扩展,安装后可提升性能,opcache不需要在php.ini中写,安装完默认开启。安装drupal或者其它CMS时,遇到没有opcache会无法安装,参考宁皓网这个教程:https://ninghao.net/video/3588

六、修改PHP配置

cd /etc 找到php.ini文件,修改以下几点,使PHP与Drupal更好的结合

;加大页面执行时间php.ini中的默认值是30 (秒)max_execution_time = 300post_max_size = 200Mupload_max_filesize = 200M;内存的1/4这里必须注意,设置太多会崩溃,因为还有其他程序要用内存,查看内存:free 或者topmemory_limit = 512M  ;tmp是服务器根目录777权限,drupal cc all后查看drupal是否还提示上传未知错误upload_tmp_dir = tmp;中国时区设置date.timezone = PRC改好后保存再重启sudo systemctl reload php-fpm //重新加载

七、优化Nginx配置文件

这个可以忽略,建议在修改之前先备份一下原来的nginx.conf这个文件,如果修改后出现问题,再恢复回来。到 /etc/nginx 找到nginx.conf文件,实行优化,以2核CPU为例,1核CPU不要用!

user nginx;error_log /var/log/nginx/error.log;pid /run/nginx.pid;worker_processes 2;worker_rlimit_nofile 204800;worker_cpu_affinity 00000001 00000010;events {use epoll;worker_connections 204800;}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 4k;fastcgi_buffers 8 4k;fastcgi_busy_buffers_size 8k;fastcgi_temp_file_write_size 8k;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;gzip_vary on;include /etc/nginx/mime.types;default_typeapplication/octet-stream;include /etc/nginx/conf.d/.conf;server {listen   80 default_server;listen   [::]:80 default_server;server_name  _;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/.conf;location / {}   location ~* ^.+.(ico|gif|jpg|jpeg|png)$ {access_log   off;expires  30d;}location ~* ^.+.(css|js|txt|xml|swf|wav)$ {access_log   off; expires  24h; }location ~* ^.+.(html|htm)$ {expires  1h;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}}

八、新建Nginx配置文件

在 /etc/nginx/conf.d 新建web.conf文件,第一个location为网站静态配置,第二个location是让nginx处理php,192.168.33.10这个IP是你之前在Vagrantfile文件里配置的IP。

server{  listen80;  server_name   192.168.33.10;  root  /home/site;  index index.php index.html;  location / {index index.php index.html;try_files $uri $uri/ /index.php?$query_string;}  location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi.conf;}}

九、创建网站目录

ssh @ip 到服务器后,使用 cd ../ 查看centos7的相关目录,能看到如下目录:

bin   dev  home  lib64  media  opt   root  sbin  sys  usrboot  etc  lib   lost+found  mntproc  run   srv   tmp  var

建议把你的网站放到home或者mnt的下面,以home为例:

sudo mkdir -p /home/mysitesudo chmod 755 mysite //读取权限,否则网站访问不了php权限

然后你就可以把你的网站文件放到mysite里,再重启相关服务,没问题的话,网站就可以打开了:

sudo systemctl reload php-fpmsudo systemctl reload nginx

十、安装Composer

参考:

先安装composer依赖的php插件,如果之前在安装php插件时安装过就不用再安装了

sudo yum install php70u-cli -y

使用包管理来安装composer:

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

ls查看,会看到下载一个composer.phar文件,输入:php composer.phar会出现一些帮助信息。如果你想在服务器的任何地方去使用的话需要去设置一下,把composer.phar 这个文件放在系统的环境变量里面的某个目录里面,全局使用!

echo $PATH //查看环境变量路径sudo mv composer.phar /usr/local/bin/composer  //好了后可以直接输入 composer 可以看到很多信息表明成功!vi ~/.bash_profile

追加到PATH后面 把原来的:PATH=$PATH:$HOME/bin 换成:PATH=$PATH:$HOME/bin:$HOME/.composer/vendor/bin 让文件生效:

source ~/.bash_profile

十一、安装Drush

安装drush,指定安装8.x版本。使用 composer 在国内下载会比较慢,需要等挺长时间,所以本地安装很难成功。加上一个--prefer-dist表示我们不想去下载带版本控制的东西,再加上一个 -vvv可以显示在安装过程中的更详细的信息,最后再加上一个--profile显示耗费的内存还有时间,composer 会去找出 drush 还有它依赖的东西)

composer global require drush/drush:8.x --prefer-dist -vvv --profile

完成以后我们可以去看一下,先进入到用户的主目录下面:

ls -la

查看一下这个目录里的东西,有一个 .config 的目录,你会看到一个 composer 目录,再进入到composer这个目录下地vendor:

cd .config/composer/vendor

在这个目录里面,你会看到 composer 下载下来的drush ,还有一些其它的东西,把这个目录下面的 bin 这个目录,添加到系统的环境变量里面,可以去编辑一下主目录下面的.bash_profile

vi ~/.bash_profile

进入编辑模式后插入一条代码:

export PATH="$HOME/.config/composer/vendor/bin:$PATH"

保存并退出后然后再用 source 去执行一下.bash_profile:

source ~/.bash_profile

查看drush:

drush  //跟 drush 命令相关的帮助信息说明证明可以去使用 drush 了drush status   //会显示一些状态信息,这里会有 PHP 的地址,配置文件,drush 的版本等等

十二、安装Git

可能要用到git,所以顺便安装一下:

yum search gitsudo yum install git2u -y  //安装sudo yum remove git-core -y  //若有提示冲突,删除冲突的包再执行安装git config --global user.name "feng"  //告诉Git你是谁git config --global user.email "54370478@qq.com"  //告诉Git你的 Email

另外顺便提一下一键LNMP:https://oneinstack.com/install/ 这种方法可让你快速部署网站,少了很多麻烦,不用自己折腾的死去活来。但是,我还是提倡大家自己动手,丰衣足食!别人的永远是别人的,只有自己掌握才是自己的,才是熟悉的,所以,我不推荐使用一键LNMP。

十三、安装Drupal8

有两种方式,一种是直接下载的上传到网站目录里,第二种是用drush来下载。

直接下载:

Drush下载:

例如,我们的网站目录是放在/home/site里的,进入到这个目录后,用以下命令下载:

drush dl drupal  //下载最新drupal

解压到网站目录:

下载好了就把drupal解压到/home/site目录里(如果是zip文件就用以下命令解压,如果是用drush下载的就不用解压,因为drush已解压好了):

unzip drupal8.zip

打开网站:

然后在浏览器里输入你在Vagrantfile中配置好的IP打开进行drupal安装,例如我配置的IP是:192.168.33.100,在安装时若需要安装简体中文就可以提前在官网上下载好,然后放入网站目录里site/default/files/translations里面,再刷新: https://localize.drupal.org/translate/languages/zh-hans

安装示例:

在安装drupal8网站前,必须先进入数据库建立一个新的数据库名称,比如你建立了一个名为“ss”的数据库,在安装drupal时在数据库名称这栏就填写你新建的数据库名称即可。以下为例:

  • 数据库名称:ss
  • 数据库用户名:root
  • 数据库密码(填写你当初安装mrialDB时设置的数据库密码,我这里设置的是root):root界面表单信息如下:

修改权限:

OK,网站现在可以了,我们可以试着在drupal上安装扩展,但发现在线或者下载了都不能安装,这是因为权限的问题,批量修改文件夹及文件用户权限和用户组权限,在[vagrant@locahost sites]$下

查看用户及用户组权限    ls -lh批量修改目录下所有文件的用户为root    chown -R root *批量修改目录下所有文件,用户组为root    chown -R :root *Centos 设置目录及文件权限,现在我们要把sites这个目录的权限改成可读写的权限chown -R 777

用drush管理模块

drash 命令大全:

 pm-disable (dis)         禁用模块    pm-download (dl)        下载模块    pm-enable (en)            Enable one or more extensions (modules or themes).  pm-info (pmi)            查看模块的相关信息 pm-list (pml)             显示一个模块列表  pm-projectinfo (pmpi)    Show a report of available projects and their extensions.   pm-refresh (rf)         刷新升级的状态报告 pm-releasenotes        Print release notes for given projects. pm-releases (rl)        Print release information for given projects.   pm-uninstall (pmu)        卸载指定的模块  pm-update (up)            升级 drupal 核心 pm-updatecode (upc)    Update Drupal core and contrib projects to latest recommended releases. pm-updatestatus        Show a report of available minor updates to Drupal core and contrib projects.   runserver (rs)            Runs PHP's built-in http server for development.

drush下载drupal版本

drush dl drupal            下载最新drupaldrush dl drupal-8        下载drupal8的最新版本

drush升级drupal核心

drush rf                        升级前,用空上命令刷新一下更新的信息drush pm-updatestatus            查看可用更新drush vset maintenance_mode 1    可以打开维护模式drush up drupal                    升级drupal核心drush up ctools -y                如果有模块需要升级可以用drush vset maintenance_moda 0    最后,关掉维护模式

drush操作模块相关命令

如果下载模块的话,命令工具进入到相应的文件夹里:

drush dl ctools                下载叫ctools的模块到drupal(推荐版本)drush dl ctools --select    可选择ctools这个模块的相关版本drush pmi ctools            查看ctools这个模块的相关信息drush en ctools                启用这个模块drush dis ctools            禁用这个模块(只mv适用drupal7)drush dis ctools    -y        禁用这个模块时确认的窗口全选yes(只适用drupal7)drush pmu ctools -y            卸载这个模块

备份与恢复

如果要备份网站的话,执行以下命令会把网站所有文件及数据库打包成一个文件放在/root/drush-backups/archive-dump里面:

drush archive-dump

进到这个目录里,执行以下命令可以解压这个压缩包里的文件:

tar -zxvf filename.tar.gz

删除网站执行以下命令:

sudo rm -rf webname

删除网站数据库执行以下命令:

mysqladmin -u root -p drop databasename;

创建一个数据库执行以下命令:

mysqladmin -u root -p create databasename;

如果要恢复网站的话,先进到网站备份相应的目录,执行以下命令:

drush archive-restore ./webname.tar.ga --destination=/www/webname

--destination=/www/webname这行命令表示你恢复的网站文件所放的位置

导入导出数据库

在导出数据库之前,先清缓存:

drush cc        选择全部清空:2

导出数据库执行以下命令(放到主目录下):

drush sql-dump > ~/adname.sql

导入数据库执行以下命令:

drush sql-cli < ~/adname.sql

导出导入的sql文件都放在root目录下!

下载Drupal8常用模块

drush dl backup_migrate ctools flag flippy honeypot imce inline_entity_form l10n_client module_filter pathauto rules site_verify smtp token typed_data wechat entity_clone entity_browser entity embed ds sitemap views_slideshow

下载Drupal8常用主题

drush dl adminimal_theme omega bootstrap

下载并安装Drupal7常用模块

drush en views views_ui views_slideshow block_class ckeditor ctools imce r4032login token simplehtmldom addanother back_to_top ajax_comments node_clone devel_themer devel simplehtmldom module_missing_message_fixer pathauto libraries date webform wysiwyg google_analytics entity backup_migrate link captcha jQuery_update sitemap module_filter rules l10n_update flag smtp commerce inline_entity_form commerce_fancy_attributes field_group commerce_extra_price_formatters commerce_discount content_access -y

下载Drupal7常用主题

drush dl adminimal_theme omega bootstrap

注意事项:

在阿里云上解决drupal安装过程中文件不能files和settings.php不能读写的问题,在用Xshell进入到服务器后键入:

chmod -R 777 /alidata/www/default/sites/imgchmod -R 777 /alidata/www/default/sites/tempchmod -R 777 /alidata/www/default/sites/default/fileschmod -R 777 /alidata/www/default/sites/default/settings.php

把文件转成只读,在用Xshell进入到服务器后键入:

chmod -R 444 /alidata/www/default/sites/default/settings.php

一键LNMP

顺便介绍一种一键LNMP的快速方法:https://oneinstack.com/install/ 这种方法可让你快速部署网站,少了很多麻烦,而且它们也做的比较全面和科学,不用自己折腾的死去活来,对于一个新手来说非常实用,当然对于老手也实用。不过,如果非要想自己折腾的话,以下我也根据自己以往的经验和网上的一些教程捣腾出一套不错的方法,供大家参考及尝试!不过,我还是推荐自己动手,丰衣足食!别人弄的来的东西里面总是夹带很多垃圾,用起来未必好用。