1、安装工具
yum install gcc gcc-c++ glibc make
2、创建安装目录
在服务器根目录下创建一个目录(alidata),在 alidata 目录里分别创建 server 、webapps 、download,其中server目录存放所有的服务器软件(nginx、php、mysql等),webapps目录存放所有部署的代码及程序,download目录存放下载文件。
下面依次执行以下命令:
mkdir /alidata
mkdit -p /alidata/download
mkdit -p /alidata/server
mkdit -p /alidata/webapps
3、编译安装Nginx
3.1、为nginx添加用户及组
groupadd -r www
useradd -r -g www www
3.2、安装pcre
安装 pcre 这里使用 yum 安装
yum install pcre
yum install pcre-devel
3.2、安装zlib
安装 zlib 这里也使用 yum 安装
yum install -y zlib
yum install -y zlib-devel
3.3、下载并安装Nginx
Nginx 官网:http://nginx.org/
依次执行以下命令:
cd /alidata/download
wget http://nginx.org/download/nginx-1.15.3.tar.gz
tar -zxvf nginx-1.15.3.tar.gz
以上命令执行完成下载和解压,接下来进行安装操作:
cd nginx-1.15.3/
./configure --prefix=/alidata/server/nginx
make && make install
执行完 make && make install 命令后,即安装成功。
3.4、启动Nginx
启动 nginx 服务,需进入 nginx 安装后的目录,在sbin目录下启动 nginx 服务。
依次执行以下命令:
cd /alidata/server/nginx
./sbin/nginx
停止 nginx 服务,执行以下命令:
./sbin/nginx -s stop
3.5、添加Nginx为系统服务
使用 vim 命令在 /etc/init.d/ 目录下创建一个 nginx 文件,命令如下:
vim /etc/init.d/nginx
在里面添加以下代码:
注意,有两个地方需要修改成安装时的路径。
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/alidata/server/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/alidata/server/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
3.6、修改其权限并开机启动
3.6.1、修改权限:
chmod 755 /etc/init.d/nginx
3.6.2、开机启动:
chkconfig nginx on
3.6.3、查看开机启动的服务:
chkconfig --list
3.7、nginx相关命令
启动服务:service nginx start
停止服务:service nginx stop
重读配置:service nginx reload
重启服务:service nginx restart
服务状态:service nginx status
文件测试:service nginx configtest
4、安装PHP
4.1、安装PHP需要的常用库
依次执行以下命令:
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel
4.2、下载并安装PHP
PHP 官网:http://php.net/
依次执行以下命令:
cd /alidata/download
wget http://cn2.php.net/get/php-7.2.9.tar.gz/from/this/mirror
tar -zxvf mirror
以上命令执行完成下载和解压,接下来进行安装操作:
cd php-7.2.9/
./configure --prefix=/alidata/server/php --with-config-file-path=/alidata/server/php/etc --enable-fpm --with-mcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysqli --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
make
make install
执行完 make && make install 命令后,即安装成功。
4.3、设置PHP配置文件
将官方提供的配置模板拷贝到配置参数中所指定的目录中
cp /alidata/download/php/php.ini-production /alidata/server/php/etc/php.ini
4.4、设置php-fpm配置文件
依次执行以下命令:
cd /alidata/server/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /alidata/server/php/etc/php-fpm.d
cp www.conf.default www.conf
使用vim命令对php-fpm.conf的内容进行如下修改:
pid= /alidata/server/php/var/run/php-fpm.pid
使用vim命令对www.conf的内容进行如下修改:
user = www
group = www
listen = 127.0.0.1:9000
其他配置可根据自己的情况进行相应修改。
4.5、启动php-fpm
完成以上配置后,即可启动 php-fpm,执行以下命令:
/alidata/server/php/sbin/php-fpm
启动后,使用:
ps aux | grep php-fpm
命令查看进程,若能够看到相关进程,则证明启动成功。查询进程时,可以看到进程是以www用户身份执行的。
4.6、加入系统环境变量
使用vim命令打开/etc/profile文件,在文件最末尾加上如下代码:
export PHP_HOME=/alidata/server/php
export PATH=$PATH:$PHP_HOME/bin:$PHP_HOME/sbin
保存修改后,使用source命令重新加载配置文件,命令如下:
source /etc/profile
执行上述命令后,可使用:
echo $PATH
命令查看环境变量中是否已经加入了相关的路径。
4.7、添加PHP为系统服务
使用 vim 命令在 /etc/init.d/ 目录下创建一个 php-fpm文件,命令如下:
vim /etc/init.d/php-fpm
文件内容如下:
#!/bin/bash
# php-fpm startup script for the php-fpm
# php-fpm version:7.1.11
# chkconfig: - 85 15
# description: php-fpm
# processname: php-fpm
# pidfile: /alidata/server/php/var/run/php-fpm.pid
# config: /alidata/server/php/etc/php-fpm.conf
php_command=/alidata/server/php/sbin/php-fom
php_config=/alidata/server/php/etc/php-fpm.conf
php_pid=/alidata/server/php/var/run/php-fpm.pid
RETVAL=0
prog="php-fpm"
#start function
php_fpm_start() {
/alidata/server/php/sbin/php-fpm
}
start(){
if [ -e $php_pid ]
then
echo "php-fpm already start..."
exit 1
fi
php_fpm_start
}
stop(){
if [ -e $php_pid ]
then
parent_pid=`cat $php_pid`
all_pid=`ps -ef | grep php-fpm | awk '{if('$parent_pid' == $3){print $2}}'`
for pid in $all_pid
do
kill $pid
done
kill $parent_pid
fi
exit 1
}
restart(){
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
4.8、设置php-fpm开机自启
经过上面的操作,php-fpm已被添加为系统服务,所以可以将其设置为开机自启动,这样就可以避免每次服务器重启之后需要手动开启php-fpm的操作,具体命令如下:
chkconfig --add php-fpm
chkconfig php-fpm on
5、安装MySQL
5.1、安装依赖
yum -y install cmake ncurses-devel bison
5.2、为MySQL添加用户及组
groupadd mysql
useradd -r -g mysql mysql
5.3、下载并安装MySQL
MySQL 官网:https://www.mysql.com/
依次执行以下命令:
cd /alidata/download
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41.tar.gz
tar -zxvf mysql-5.6.41.tar.gz
以上命令执行完成下载和解压,接下来进行安装操作:
cd mysql-5.6.41/
cmake \
-DCMAKE_INSTALL_PREFIX=/alidata/server/mysql \
-DMYSQL_DATADIR=/alidata/serverl/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled
make
make install
执行完 make && make install 命令后,即安装成功。
5.4、设置MySQL配置文件
遍历目录下所有目录和文件,改变 /alidata/server/mysql 下所有的文件拥有者为mysql用户,用户组为mysql。命令如下:
cd /alidata/server/mysql
chown -R mysql:mysql /alidata/server/mysql
初始化mysql:
./scripts/mysql_install_db --user=mysql --basedir=/alidata/server/mysql --datadir=/alidata/server/mysql/data
mysql默认的配置文件路径是 /etc/my.cnf,复制安装自带的默认配置文件过去:
cp support-files/my-default.cnf /etc/my.cnf
配置 /etc/my.cnf:
sed -i 's/# basedir = \.\.\.\.\./ basedir = \/alidata\/server\/mysql/' /etc/my.cnf
sed -i 's/# datadir = \.\.\.\.\./ datadir = \/alidata\/server\/mysql\/data/' /etc/my.cnf
sed -i 's/# port = \.\.\.\.\./ port = 3306/' /etc/my.cnf
sed -i 's/# socket = \.\.\.\.\./ socket = \/var\/run\/mysql\/mysql.sock/' /etc/my.cnf
num=$(sed -n '/socket/=' /etc/my.cnf)
sed -i "$num a[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/run/mysqld/mysqld.pid\n" /etc/my.cnf
cmake的时候把mysql的sock文件指定到/var/run/mysql里符合linux文件目录规范方便日后管理,但是默认没有这个文件夹,手动创建:
mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql
5.5、启动MySQL
./support-files/mysql.server start
5.6、进入MySQL客户端
bin/mysql -uroot -p
进入mysql的客户端后,我们来在客户端里的命令行里给mysql设置root密码,命令如下:
use mysql;
delete from mysql.user where user='';
update user set password=password("123456") where user="root";
flush privileges;
exit
5.7、添加MySQL为系统服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod u+x /etc/init.d/mysqld
以后我们启动mysql服务直接输入,命令如下:
service mysqld start
5.8、设置MySQL开机自启
设置开机自启,命令如下:
chkconfig --add mysqld
把mysql的安装目录下的bin加入环境变量里,命令如下:
echo 'export PATH=/alidata/server/mysql/bin:$PATH'>>/etc/profile
source /etc/profile
以后进入mysql客户端输入下面命令就可以了:
mysql -uroot -p
5.9、MySQL远程连接
进入mysql客户端后,输入以下命令可以实现远程连接:
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
第一个*是数据库,可以改成允许访问的数据库名称
第二个 是数据库的表名称,代表允许访问任意的表
root代表远程登录使用的用户名,可以自定义
%代表允许任意ip登录,如果你想指定特定的IP,可以把%替换掉就可以了
123456代表远程登录时使用的密码,可以自定义
flush privileges;这是让权限立即生效
6、配置Nginx支持PHP
对Nginx进行了多域名配置,每个域名只需要在 /alidata/server/nginx/conf/vhost.conf 文件下配置即可。首先,需要在 /alidata/server/nginx/conf/nginx.conf 配置文件中引入 vhosts.conf 文件,以下代码:
server {
listen 80;
server_name localhost;
autoindex on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
index index.html index.htm index.php;
autoindex on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
include /alidata/server/nginx/conf/vhosts.conf;
}
之后,我们可以在 vhost.conf 文件中添加需要的项目,以下代码:
root /alidata/webapps/phpinfo;
server_name localhost;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
autoindex on;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
配置完成后,重启 nginx ,通过浏览器访问就可以了。
7、注意事项
7.1、nginx配置注意事项
注意:在配置完 nginx 后需要重启,如果再重启过程中提示一下错误:
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
那,我们可以输入以下命令来解决此问题:
/alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf
这样就可以解决此问题了。