一.nginx的编译。
1. 到官网 找到自己想要的nginx版本
wget http://nginx.org/download/nginx-1.7.8.tar.gz 然后解压 tar zxvf nginx-1.7.8.tar.gz cd到解压后的nginx, 编译nginx前需要下载pcre库和zlib库,编辑./configure --prefix=/usr/local/nginx 编译过程中可能会遇到重写模块会需要PCRE库
cd 到下载nginx的目录。wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.bz2 他是bz2结尾的 解压用 tar jxvf pcre-8.37.tar.bz2。(nginx编译中还会需要zlib这个库,我们可以直接用yum安装 yum install zlib)<这里用yum安装这个库,安装过程中,linux提示已经是安装了的。不能安装。我们用yum安装一些库或软件的时候,可能会遇到这个问题。还需要安装对应库的开发包
yum install zlib-devel(某个软件-devel)>
解压后重新编译nginx cd到解压后的nginx的目录里 ./configure --prefix=/usr/local/nginx/ \
--with-pcre=/usr/local/src/pcre-8.37(安装的时候带上pcre库的具体地址)
2.make && makeinstall 自动安装
3.cd nginx目录 ./sbin/nginx 启动nginx服务 (./sbin/nginx -s reload 重启nginx)访问服务器的ip查看nginx是否启动成功, (netstat -antlp |grep 80:查看当前80端口是谁在使用)
服务器中如果Apache nginx都有,Apache会把nginx所需要的80端口占用。可用 ps aux命令查看进程 然后pkill -9 httpd (这了的数字-9是无论如何都杀死进程)有时nginx服务开启失败也会有防火墙的原因
service iptables stop/start/restart
pkill 杀死某个正在运行的进程
配置conf,指向项目路径:
server {
listen 80;
server_name www.pmd.space;
#access_log logs/demo.phalconplus.access.log main;
index index.php index.html index.htm;
set $root_path ‘/data/think‘;
root $root_path;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1 last;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
}
location ~ /\.ht {
deny all;
}
}
新建一个conf文件写入以上内容,include进nginx.conf里面。修改各项配置。运行。
二.下载php
wget http://cn2.php.net/distributions/php-5.6.16.tar.gz (这里注意了,我们直接在php官网下载的链接可能是一个跳转脚本链接,在linux下会导致下载的php压缩包打不开)
编译php之前需要一系列的库文件,yum install libxml2 libxml2-devel bzip2 bzip2-devel gd gd-devel libpng libpng-devel ncurses ncurses-devel libcurl libcurl-devel libmcrypt libmcrypt-devel。
进入到php目录,
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt=/usr/local/lib/mcrypt \
--enable-mbstring --disable-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-mysql --with-mysqli \
--with-gd --with-jpeg-dir --with-openssl
(主要说明,安装目录在哪里,需要安装一些什么库) cd进入到安装好的php目录,把etc下的php-fpm.conf.default 复制一 修改php-fpm.conf,user=nobody,group=nobody。并把php.fpm.conf中的pid=run/php-fpm.conf前面的注释去掉,都修改为www-data,然后新建用户组www-data,用户www-data
cd 到php解压目录 cp php.ini-production /usr/local/php/lib。
cd进入到安装目录中的sbin目录,启动php服务
整合php和nginx,vim nginx/conf/nginx.conf 把匹配.php结尾的代码注释删除掉 ,把nginx收到访问php的地址改为自己php所在地址,更改php文件目录到对应的目录,可以在nginx下的html创建一个index.php 内容: 看是否能输出以及php.ini信息 确定配置是否生效。
三编译mysql
msyql5.5之后编译都需要用的到cmake,我们需要先安装, yum -y install cmake ncurses ncurses-devel。
然后下载mysql,下载mysql的时候,注意版本的选择,一些版本可能会没有Cmakelists.txt文件,会导致编译出错,链接:http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.46.tar.gz
然后输入命令进行编译,安装目录以及所需的一些配置文件:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/run/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_SSL=yes
没报错就 make && make install 。创建用户组和一个用户名 groupadd mysql,useradd mysql 。
然后改变安装目录下所有文件的用户及组为「mysql] chown -R mysql . chgrp -R mysql .
接着初始化数据库并设定安装目录:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql
然后将目录的所有文件的所属用户改为「root」,接着将目录「data」的所属用户改为「mysql」
chown root . chown -R mysql data
把mysql安装目录中的配置文件拷贝一份重命名 cp support-files/my-medium.cnf /etc/my.cnf
接着启动mysql守护进程:mysql bin/mysqld_safe --user=mysql &。这一步会在mysql目录下产生之前编译设定的run目录文件夹(这一步有可能会出错,我测试的时候[ERROR] /usr/local/mysql/bin/mysqld: Can‘t create/write to file ‘/var/run/mysqld/mysqld.pid‘ (Errcode: 2)是因为自己没创建目录导致找不到,新建一个文件之后,把文件归属用户设置为mysql
。如果产生了run目录,而里面没有mysql.sock文件,我们看看run目录的权限,更改为mysql用户mysql组。重新初始化数据库和开启mysql守护进程)
./bin/mysqladmin -u root password ‘123456‘为自己的root用户设置密码。 连接数据库:./bin/mysql -u root -p