nginx
安装前准备
安装编译环境
yum -y install gcc gcc-c++ wget
yum -y
install
zlib zlib-devel openssl openssl
-devel pcre pcre-devel
yum -y install automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed
# 创建 nginx 用户useradd nginx -s /sbin/nologin -M
#下载安装包
wget
http:
//nginx.org/download/nginx-1.10.3.tar.gz
#解压
tar
-zxf nginx-
1.10
.
3
.
tar
.gz cd nginx-
1.10
.
3
#配置安装参数
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/sbin/nginx \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_v2_module \
--with-threads \
--with-stream \
--with-stream_ssl_module
#安装
make
make install
ln -s /usr/local/nginx /etc/nginx
# 使用 nginx -V 可以查看编译是的参数[root@crazy-acong ~]# /etc/nginx/sbin/nginx -Vnginx version: nginx/
1.10
.
3
built by
gcc
4.4
.
7
20120313
(Red Hat
4.4
.
7
-
11
) (GCC) built with OpenSSL
1.0
.1e-fips
11
Feb
2013
TLS SNI support enabled# 检查配置文件语法,可以防止因配置错误导致网站重启或重新加载配置等对用户的影响[root@crazy-acong nginx-
1.10
.
3
]# nginx -tnginx: the configuration
file
/etc/nginx/
conf/nginx.conf syntax is ok
nginx: configuration
file
/etc/nginx/
conf/nginx.conf test is successful
启动nginx
/usr/local/sbin/nginx
用ps aux来查看nginx是否启动
ps aux|grep nginx
然后配置服务
vim /usr/lib/systemd/system/nginx.service
按i输入以下内容
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/sbin/nginx -t -c /etc/nginx/conf/nginx.conf
ExecStart=/usr/local/sbin/nginx -c /etc/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=trusys
[Install]
WantedBy=multi-user.target
编辑好后保存
然后开启开机启动
systemctl enable nginx.service
用命令关掉nginx
pkill -9 nginx
后面可以用systemctl来操作nginx.service
systemctl start nginx.service
然后php装好后更改配置
编辑/etc/nginx/nginx.conf
安装php
下载对应的版本
yum
-y
install
libxml2
yum
-y
install
libxml2-devel
yum
-y
install
openssl
yum
-y
install
openssl-devel
yum
-y
install
curl
yum
-y
install
curl-devel
yum
-y
install
libjpeg
yum
-y
install
libjpeg-devel
yum
-y
install
libpng
yum
-y
install
libpng-devel
yum
-y
install
freetype
yum
-y
install
freetype-devel
yum
-y
install
pcre
yum
-y
install
pcre-devel
yum
-y
install
libxslt
yum
-y
install
libxslt-devel
yum
-y
install
bzip2
yum
-y
install
bzip2
-devel
./configure \
--prefix=/usr/local/php \
--with-curl \
--with-freetype-
dir
\
--with-gd \
--with-gettext \
--with-iconv-
dir
\
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-
dir
\
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png-
dir
\
--with-jpeg-
dir
\
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-bz2 \
--with-mhash \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
-enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-
zip \
--enable-opcache #5.5 以上版本
实际上这里的配置项比上述还多,可以使用
./configure --help
命令查看所有选项,这里注意在php7中--with-mysql原生支持已经不存在了,操作都变成mysqli或者pdo了;以上这些选项在正常的php开发中完全够用了,后期如果需要,可以选择手动开启相应的模块
然后执行编译:
make
编译时间可能会有点长,编译完成之后,执行安装:
make
install
php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件:
cp
php.ini-development /usr/local/php/lib/php.ini
cp
/usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp
sapi/fpm/php-fpm /usr/local/bin
然后设置php.ini,使用:
vim /usr/local/php/lib/php.ini
打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0
设置完毕保存并退出
另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意
如果此时随便在一个位置添加,那么接下来启动php-fpm的时候,会报目录找不到的错误,所以不要在php-fpm.conf中添加用户和组,这个时候翻到php-fpm.conf最后一行会发现如下内容(如果编译时添加--prefix选项以下位置会自动补全,默认是下面是空的,要注意):
这里引入了php-fpm.d目录下所有的conf配置文件,但是NONE需要修改为我们的实际目录:/usr/local
默认情况下etc/php-fpm.d/下有一个名为www.conf.defalut的配置用户的文件,执行下面命令复制一个新文件并且打开:
cp
/usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.confvim /usr/local/php/etc/php-fpm.d/www.conf
默认user和group的设置为nobody,将其改为www-data
修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:
/usr/local/bin/php-fpm
修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务:
/usr/local/bin/php-fpm
启动完毕之后,php-fpm服务默认使用9000端口,使用
netstat -tln |
grep
9000
可以查看端口使用情况:
9000端口正常使用,说明php-fpm服务启动成功
然后执行
vim /usr/local/nginx/conf/nginx.conf
编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:
然后配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容:
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
修改完上面的,回到nginx.conf第一行,默认是#user nobody; 这里要去掉注释改为user nginx;或者user nginx nginx;表示nginx服务器的权限为nginx
修改完这些保存并退出,然后重启nginx:
/usr/local/nginx/nginx -s stop/usr/local/nginx/nginx
安装mysql
yum
-y
install
perl
-Module-Install.noarch
:http://www.mysql.com/downloads/,页面最上面是企业版,一般个人或者企业使用社区版就足够了,页面拉到最下方可以看到下载入口:
点击链接进入,然后选择第一项进入:
这里默认是5.7.11的版本,我们选择5.6的下载链接进入:
进入后,默认版本就是5.6.19,对于版本这里选择Linux - Generic,也就是通用的二进制版本
然后上面都是RPM的包,我们拉到页面最下方根据操作系统位数选择.tar.gz的包,这里选择64位的mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
释放归档文件:
tar
-xvzf mysql-
5.6
.
29
-linux-glibc2.
5
-x86_64.
tar
.gz
建立mysql目录并移动至安装目录:
mkdir
/usr/local/mysql
mv
mysql-
5.6
.
29
-linux-glibc2.
5
-x86_64/* /usr/local/mysql/cd /usr/local/mysql/
要注意,因为系统可能默认存在/etc/my.cnf
所以一般需要执行
cp
support-files/my-small.cnf /etc/my.cnf
覆盖原有的my.cnf,并且在里面[mysqld]下面添加basedir为我们要安装的mysql目录
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
接下来创建mysql用户和用户组:
groupadd mysqluseradd -r -g mysql -s /sbin/nologin -M mysql
修改当前目录权限为mysql权限:
chown
-R mysql:mysql .
执行安装:
./scripts/mysql_install_db --user=mysql
上一步安装失败,提示FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper的话,那么原因是缺少perl-module,那么执行命令:
yum
-y
install
perl
-Module-Install.noarch
安装perl-module模块,需要下载安装98个包,这个要耐心等待一会,等待perl-module安装成功之后,再继续执行上一步安装
然后建立mariadb的日志目录,否则下一步会报错,使用命令:
mkdir
/var/log/mysql
然后执行mysql安全启动脚本:
bin/mysqld_safe --user=mysql &
执行后,再按一下回车回到命令行,没报错则启动成功
最后将mysql添加到系统服务:
1、将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
chmod +x /etc/init.d/mysqld
3、添加服务
chkconfig --add mysqld
4、显示服务列表
chkconfig --list
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level
345
mysql on
service mysqld start #就可以启动mysql
ln -s /usr/local/mysql/
bin/mysql
/usr/local/sbin
mysql -uroot -p
进入mysql交互界面,如果这里出现mysql.sock错误的提示,继续编辑/etc/my.cnf文件,修改其中的socket属性为:/tmp/mysql.sock即可,或者注释默认即可,保存并退出;另一种方法推荐在/tmp下做软链接,将my.cnf配置文件中配置的socket位置链到提示错误的mysql.sock位置,命令是:
ln
-s /var/lib/mysql/mysql.sock /tmp/mysql.sock
;解决之后再次进入mysql交互界面就可以了
输入
quit
可以退出交互界面,mysql初始密码为空,可以使用mysqladmin为mysql服务器设置一个密码:
bin/mysqladmin -u root password
'Aa7410852'
mysql -uroot -p
回车后继续输入密码即可登录mysql
如果后续需要修改密码,因为mysql数据库密码是存放在mysql的一个数据库中的user表中,那么可以通过SQL语句实现,首先登录mysql数据库在mysql提示符中进行如下操作即可修改密码:
mysql> USE mysql;mysql> UPDATE user SET Password=PASSWORD(
'newpass'
) WHERE User =
'root'
;mysql> FLUSH PRIVILEGES;
通过以上3步即可修改为你想要的密码,并且下次立即生效,现在数据库在本地就可以正常使用了,
后来可以把mysql添加至环境变量中,便于直接输入mysql进入,不用加路径了,这个是可选的,根据自己的需要即可
现在还要注意一个问题,虽然通过命令行可以进入了,但是我们从其他主机编写的程序是无法连接到这台服务器的,在生产环境中这样肯定是不行的,所以我们要对所有主机开放授权,这样才可以正常访问,首先我们登录mysql,然后执行下面命令可以给所有主机开放root用户的授权:
mysql> GRANT ALL PRIVILEGES ON *.* TO
'root'
@
'%'
IDENTIFIED BY
'setpassword'
WITH GRANT OPTION;mysql> FLUSH PRIVILEGES;
第一行指令的%代表所有主机来源,setpassword可以设置和本地mysql不同的密码,当然一般情况下相同即可,执行完上面的指令后mysql就可以从外网立即连接了,到这里mysql基本的安装配置就完成了