centos7系统初初始化工作以及网站环境搭建(php7+nginx+mysql)

拿到一台做网站的主机, 我们先要做一些环境初始化的工作, 由于这些工作会有些繁琐,因此记录一下. 后面将这些流程写成一个shell脚本,一次性完成.此次工作流程如下:

  1. 安全性设置
  2. 额外的目录创建
  3. 网站环境搭建

安全性设置

一般从某云上买的主机, 默认账户是root, 为了不被暴力破解, 我们首先需要设置一个强一点的密码,不过更好的方法是禁用root, 另外创建一个用户来作为日常管理的账户.

第一步: 创建一个新的账户,并且能够切换到root权限

比如我的用户名叫xiaobai, 添加用户名就是

useradd xiaobai

设置密码

passwd xiaobai

之后输入密码,一个新的账户就设定好了. 然后我们需要做的就是让这个用户拥有root权限, 要达到这个目的,我们需要编辑 /etc/sudoers(假设你已经会使用vim了)

找到 root ALL=(ALL) ALL, 在这一行的下一行添加

xiaobai ALL=(ALL) ALL

之后保存推出,xiaobai这个用户已经拥有root权限了!

第二步: 禁止root用户登录

因为我们已经拥有了xiaobai用户,并且这个用户有了root权限(为了安全,建议在之前先用xiaobai账户试一下), 因此现在需要禁止root用户登录.要达到这个目的,我们需要修改 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 这一行,原来应该是

PermitRootLogin yes

或者是

#PermitRootLogin yes

我们要改成

PermitRootLogin no

意思就是不允许root登录的,现在不允许了. 改完了之后重启一下sshd, centos7下面使用

systemctl restart sshd

之后用root就再也登录不上了, 只能用xiaobai账户登录.

建立一些用户和目录

前面说了,我是要建立一些网站,因此需要建立一些目录来存放,为了规划好这台机器,我把所有的网站都放在/data/sites下面,所以我需要建立一些目录以及给这些目录分配用户组.

创建目录很简单

mkdir /data
mkdir /data/sites

 

目录创建之后默认的拥有者是创建者,因此如果之后我们将网站放在里面,会出现nginx或者php-fpm无权限读取的问题,因此我们需要另外创建用户以及用户组.

添加用户,并且让这个用户不能登录

useradd www -s /sbin/nologin

这里我们添加了一个www用户,-s就是指定用户登录的脚本,这里用了/sbin/nologin,表示用户登录之后是用不了shell的,因此也就不能做任何操作,相当于用户不能登录.

现在我们把data下面所有的目录和文件的拥有者都改成www

chown -R www.www /data

网站环境搭建

实际上这一步就是安装软件和配置软件的过程

我们所需要安装的基础软件有 php7, nginx, mysql, memcached

安装php7

因为centos7的源没有php7,所以这里采用编译安装,安装的方法我在另一篇文章有记录,不过这里还是简单说一些.

首先安装依赖的软件

yum -y install gcc libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

下载php源代码

wget http://jp2.php.net/get/php-7.0.30.tar.gz/from/this/mirror

解压

tar -xvf mirror

解压之后会看到php-7.0.30的目录,进入,然后进入编译流程,编译很简单,按照下面的指令就可以成功,下面的编译配置是一个php网站运行的比较完整的环境了.

./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-config-file-scan-dir=/usr/local/php7/etc/php.d \
--with-mcrypt=/usr/include \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache

配置完毕之后,就可以开始编译安装了

make && make install

到现在,我们已经将php安装到了/usr/local/php7里面了.

现在要做的工作就是配置php-fpm以及将php-fpm做成服务启动,并且开机重启.

首先需要配置一下php.ini, php-fpm.conf, 这两个文件都是php自带的,我们直接复制过去就可以

进入到php的源码, 里面会有php.ini-production, 复制过来

cp php.ini-production /usr/local/php7/etc/php.ini

然后在/usr/local/php7/etc/里面有php-fpm.conf.default, 先cd到这个目录, 然后复制php-fpm.conf.default为php-fpm.conf

cp php-fpm.conf.default php-fpm.conf

在php-fpm.d下面有一个www.conf.default, 同样复制成www.conf

cp www.conf.default www.conf

为了让php-fpm能够用systemctl管理,我们需要编写php-fpm.service文件,并且放到/usr/var/systemd/system/里面. 在配置这个之前,我们需要知道php-fpm运行所产生的pid文件在哪儿, 只有这样, 才能对php-fpm进程进行重启,关闭等操作.

查看php-fpm.conf文件,发现是这样

;Pid file
; Note: the default prefix is /usr/local/php7/var
; Default Value: none
; pid = run/php-fpm.pid

接下来去掉pid这行的注释就可以了, 现在的pid文件在/usr/local/php7/run/php-fpm.pid

vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/usr/local/php7/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target

到现在, php-fpm已经可以用systemctl管理了,使用systemctl start php-fpm启动systemctl stop php-fpm 停止 systemctl restart php-fpm 重启, 开机自动启动systemctl enable php-fpm

下面是systemctl的一些指令

systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

安装nginx

nginx安装就简单了,直接 yum安装

yum install nginx

在nginx使用的时候,可能会出现上传文件500的问题, 这可能是因为更改了运行nginx的用户,需要同时设置/var/lib/nginx 这个目录的所属用户.

安装mysql

centos7里面的mysql已经被替换成了mariadb了,因此安装的命令是

yum install mariadb mariadb-server

安装完毕使用mysql_secure_installation来设定初始化密码以及其他的安全设定, 过程可以根据提示填写.

安装memcached

yum install memcached

到现在,所有的环境已经安装好!

 

你可能还喜欢下面这些文章

开始使用varnish

本文假设你已经安装了varnish了,如果还没安装,那么请看前面的varnish的安装来安装varnish吧!下面的命令将会启动varnishservice varnish start现在你的varnish已经运行了,让我们确保它已经在工作吧!打开浏览器,在地址栏中输入http://127.0.0.1:6081/(你需要把ip替换成你的机器ip)默认的配置将会尝试将请求转发到该台机器上的8080端口上面。如果该台机器上面没有web服务,varnish将会返回Error 503 Service Unavailable。你的web应用可能运行在其他端口或者其他的机器,这需要编辑varnish的配置

varnish的基本工作原理

Varnish是一个HTPP反向代理缓存,它接受来自客户端的请求并试图从缓存中取出相应的数据来应答,如果缓存中并没有相应的数据,它将会把请求指向后端机器,获取并且储存响应的数据,之后再交付给用户。当varnish有缓存的时候响应通常只需要几微秒的时间,比直接访问后端机器通常要快两个数量级,所以要做的就是尽可能的将页面缓存到varnish中。varnish可以根据后端响应的内容来决定是否储存,在响应头中加入cache-control将会被varnish缓存。使用cookie可以让varnish不缓存。这些都是可以在一个vcl的配置文件( Varnish Configuration Languag

linux命令:cd命令,改变当前的工作目录

原标题 : 每天一个linux命令(2):cd命令Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。命令格式cd 命令功能切换当前目录至dirName常用范例例一:进入系统根目录命令cd /输出# cd /说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了命令cd .. 或者 cd .. //输出:# pwd/opt/soft# cd ..# cd ..//# pwd/说明:进入系统根目录可以使用“ cd .. ”一直退,就

第一个shell脚本,hello shell

Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种 就足够了。在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统

赞赏

微信赞赏支付宝赞赏

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注