Centos7.3下搭建Apache2.4&&Mysql&&PHP&&部署Django

以下博文记录为2018年 部分内容或老旧 仅供参考
接下来是笔者根据自己经历整理的从零开始在CentOs7.3上搭建环境(实测在腾讯云 阿里云主机上无误)
我们所采用的是如下配置:

Apache2.4 + MySQL5.7+PHP7.1+phpMyAdmin4.8+python3.6(pip3) +MOD_WSGI4.5+Django2.x

Apache

1.安装apache2.4及其扩增包

yum install httpd httpd-dev

2.配置servername

vi /etc/httpd/conf/httpd.conf
修改这行: ServerName localhost:80 //重要哦

3.启动apache 并设置开机启动

systemctl start httpd
chkconfig httpd on

4.访问主机地址

看一下是否运行正确(出现Test123…欢迎页面说明正确了)

5.防目录泄露

我们通常不希望自己的网站目录轻易被访问者看到或被有心人爆出。而apache默认配置中,只要没有index,就会显示网站目录,这一点我们要做一定修改
需要将


Options Indexes FollowSymLinks
AllowOverride None
Require all granted
< /Directory>

修改为

Options FollowSymLinks
AllowOverride None
Require all granted

MYSQL

1.安装MySQL源
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
2.安装MySQL
yum install mysql-community-server
3.启动MySQL
systemctl start mysqld
4.获取密码
grep 'temporary password' /var/log/mysqld.log

你会得到这行 A temporary password is generated for root@localhost: Jqqskhz1Wr(?
冒号后面的就是密码

5.进入MySQL
mysql -uroot -p

输入你刚才获得的密码,你会进入mysql>

6.修改密码

星号为你输入的密码,不要丢了引号,密码建议大小写加数字加特殊字符,太简单的密码会被拒绝

ALTER USER 'root'@'localhost' IDENTIFIED BY '*************';
7.开放远程访问权限
use mysql;
update user set host = '%' where user = 'root';

百分号相当于*号,意为全部放行,也可改为IP地址则只允许此IP连接,也可以设置为192.168.%.%或者192.168.0.1/9代表允许一个ip段进行连接,也可以多加几条数据设置不同ip允许连接。

PHP及关联配置

1.进入 /usr/local文件夹
cd /usr/local
2.下载php7.1.2
wget am1.php.net/get/php-7.1.20.tar.gz/from/this/mirror
3.解压下载的安装包

tar -zxvf 包名
cd 进入解压后的文件夹

4.安装必要的依赖(很重要)
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
5.安装gcc(如果你希望之后的编译源码顺利进行的话)
yum install gcc
6.安装必要扩展
yum -y install libxslt-devel*
yum -y install perl*
yum -y install httpd-devel
7.安装状态测试

如果 find / -name apxs 得到的路径是:/usr/bin/apxs 那么安装很顺利

8.编译前的配置
./configure --prefix=/usr/local/php7 --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-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --with-apxs2=/usr/bin/apxs
9.编译并安装
make && sudo make install

编译出错请查看http://www.cnblogs.com/sweetXiaoma/p/5855732.html

10.添加环境变量
vi /etc/profile

在末尾加入

PATH=$PATH:/usr/local/php7/bin
export PATH

使改动生效

source /etc/profile

查看php版本

php -v
11.生成必要文件
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
12.必要配置

如果报错 请敲这行查报错信息 可以查到哪个文件第几行出错:

systemctl status httpd.service

(1)修改Apache默认欢迎页:

vim /etc/httpd/conf.d/welcome.conf

将/usr/share/httpd/noindex 修改为/var/www

(2)修改Apache配置:

vim /etc/httpd/conf/httpd.conf

修改DocumentRoot 为”/var/www/” (此文件中的另一处/var/www/html也改成/var/www)
这样我们就可以直接在/var/www下放置我们想要apache上跑起来的文件了

再找到
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在后面添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php7

(4)搜索 IfModule dir_module并在下面添加index.php (如下)

< IfModule dir_module>
DirectoryIndex index.html index.php

(5)搜索有没有下面这一行:

LoadModule php7_module modules/libphp7.so

如果没有 请手动添加 否则 会出现运行php文件却变成文件下载
(6)测试
在www目录下创建php_info页面

echo "">>index.php

浏览器里输入 主机地址/index.php
出现php7.1的配置信息说明一切就绪

安装phpMyadmin

1.下载软件包

进入/var/www
下载最新版的phpmyadmin (如选用其他版本,可前往phpmyadmin官网查看)

wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.tar.gz

解压

tar vzxf 包名

修改解压后得到的文件夹名为phpmyadmin (为之后访问方便)

mv 解压得到的文件夹/ phpmyadmin

进入文件夹

cd phpmyadmin
2.建立主配置文件
cp config.sample.inc.php config.inc.php
3.修改配置文件
vim config.inc.php
$cfg[‘blowfish_secret’] = ”; /* 自己在引号里面随便填 */ 
$cfg[‘Servers’][$i][‘host’] =‘127.0.0.1’  /*改成127.0.0.1*/
4.启动httpd+mysqld服务
service mysqld start
service httpd restart

浏览器输入主机地址/phpmyadmin 即可登录

安装python3.6及pip3

1.安装python3.6
yum install epel-release   #安装epel源
yum install python36 python36-devel
2.软链接

一般来说,在/usr/bin 会有python3.6 这时我们可以设一个软链接给他

ln -s /usr/bin/python3.6 python3 

这样我们一运行python3即可打开python3.6

3.安装3.6对应的pip3

(为防止后期pip安装时混乱,此处我们只安装pip3)

yum install python36-setuptools
easy_install-3.6 pip
4.安装检测
pip3

出现各种参数说明安装成功
如果你还想安装pip可参考https://blog.csdn.net/zuolovefu/article/details/78142612

5.模块安装

关于需要用到的各种python3模块(笔者的Django 项目会用到这些,大家根据自己的需求自行安装)

pip3 install django
pip3 install requests
pip3 install bs4
pip3 install lxml
yum install mysql-devel
pip3 install mysqlclient

安装并配置mod_wsgi

1.下载新版的wsgi
cd 进入根目录
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip

解压包并进入解压得到的文件夹

2.编译安装

这一步configure很重要(它会列出一堆,看apxs gcc python等是否关联正确 不出现no的都是能关联到的。会有一部分是no不管他)

./configure --with-python=/usr/bin/python3.6 
make && sudo make install
3.在apache中加载模块
vim /etc/httpd/conf/httpd.conf

在文件中加入

LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so

保存后重启阿帕奇

apachectl restart

关于在apache上配合mod_wsgi部署Django

1.runserver or check

建议先在主机上通过runserver 或者check测试下django框架是否已经正确搭建、关联好了数据库并且本机不缺少依赖

#开启8080端口 然后浏览器里 http://服务器公网ip:8080  把功能试一试
python3 manage.py runserver 0.0.0.0:8080
#或者check(但针对非语法错误不一定好使)
python3 manage.py check
2.赋权限

其次, 在工程文件夹外 将工程文件夹以及其子目录下文件赋予全用户读写权限

chmod -R 777
3.修改Django/wsgi.py

修改wsgi.py 文件内容如下

import os
from django.core.wsgi import get_wsgi_application
from os.path import join, dirname, abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0, PROJECT_DIR)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “first.settings”)
application = get_wsgi_application()
4.修改apache配置文件
vim /etc/httpd/conf/httpd.conf

在文件末尾加入如下

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com


Require all granted


然后保存退出,重启apache

我们来解释一下:
(1)第一行包含两部分 第一个地址表示apache从URL的哪开始是运行Django 第二地址是你Django 项目中wsgi.py的位置
(2)第二行是你所选择执行你Django程序的python解释器安装目录(如果安装wsgi时已正确指定则可省略)
(3)第三行是django项目的位置
(4) 余下部分照常

假如我现在的主机地址为119.23.33.217 开放端口是80
我的Django 项目名是first 项目所在目录是/etc/Django/First/first
并且安装wsgi时我已经指定了python3.6(因为我的Django用的是python3)
我希望在浏览器中输入 119.23.33.217/wepr/xxxxx 的时候可以触发我的Django框架
那么我的配置文件应该这样写

WSGIScriptAlias /wepr /etc/Django/First/first/first/wsgi.py
WSGIPythonPath /etc/Django/First/first


Require all granted


××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
关于WSGIScriptAlias中设置子目录的问题:
如果采用 WSGIScriptAlias / /etc/Django/First/first/first/wsgi.py
当你访问119.23.33.217时,就只能触发django,而之前配置的phpmyadmin都不能访问
为了合理分配服务器的区块,提高利用效率,建议专门给Django一个虚拟子目录作为“分区”
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

以上属于笔者经验 如果大家在安装中出现其它问题或者发现本文疏漏 欢迎大家在下面评论

本文内容是笔者入门服务器部署时的流水账记录,二次整理到CSDN时,没有再对原内容进行修改,难免会有一些偏差认识,搬到这里来其实怀旧记录的成分更多一点。2020年RHEL8都问世好久了,LNMP部署或用容器、或用更友好的管理面板(如宝塔Linux) 笔者之后如果再遇到类似的环境重部署时,会整理一篇新的内容(文笔肯定不会这么滞涩啦 ~hh)

2020,岁月可期!

你可能感兴趣的:(python,linux,mysql,centos,django)