您的位置:博客首页 >> Web服务器 >> CentOS 7 minimal编译安装VSFtpd+Nginx+MySQL+PHP

CentOS 7 minimal编译安装VSFtpd+Nginx+MySQL+PHP

日志编号:215 发表时间: 2017-03-08 20:37:36 关注次数:1723
更新啰。技术发展真快啊,PHP都发展到7了,甚至连vsftpd都更新版本了。这次记录CentOS 7 minimal编译安装VSFtpd+Nginx+MySQL+PHP,以对http://www.flashgou.com/show/25的更新,内容上讲以服务器应用为主,可以说,直接复制粘贴执行就可以了,而之前这文章是以授人以渔为主,但是好像大部分人都看不懂啊-_-!。

查看本文之前,需要你有基础的linux操作知识,比如:wq之类的你还是需要懂的。

一、系统安装
http://www.flashgou.com/show/8类似,本次为CentOS 7 minimal,可以从centos.org或http://mirrors.163.com下载。虚拟机:https://www.virtualbox.org(以下简称Vbox)。
如果安装时没有选择勾选自动连接网络,则可以通过手动设置打开:
ls /etc/sysconfig/network-scripts查看到网卡名,然后vi /etc/sysconfig/network-scripts/ifcfg-enp0s3(我的例子),输入(或配置):
ONBOOT=yes
 TYPE=Ethernet
 BOOTPROTO=dhcp

也可以通过nmcli connection show查看到网卡名,然后vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

U盘安装
VBoxManage internalcommands createrawvmdk -filename E:\usb.vmdk -rawdisk \\.\PhysicalDrive4

二、文件夹
本“系统”将采用ftp客户端(flashfxp或FileZilla)管理网站文件及日志、备份文件,因此创建如下目录:
mkdir /home/www
mkdir /home/www/logs
mkdir /home/www/webroot

三、安装VSFTPD
1、安装:yum -y install vsftpd  (本文发布时,vsftpd版本为3.0.2,而之前的文章才2.3.4)
2、设置用户和用户组:groupadd wwwroot
                     useradd -g wwwroot -M -d /home/www -s /sbin/nologin wwwftp
   设置用户密码:passwd wwwftp(也是ftp登录密码)
实际生产环境,还需要设置mysql用户组

3、配置:vi /etc/vsftpd/vsftpd.conf,将anonymous_enable=YES改为NO(不分大小写),并在其后加入:
user_config_dir=/etc/vsftpd
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
xferlog_file=/home/www/logs/vsftpd.log
ftpd_banner=welcome to shangbanla vsftpd.
max_clients=6
max_per_ip=5
use_localtime=YES
listen_port=7353
ftp_data_port=20
pasv_enable=YES
pasv_min_port=7352
pasv_max_port=7354
allow_writeable_chroot=YES
xferlog_std_format=yes


说明:
1)、listen_port为端口,默认为21,修改成7353(自定义)可逃避网络乱扫描。
2)、pasv_min_port和pasv_max_port为被动模式端口上下限,Vbox需要将所有端口映射,所以上下限(比如一个7000,一个8000)不能设置过大,否则累死,服务器上则没问题。
3)、allow_writeable_chroot=YES,vsftpd 2.3.5之后需要这句。
VBOX设置端口:
点击新开窗口查看图片

VBOX如果没设置端口,则会:
[15:31:37] [R] 数据套接字错误: 连接已拒绝
[15:31:38] [R] 列表 错误
[15:31:38] [R] 以 PASV 模式连接失败,正在尝试 PORT 模式。
[15:31:38] [R] 正在侦听端口: 13759,正在等待连接。
[15:31:38] [R] PORT 192,168,0,105,53,191
[15:31:38] [R] 500 Illegal PORT command.

4、vi /etc/vsftpd/chroot_list,新增wwwftp用户(按i键后直接输入wwwftp)
5、设置目录权限:
chown -R wwwftp.wwwroot /home/www/
chmod -R 755 /home/www

6、启动
service vsftpd start  #兼容旧命令
systemctl start vsftpd  #启动
systemctl restart vsftpd #重启
systemctl enable vsftpd #加入开机启动,centos 7把chkconfig和service合并为systemctl了,也就是取代了chkconfig vsftpd on
systemctl status vsftpd #查看是否启动的运行状态。

7、设置SELinux:setsebool -P allow_ftpd_full_access 1 (怀疑这条没用,就可以先把防火墙关了:systemctl stop firewalld)
附:查询SELinux开启情况命令:sestatus

8、防火墙
CentOS 7带的firewall比iptable强很多,具体看http://www.flashgou.com/show/209
firewall-cmd --permanent --add-port=7352-7354/tcp
firewall-cmd --reload


四、基础包
yum install gcc-c++ make ncurses-devel autoconf cmake crontabs openssl-devel python-devel
yum install wget libtool curl-devel

五、编译库文件(这些也可以通过yum安装,如果编译安装,则注意版本号和路径)

#libiconv库:libiconv-1.15.tar.gz   http://www.gnu.org/software/libiconv/#downloading
mv /home/www/libiconv-1.15.tar.gz /root/
tar xzvf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/lib/libiconv
make
make install

find / -name "libz.so"
rm -rf /usr/lib64/libz.so       #没这句编译不了 libpng。可以先不删除libz.so,待后面libpng出错后再来删除

#zlib:zlib-1.2.11.tar.gz    zlib-devel  http://www.zlib.net/
mv /home/www/zlib-1.2.11.tar.gz /root/
tar xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install


#libxml2:libxml2-2.9.4.tar.gz   ftp://xmlsoft.org/libxml2/
mv /home/www/libxml2-2.9.4.tar.gz /root/
tar xzvf libxml2-2.9.4.tar.gz
cd libxml2-2.9.4
./configure --prefix=/usr/local/lib/libxml2
make
make install

#pcre:pcre-8.42.tar.gz    http://www.pcre.org/ https://ftp.pcre.org/pub/pcre/
mv /home/www/pcre-8.42.tar.gz /root/
tar xzvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/lib/pcre
make
make install


#libmcrypt:libmcrypt-2.5.8.tar.gz
mv /home/www/libmcrypt-2.5.8.tar.gz /root/
tar xzvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure  #默认即安装到/usr/local/lib/
make && make install

cd libltdl  #这个不用安装
./configure --enable-ltdl-install
make
make install
cd ../../

#mhash:mhash-0.9.9.9.tar.gz
mv /home/www/mhash-0.9.9.9.tar.gz /root/
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install
 
#mcrypt  
mv /home/www/mcrypt-2.6.8.tar.gz /root/
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/lib ./configure  #//这句可以
make
make install

#libpng-1.6.29:http://libmng.com/pub/png/libpng.html
libpng-1.6.29.tar.gz
mv /home/www/libpng-1.6.29.tar.gz /root/
tar zxvf libpng-1.6.29.tar.gz
cd libpng-1.6.29
./configure
make
make install

#freetype-2.7.1:http://download.savannah.gnu.org/releases/freetype/
mv /home/www/freetype-2.7.1.tar.gz /root/
tar zxvf freetype-2.7.1.tar.gz
cd freetype-2.7.1
./configure --prefix=/usr/local/freetype/
make
make install

#jpeg:http://www.ijg.org/

mv /home/www/jpegsrc.v9b.tar.gz /root/
tar zxvf jpegsrc.v9b.tar.gz
cd jpeg-9b
./configure --enable-static --enable-shared --prefix=/usr/local/jpeg/
make
make install

#GD:https://libgd.github.io/

mv /home/www/libgd-2.2.4.tar.gz /root/
tar zxvf libgd-2.2.4.tar.gz
cd libgd-2.2.4
./configure\
 --with-jpeg=/usr/local/jpeg/\
 --with-png=/usr/local/\
 --with-zlib\
 --with-freetype=/usr/local/freetype/
make
make install

#以下这个ImageMagick的作用和GD类似,都是处理图片的。如果不需要,则不用安装。
mv /home/www/ImageMagick-7.0.5-4.tar.gz /root/
tar zxvf ImageMagick-7.0.5-4.tar.gz     #http://www.imagemagick.org/script/index.php
cd ImageMagick-7.0.5-4

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

cp /usr/local/freetype/lib/pkgconfig/freetype2.pc /usr/local/lib/pkgconfig  或 /usr/lib/pkgconfig #不加这句会不支持freetype,也就是with-freetype的值为no,如果是yum安装的freetype则不需要这句,当然,也不需要configure时link freetype,可见,yum安装一些库是多么方便啊。咱编译纯粹是蛋疼。

./configure CPPFLAGS="-I/usr/local/jpeg/include" LDFLAGS="-L/usr/local/jpeg/lib -L/usr/local/lib/" --prefix=/usr/local/ImageMagick 

 make
 make install
 cd ../

mv /home/www/imagick-3.4.3.tgz /root/ #让PHP支持ImageMagick
tar xvf imagick-3.4.3.tgz   http://pecl.php.net/package/imagick
cd imagick-3.4.3
/usr/local/php/bin/phpize
./configure \
  --with-imagick=/usr/local/ImageMagick\
  --with-php-config=/usr/local/php/bin/php-config

 make
 make install

php.ini最后加入:extension=imagick.so


六、编译MySQL
MySQL 5.7.21,硬件要求是越来越变态了。虚拟机,1G内存,8G硬盘,编译时提示内存不够……硬盘空间不够……
另,如果是阿里云,则需要先添加swap后再编译,否则会内存不够出错。

mv /home/www/mysql-5.7.21.tar.gz /root
tar zxvf mysql-5.7.21.tar.gz
cd mysql-5.7.21

cmake .\
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/\
 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock\
 -DMYSQL_DATADIR=/usr/local/mysql/data/\
 -DCOMMUNITY_BUILD=ON\
 -DFEATURE_SET=community\
 -DENABLED_PROFILING=ON\
 -DWITH_INNOBASE_STORAGE_ENGINE=1\
 -DWITH_EXAMPLE_STORAGE_ENGINE=0\
 -DWITH_FEDERATED_STORAGE_ENGINE=0\
 -DWITH_PARTITION_STORAGE_ENGINE=0\
 -DENABLED_LOCAL_INFILE=1\
 -DMYSQL_TCP_PORT=3306\
 -DWITH_EXTRA_CHARSETS=complex\
 -DWITH_SSL=bundled\
 -DWITH_EMBEDDED_SERVER=OFF\
 -DWITH_READLINE=OFF\
 -DMYSQL_USER=wwwftp\
 -DENABLE_DOWNLOADS=1\
 -DWITH_BOOST=/home/www/boost_1_59_0.tar.gz  #可以先自己下载这个文件后上传,以增加编译速度,否则此命令后,服务器会下载我呢间

下载地址:
#https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz/download
#http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

make
make install
至此,MySQL编译完成。

初始化数据库数据文件:
/usr/local/mysql/bin/mysqld --initialize --user=wwwftp #2选1。
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=wwwftp #2选1。

接着会出现一句话,类似:
2018-02-16T16:29:03.092648Z 1 [Note] A temporary password is generated for root@localhost: i-i6spu/6&+O
记下最后那串字符。

运行数据库:
/usr/local/mysql/bin/mysqld_safe --user=wwwftp >nul&

创建用户:
/usr/local/mysql/bin/mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123';   #更改设置root密码为abc123
mysql> DELETE FROM mysql.user WHERE User = '';    #删除空用户
mysql> FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'kuhanzhu'@'%' IDENTIFIED BY 'abc123';   #创建用户kuhanzhu并设置密码abc123,下同。下面这些SQL语句都供参考,需要时才用,并非必需
GRANT ALL PRIVILEGES ON *.* TO 'kuhanzhu'@'localhost' IDENTIFIED BY 'abc123';
GRANT ALL PRIVILEGES ON *.* TO 'kuhanzhu'@'127.0.0.1' IDENTIFIED BY 'abc123';
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "abc123";#创建用户root并设置密码abc123,下同。
GRANT ALL PRIVILEGES ON *.* TO root@127.0.0.1 IDENTIFIED BY "abc123";

UPDATE mysql.user SET Password = PASSWORD('abc123') WHERE User = 'root'; #更新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc123';
REVOKE ALL PRIVILEGES ON * . * FROM 'kuhanzhu'@'localhost';
GRANT ALL PRIVILEGES ON * . * TO 'kuhanzhu'@'localhost' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;


七、nginx编译


1、下载:wget http://nginx.org/download/nginx-1.13.11.tar.gz
mv /home/www/nginx-1.13.11.tar.gz /root/
tar zxvf nginx-1.13.11.tar.gz
cd nginx-1.13.11

./configure\
 --user=wwwftp\
 --group=wwwroot\
 --prefix=/usr/local/nginx\
 --conf-path=/usr/local/nginx.conf\
 --pid-path=/home/www/logs/nginx.pid\
 --error-log-path=/home/www/logs/nginx_error.log\
 --http-log-path=/home/www/logs/access.log\
 --with-http_stub_status_module\
 --with-http_gzip_static_module\
 --with-http_v2_module\
 --with-http_ssl_module\
 --with-pcre=/root/pcre-8.40\
 --with-zlib=/root/zlib-1.2.11


查询编译参数:/usr/local/nginx/sbin/nginx -V


待选参数:
--with-http_sub_module\监视状态
--with-http_ssl_module\ssl安全连接
--with-http_stub_status_module \监视状态
 
3、make && make install
4、配置
vi /usr/local/nginx.conf
参考本博客其他博文。

5、
测试:/usr/local/nginx/sbin/nginx -t
启动:/usr/local/nginx/sbin/nginx
停止:kill -quit `/usr/local/nginx/logs/nginx.pid` 如kill -quit 6449
重起:
kill -hup '/usr/local/nginx/logs/nginx.pid' 如kill -hup 21215
或/usr/local/nginx/sbin/nginx -s reload

强制停止所有进程:pkill -9 nginx

开机启动:vi /etc/rc.d/rc.local
/usr/local/nginx/sbin/nginx



最近比较忙,等把事情忙完再整理上来。 2017-04-03
以下内容将会以很乱的知识点形式展现:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
cp /usr/local/freetype/lib/pkgconfig/freetype2.pc /usr/local/lib/pkgconfig   
./configure CPPFLAGS="-I/usr/local/jpeg/include" LDFLAGS="-L/usr/local/jpeg/lib -L/usr/local/lib/" --prefix=/usr/local/ImageMagick  //用这句
make && make install
本站不提供讨论功能。
本站所有非新闻类文章均为原创,且禁止转载。
本站为了获得更多流量赚取广告费,难免会有以次充好的文章,望见谅,勿鄙视。