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

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

 

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

记录一次编译安装php7的过程,以后当做参考

赞赏

微信赞赏支付宝赞赏

发表评论

您的电子邮箱地址不会被公开。